2477 lines
90 KiB
XML
Executable File
2477 lines
90 KiB
XML
Executable File
USING "penthouse_arcade_cabinet_common.sch"
|
|
|
|
// ------------------------------ CONSTANTS ------------------------------
|
|
|
|
//~~~~~ Grid & Positioning ~~~~~
|
|
|
|
CONST_INT ciSCGW_MAX_GRID_POSITIONS_X 6
|
|
CONST_INT ciSCGW_MAX_GRID_POSITIONS_Y 4
|
|
|
|
CONST_INT ciSCGW_GRIDBS_LENGTH 4
|
|
|
|
CONST_FLOAT cfSCGW_GRID_POS_X_OFFSET 0.138020667
|
|
CONST_FLOAT cfSCGW_GRID_POS_X_INCR 0.1041665
|
|
CONST_FLOAT cfSCGW_GRID_POS_Y_OFFSET 0.06851837
|
|
CONST_FLOAT cfSCGW_GRID_POS_Y_INCR 0.1851855
|
|
|
|
CONST_FLOAT cfSCGW_GRID_SCALE_X 0.070833
|
|
CONST_FLOAT cfSCGW_GRID_SCALE_Y 0.125926
|
|
|
|
CONST_FLOAT cfSCGW_GRID_SPRITE_SCALE_X 0.104167
|
|
CONST_FLOAT cfSCGW_GRID_SPRITE_SCALE_Y 0.185185
|
|
|
|
CONST_INT ciSCGW_MAX_GRID_SPRITES 24
|
|
|
|
CONST_INT ciSCGW_MAX_PLAYER_POSITIONS_X 13
|
|
CONST_INT ciSCGW_MAX_PLAYER_POSITIONS_Y 9
|
|
|
|
CONST_INT ciSCGW_PLAYER_GRID_AXIS_X 0
|
|
CONST_INT ciSCGW_PLAYER_GRID_AXIS_Y 1
|
|
CONST_INT ciSCGW_PLAYER_GRID_AXIS_MAX 2
|
|
|
|
CONST_FLOAT cfSCGW_PLAYER_POS_X_OFFSET 0.138020667
|
|
CONST_FLOAT cfSCGW_PLAYER_POS_X_INCR 0.0520835
|
|
CONST_FLOAT cfSCGW_PLAYER_POS_Y_OFFSET 0.06851837
|
|
CONST_FLOAT cfSCGW_PLAYER_POS_Y_INCR 0.0925925
|
|
|
|
CONST_INT ciSCGW_CORNER_BOTTOM_LEFT 0
|
|
CONST_INT ciSCGW_CORNER_TOP_LEFT 1
|
|
CONST_INT ciSCGW_CORNER_TOP_RIGHT 2
|
|
CONST_INT ciSCGW_CORNER_BOTTOM_RIGHT 3
|
|
CONST_INT ciSCGW_MAX_CORNERS 4
|
|
|
|
CONST_INT ciSCGW_GRID_DIRECTION_UP 0
|
|
CONST_INT ciSCGW_GRID_DIRECTION_DOWN 1
|
|
CONST_INT ciSCGW_GRID_DIRECTION_LEFT 2
|
|
CONST_INT ciSCGW_GRID_DIRECTION_RIGHT 3
|
|
|
|
//~~~~~ Gangs & Ownership ~~~~~
|
|
|
|
CONST_INT ciSCGW_GANG_NONE -1
|
|
CONST_INT ciSCGW_GANG_GREEN 0
|
|
CONST_INT ciSCGW_GANG_PURPLE 1
|
|
CONST_INT ciSCGW_GANG_YELLOW 2
|
|
CONST_INT ciSCGW_GANG_BLUE 3
|
|
CONST_INT ciSCGW_GANG_MAX 4
|
|
|
|
CONST_INT ciSCGW_TERRITORY_ANIM_OUT 300
|
|
CONST_INT ciSCGW_TERRITORY_ANIM_IN 600
|
|
|
|
CONST_INT ciSCGW_OWNERSHIP_LINK_DOWN 0
|
|
CONST_INT ciSCGW_OWNERSHIP_LINK_RIGHT 1
|
|
CONST_INT ciSCGW_OWNERSHIP_LINK_MAX 2
|
|
|
|
CONST_FLOAT cfSCGW_GANG_SPRAY_SPRITE_SCALE_X 0.070833
|
|
CONST_FLOAT cfSCGW_GANG_SPRAY_SPRITE_SCALE_Y 0.125926
|
|
|
|
//~~~~~ Players ~~~~~
|
|
|
|
CONST_INT ciSCGW_MAX_PLAYERS 4
|
|
|
|
CONST_INT ciSCGW_PLAYER_GRID_SPEED 700
|
|
CONST_FLOAT cfSCGW_BASE_SPEED 1.0
|
|
CONST_FLOAT cfSCGW_BOOST_SPEED 0.75
|
|
|
|
CONST_INT ciSCGW_PLAYER_CHANGE_DIRECTION_TIME 100
|
|
|
|
CONST_INT ciSCGW_MAX_PLAYER_HEALTH 8
|
|
|
|
CONST_INT ciSCGW_DAMAGE_FLASH_TIME 1000
|
|
CONST_INT ciSCGW_RESPAWN_TIME 3500
|
|
CONST_INT ciSCGW_WASTED_TIME 2500
|
|
CONST_INT ciSCGW_RESPAWNING_TIME 1000
|
|
CONST_INT ciSCGW_RESPAWN_FIGHT_TIME 1000
|
|
CONST_INT ciSCGW_NO_RESPAWN_GRACE_PERIOD 1000
|
|
|
|
CONST_INT ciSCGW_PLAYER_WALK_FRAMES 12
|
|
|
|
CONST_FLOAT cfSCGW_PLAYER_SPRITE_SCALE_X 0.033333
|
|
CONST_FLOAT cfSCGW_PLAYER_SPRITE_SCALE_Y 0.059259
|
|
|
|
CONST_FLOAT cfSCGW_DEAD_PLAYER_SPRITE_SCALE_X 0.033333
|
|
CONST_FLOAT cfSCGW_DEAD_PLAYER_SPRITE_SCALE_Y 0.059259
|
|
|
|
CONST_FLOAT cfSCGW_TRAIL_SPRITE_SCALE_X 0.052083333
|
|
CONST_FLOAT cfSCGW_TRAIL_SPRITE_SCALE_Y 0.029629630
|
|
|
|
CONST_FLOAT cfSCGW_PLAYER_DAMAGE_FLASH_MOD 0.35
|
|
CONST_INT ciSCGW_PLAYER_DAMAGE_FLASH_AMOUNT 150
|
|
CONST_INT ciSCGW_PLAYER_DAMAGE_FLASH_MAX 255
|
|
|
|
CONST_FLOAT cfSCGW_MUZZLE_FLARE_PIXEL_OFFSET_X_SMALL 7.0
|
|
CONST_FLOAT cfSCGW_MUZZLE_FLARE_PIXEL_OFFSET_Y_SMALL -36.0
|
|
CONST_FLOAT cfSCGW_MUZZLE_FLARE_PIXEL_OFFSET_X_LARGE 5.0
|
|
CONST_FLOAT cfSCGW_MUZZLE_FLARE_PIXEL_OFFSET_Y_LARGE -40.0
|
|
|
|
CONST_FLOAT cfSCGW_MUZZLE_FLARE_SCALE_X 0.016666667
|
|
CONST_FLOAT cfSCGW_MUZZLE_FLARE_SCALE_Y 0.029629630
|
|
|
|
CONST_FLOAT cfSCGW_PLAYER_SPEED_OFFSET_X 0.002604167
|
|
CONST_FLOAT cfSCGW_PLAYER_SPEED_OFFSET_Y 0.004629630
|
|
|
|
CONST_INT ciSCGW_MUZZLE_FLARE_ANIM_FRAMES 3
|
|
|
|
CONST_INT ciSCGW_RESPAWNING_NO_CARS_X_SCORE 25
|
|
CONST_INT ciSCGW_RESPAWNING_NO_CARS_Y_SCORE 25
|
|
CONST_INT ciSCGW_RESPAWNING_NO_PLAYERS_X_SCORE 25
|
|
CONST_INT ciSCGW_RESPAWNING_NO_PLAYERS_Y_SCORE 25
|
|
CONST_INT ciSCGW_RESPAWNING_TOTAL_SCORE 100
|
|
|
|
//~~~~~ Rounds ~~~~~
|
|
|
|
CONST_INT ciSCGW_MAX_ROUNDS ciSCGW_MAX_PLAYERS + 1
|
|
|
|
CONST_INT ciSCGW_START_TIME_OFFSET 5000
|
|
CONST_INT ciSCGW_MATCH_LENGTH 120000
|
|
CONST_INT ciSCGW_ROUND_RESULT_TIME 5000
|
|
|
|
//~~~~~ Explosions ~~~~~
|
|
|
|
CONST_INT ciSCGW_MAX_EXPLOSIONS 6
|
|
|
|
CONST_FLOAT cfSCGW_EXPLOSION_SPRITE_SCALE_X 0.066667
|
|
CONST_FLOAT cfSCGW_EXPLOSION_SPRITE_SCALE_Y 0.118519
|
|
|
|
CONST_INT ciSCGW_EXPLOSION_FRAMES 9
|
|
|
|
//~~~~~ Input ~~~~~
|
|
|
|
CONST_INT ciSCGW_INPUT_NONE -1
|
|
CONST_INT ciSCGW_INPUT_MOVE_UP 0
|
|
CONST_INT ciSCGW_INPUT_MOVE_DOWN 1
|
|
CONST_INT ciSCGW_INPUT_MOVE_LEFT 2
|
|
CONST_INT ciSCGW_INPUT_MOVE_RIGHT 3
|
|
CONST_INT ciSCGW_INPUT_TURN_UP 4
|
|
CONST_INT ciSCGW_INPUT_TURN_DOWN 5
|
|
CONST_INT ciSCGW_INPUT_TURN_LEFT 6
|
|
CONST_INT ciSCGW_INPUT_TURN_RIGHT 7
|
|
CONST_INT ciSCGW_INPUT_SHOOT 8
|
|
|
|
CONST_INT ciSCGW_HOLD_TO_QUIT_TIME 1000
|
|
|
|
//~~~~~ Weapons & Projectiles ~~~~~
|
|
|
|
CONST_INT ciSCGW_MAX_PLAYER_SHOTS 2
|
|
|
|
CONST_INT ciSCGW_WEAPON_NONE 0
|
|
CONST_INT ciSCGW_WEAPON_PISTOL 1
|
|
CONST_INT ciSCGW_WEAPON_UZI 2
|
|
CONST_INT ciSCGW_WEAPON_AK47 3
|
|
CONST_INT ciSCGW_WEAPON_ROCKET 4
|
|
CONST_INT ciSCGW_WEAPON_SHOTGUN 5
|
|
CONST_INT ciSCGW_WEAPON_MAX 6
|
|
|
|
CONST_INT ciSCGW_PISTOL_SHOT_TIME_PER_GRID 300
|
|
CONST_INT ciSCGW_PISTOL_SHOT_GRID_RANGE 2
|
|
CONST_INT ciSCGW_PISTOL_SHOT_INTERVAL 700
|
|
CONST_INT ciSCGW_PISTOL_SHOT_DAMAGE 2
|
|
|
|
CONST_INT ciSCGW_UZI_SHOT_TIME_PER_GRID 300
|
|
CONST_INT ciSCGW_UZI_SHOT_GRID_RANGE 1
|
|
CONST_INT ciSCGW_UZI_SHOT_INTERVAL 325
|
|
CONST_INT ciSCGW_UZI_SHOT_DAMAGE 1
|
|
|
|
CONST_INT ciSCGW_AK47_SHOT_TIME_PER_GRID 200
|
|
CONST_INT ciSCGW_AK47_SHOT_GRID_RANGE 3
|
|
CONST_INT ciSCGW_AK47_SHOT_INTERVAL 650
|
|
CONST_INT ciSCGW_AK47_SHOT_DAMAGE 2
|
|
|
|
CONST_INT ciSCGW_ROCKET_SHOT_TIME_PER_GRID 525
|
|
CONST_INT ciSCGW_ROCKET_SHOT_GRID_RANGE 5
|
|
CONST_INT ciSCGW_ROCKET_SHOT_INTERVAL 2000
|
|
CONST_INT ciSCGW_ROCKET_SHOT_DAMAGE 8
|
|
|
|
CONST_INT ciSCGW_SHOTGUN_SHOT_TIME_PER_GRID 300
|
|
CONST_INT ciSCGW_SHOTGUN_SHOT_GRID_RANGE 2
|
|
CONST_INT ciSCGW_SHOTGUN_SHOT_INTERVAL 1000
|
|
CONST_INT ciSCGW_SHOTGUN_SHOT_DAMAGE 4
|
|
|
|
CONST_FLOAT cfSCGW_BULLET_SPRITE_SCALE_X 0.004166667
|
|
CONST_FLOAT cfSCGW_BULLET_SPRITE_SCALE_Y 0.011111111
|
|
|
|
CONST_FLOAT cfSCGW_ROCKET_SPRITE_SCALE_X 0.004166667
|
|
CONST_FLOAT cfSCGW_ROCKET_SPRITE_SCALE_Y 0.033333333
|
|
|
|
CONST_INT ciSCGW_ROCKET_SPRITE_FRAMES 3
|
|
|
|
//~~~~~ Pickups ~~~~~
|
|
|
|
CONST_INT ciSCGW_MAX_SPAWNED_PICKUPS 7
|
|
CONST_INT ciSCGW_PICKUP_DURATION 17500
|
|
CONST_INT ciSCGW_PICKUP_SPAWN_INTERVAL 20000
|
|
CONST_INT ciSCGW_PICKUP_COLLECTION_TIME 1250
|
|
|
|
CONST_INT ciSCGW_PICKUPS_NONE -1
|
|
CONST_INT ciSCGW_PICKUPS_HEALTH 0
|
|
CONST_INT ciSCGW_PICKUPS_SPEED 1
|
|
CONST_INT ciSCGW_PICKUPS_GANG_CARS 2
|
|
CONST_INT ciSCGW_PICKUPS_PISTOL 3
|
|
CONST_INT ciSCGW_PICKUPS_UZI 4
|
|
CONST_INT ciSCGW_PICKUPS_AK47 5
|
|
CONST_INT ciSCGW_PICKUPS_ROCKET 6
|
|
CONST_INT ciSCGW_PICKUPS_SHOTGUN 7
|
|
CONST_INT ciSCGW_PICKUPS_MAX 8
|
|
|
|
CONST_INT ciSCGW_HEALTH_PICKUP_VALUE 4
|
|
CONST_INT ciSCGW_SPEED_PICKUP_VALUE 10
|
|
|
|
CONST_FLOAT cfSCGW_PICKUP_SPRITE_SCALE_X 0.033333
|
|
CONST_FLOAT cfSCGW_PICKUP_SPRITE_SCALE_Y 0.059259
|
|
|
|
CONST_FLOAT cfSCGW_PICKUP_SCALE_SIN_MOD 0.2
|
|
CONST_FLOAT cfSCGW_PICKUP_SCALE_MOD 0.15
|
|
|
|
CONST_INT ciSCGW_MAX_SUDDEN_DEATH_PICKUP_GROUPS 5
|
|
CONST_INT ciSCGW_MAX_STARTING_PICKUP_GROUPS 3
|
|
CONST_INT ciSCGW_MAX_MID_GAME_PICKUP_GROUPS 5
|
|
CONST_INT ciSCGW_MAX_LATE_GAME_PICKUP_GROUPS 5
|
|
|
|
CONST_INT ciSCGW_MAX_SUDDEN_DEATH_CENTER_PICKUPS 4
|
|
|
|
CONST_INT ciSCGW_PICKUP_POSITION_0_0 28
|
|
CONST_INT ciSCGW_PICKUP_POSITION_1_0 30
|
|
CONST_INT ciSCGW_PICKUP_POSITION_2_0 32
|
|
CONST_INT ciSCGW_PICKUP_POSITION_3_0 34
|
|
CONST_INT ciSCGW_PICKUP_POSITION_4_0 36
|
|
CONST_INT ciSCGW_PICKUP_POSITION_0_1 54
|
|
CONST_INT ciSCGW_PICKUP_POSITION_1_1 56
|
|
CONST_INT ciSCGW_PICKUP_POSITION_2_1 58
|
|
CONST_INT ciSCGW_PICKUP_POSITION_3_1 60
|
|
CONST_INT ciSCGW_PICKUP_POSITION_4_1 62
|
|
CONST_INT ciSCGW_PICKUP_POSITION_0_2 80
|
|
CONST_INT ciSCGW_PICKUP_POSITION_1_2 82
|
|
CONST_INT ciSCGW_PICKUP_POSITION_2_2 84
|
|
CONST_INT ciSCGW_PICKUP_POSITION_3_2 86
|
|
CONST_INT ciSCGW_PICKUP_POSITION_4_2 88
|
|
|
|
//~~~~~ Vehicles ~~~~~
|
|
|
|
CONST_INT ciSCGW_MAX_ACTIVE_VEHICLES 3
|
|
CONST_INT ciSCGW_MAX_GANG_BACKUP_VEHICLES 2
|
|
|
|
CONST_INT ciSCGW_MAX_VEHICLE_TYPES 9
|
|
CONST_INT ciSCGW_AMBIENT_VEHICLE_TYPES 5
|
|
|
|
CONST_INT ciSCGW_VEHICLE_INTERVAL 15000
|
|
CONST_INT ciSCGW_VEHICLE_DELAY 1000
|
|
CONST_INT ciSCGW_VEHICLE_GRID_SPEED 650
|
|
CONST_INT ciSCGW_VEHICLE_DAMAGE ciSCGW_MAX_PLAYER_HEALTH
|
|
|
|
CONST_INT ciSCGW_VEHICLE_TYPE_ICE_CREAM 0
|
|
CONST_INT ciSCGW_VEHICLE_TYPE_AMBULANCE 1
|
|
CONST_INT ciSCGW_VEHICLE_TYPE_POLICE 2
|
|
CONST_INT ciSCGW_VEHICLE_TYPE_FIRE 3
|
|
CONST_INT ciSCGW_VEHICLE_TYPE_TANK 4
|
|
CONST_INT ciSCGW_VEHICLE_TYPE_GANG_0 5
|
|
CONST_INT ciSCGW_VEHICLE_TYPE_GANG_1 6
|
|
CONST_INT ciSCGW_VEHICLE_TYPE_GANG_2 7
|
|
CONST_INT ciSCGW_VEHICLE_TYPE_GANG_3 8
|
|
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_SCALE_X 0.020833333
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_SCALE_Y 0.018518519
|
|
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_TOP_Y_OFFSET -0.011
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_BOTTOM_Y_OFFSET 0.023
|
|
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_LEFT_0_X_OFFSET -0.011
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_LEFT_2_X_OFFSET -0.02275
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_LEFT_4_X_OFFSET -0.02375
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_LEFT_6_X_OFFSET -0.01975
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_LEFT_8_X_OFFSET -0.006
|
|
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_RIGHT_0_X_OFFSET 0.00975
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_RIGHT_2_X_OFFSET 0.02275
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_RIGHT_4_X_OFFSET 0.02275
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_RIGHT_6_X_OFFSET 0.018
|
|
CONST_FLOAT cfSCGW_VEHICLE_ALERT_RIGHT_8_X_OFFSET 0.004
|
|
|
|
//~~~~~ Local Bitset ~~~~~
|
|
|
|
CONST_INT ciSCGW_LOCALBS_CURRENT_MOVE_PROCESSED_HALF 0
|
|
CONST_INT ciSCGW_LOCALBS_CURRENT_MOVE_PROCESSED 1
|
|
CONST_INT ciSCGW_LOCALBS_DIED_THIS_ROUND 2
|
|
CONST_INT ciSCGW_LOCALBS_TITLE_MUSIC_STARTED 3
|
|
CONST_INT ciSCGW_LOCALBS_CURRENT_MOVE_DIRECTION_CHANGED 4
|
|
CONST_INT ciSCGW_LOCALBS_FIRST_MOVE_DONE 5
|
|
CONST_INT ciSCGW_LOCALBS_STARTED_RESPAWNING 6
|
|
|
|
//~~~~~ Vibration ~~~~~
|
|
|
|
CONST_INT ciSCGW_VIB_SHOOT_DURATION 50
|
|
CONST_INT ciSCGW_VIB_SHOOT_FREQ 100
|
|
|
|
CONST_INT ciSCGW_VIB_CAR_HIT_DURATION 1000
|
|
CONST_INT ciSCGW_VIB_CAR_HIT_FREQ 200
|
|
|
|
CONST_INT ciSCGW_VIB_HIT_DURATION 250
|
|
CONST_INT ciSCGW_VIB_HIT_FREQ 200
|
|
|
|
CONST_INT ciSCGW_VIB_PICKUP_DURATION 100
|
|
CONST_INT ciSCGW_VIB_PICKUP_FREQ 50
|
|
|
|
CONST_INT ciSCGW_VIB_EXPLODE_DURATION 1000
|
|
CONST_INT ciSCGW_VIB_EXPLODE_FREQ 100
|
|
|
|
//~~~~~ HUD & UI ~~~~~
|
|
|
|
CONST_FLOAT cfSCGW_PLAY_AREA_WIDTH 0.658333
|
|
CONST_FLOAT cfSCGW_FACADE_WIDTH 0.156250000
|
|
CONST_FLOAT cfSCGW_FACADE_HEIGHT 0.930555556
|
|
CONST_FLOAT cfSCGW_FACADE_POS_X 0.085417
|
|
CONST_FLOAT cfSCGW_FACADE_POS_Y 0.5
|
|
CONST_FLOAT cfSCGW_FACADE_TOP_HEIGHT 0.069444444
|
|
|
|
CONST_FLOAT cfSCGW_TITLE_TEXT_SCALE 1.0
|
|
CONST_FLOAT cfSCGW_TITLE_TEXT_POSITION_Y 0.05
|
|
|
|
CONST_FLOAT cfSCGW_TOP_TEXT_SCALE 1.0
|
|
TWEAK_FLOAT cfSCGW_TOP_TEXT_Y_POS 0.083
|
|
TWEAK_FLOAT cfSCGW_TOP_SCORE_OFFSET 0.105
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_OFFSET_Y 0.069444
|
|
|
|
CONST_FLOAT cfSCGW_EXTRA_ROUND_COUNT_PADDING 0.004629630
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_BACKGROUND_OFFSET_Y 0.0356482
|
|
CONST_FLOAT cfSCGW_TOP_HUD_BACKGROUND_SCALE_X 0.658333
|
|
CONST_FLOAT cfSCGW_TOP_HUD_BACKGROUND_SCALE_Y 0.071296
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_DIVIDER_OFFSET_Y 0.072685
|
|
CONST_FLOAT cfSCGW_TOP_HUD_DIVIDER_SCALE_X 0.658333
|
|
CONST_FLOAT cfSCGW_TOP_HUD_DIVIDER_SCALE_Y 0.002778
|
|
|
|
CONST_INT ciSCGW_MAX_HEALTH_BARS 8
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_GANG_0_OFFSET_X 0.195313
|
|
CONST_FLOAT cfSCGW_TOP_HUD_GANG_1_OFFSET_X 0.325521
|
|
CONST_FLOAT cfSCGW_TOP_HUD_GANG_2_OFFSET_X 0.547396
|
|
CONST_FLOAT cfSCGW_TOP_HUD_GANG_3_OFFSET_X 0.677604
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_FRAME_Y_OFFSET 0.041666833
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_FRAME_SCALE_X 0.127083
|
|
CONST_FLOAT cfSCGW_TOP_HUD_FRAME_SCALE_Y 0.059259
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_PORTRAIT_Y_OFFSET 0.041666833
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_PORTRAIT_SCALE_X 0.033333
|
|
CONST_FLOAT cfSCGW_TOP_HUD_PORTRAIT_SCALE_Y 0.059259
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_MIC_X_OFFSET 0.026563
|
|
CONST_FLOAT cfSCGW_TOP_HUD_MIC_Y_OFFSET 0.047222333
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_MIC_SCALE_X 0.008333
|
|
CONST_FLOAT cfSCGW_TOP_HUD_MIC_SCALE_Y 0.014815
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_HEALTH_X_OFFSET 0.035417
|
|
CONST_FLOAT cfSCGW_TOP_HUD_HEALTH_Y_OFFSET 0.012037333
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_HEALTH_SCALE_X 0.006250
|
|
CONST_FLOAT cfSCGW_TOP_HUD_HEALTH_SCALE_Y 0.059259
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_ROUNDS_OFFSET_X -0.013541334
|
|
TWEAK_FLOAT cfSCGW_TOP_HUD_ROUNDS_OFFSET_Y -0.00162963
|
|
|
|
CONST_FLOAT cfSCGW_TOP_HUD_ROUNDS_SCALE_X 0.013541333
|
|
CONST_FLOAT cfSCGW_TOP_HUD_ROUNDS_SCALE_Y 0.024074259
|
|
|
|
CONST_INT ciSCGW_COUNTDOWN_BAIL_TIME -1500
|
|
CONST_INT ciSCGW_COUNTDOWN_GO_TIME 0
|
|
CONST_INT ciSCGW_COUNTDOWN_1_TIME 1000
|
|
CONST_INT ciSCGW_COUNTDOWN_2_TIME 2000
|
|
CONST_INT ciSCGW_COUNTDOWN_3_TIME 3000
|
|
CONST_INT ciSCGW_COUNTDOWN_ROUND_TIME 4500
|
|
|
|
CONST_INT ciSCGW_ALLOW_TERRITORY_HELP_TIME 3000
|
|
|
|
CONST_FLOAT cfSCGW_COUNTDOWN_SPRITE_SCALE_X 0.066666667
|
|
CONST_FLOAT cfSCGW_COUNTDOWN_SPRITE_SCALE_Y 0.148148148
|
|
|
|
CONST_FLOAT cfSCGW_FIGHT_SPRITE_SCALE_X 0.266666667
|
|
CONST_FLOAT cfSCGW_FIGHT_SPRITE_SCALE_Y 0.148148148
|
|
|
|
CONST_FLOAT cfSCGW_ROUND_SPRITE_SCALE_X 0.312500000
|
|
CONST_FLOAT cfSCGW_ROUND_SPRITE_SCALE_Y 0.148148148
|
|
|
|
CONST_FLOAT cfSCGW_ROUND_WINNER_SPRITE_SCALE_X 0.312500000
|
|
CONST_FLOAT cfSCGW_ROUND_WINNER_SPRITE_SCALE_Y 0.240740741
|
|
|
|
CONST_FLOAT cfSCGW_WASTED_SPRITE_SCALE_X 0.312500000
|
|
CONST_FLOAT cfSCGW_WASTED_SPRITE_SCALE_Y 0.148148148
|
|
|
|
CONST_FLOAT cfSCGW_READY_SPRITE_SCALE_X 0.312500000
|
|
CONST_FLOAT cfSCGW_READY_SPRITE_SCALE_Y 0.148148148
|
|
|
|
TWEAK_FLOAT cfSCGW_CENTER_TEXT_OFFSET_Y -0.005
|
|
TWEAK_FLOAT cfSCGW_ROUND_WINNER_TEXT_OFFSET_Y -0.016
|
|
|
|
CONST_INT ciSCGW_COUNTDOWN_ALPHA 153
|
|
CONST_INT ciSCGW_WASTED_ALPHA 102
|
|
CONST_INT ciSCGW_WIN_ALPHA 102
|
|
|
|
CONST_INT ciSCGW_GANG_READY_JUST_JOINED_TIME 1000
|
|
CONST_INT ciSCGW_GANG_READY_JUST_JOINED_ALPHA 125
|
|
|
|
CONST_INT ciSCGW_GANG_ALL_READY_DELAY 1500
|
|
|
|
CONST_FLOAT cfSCGW_GANG_READY_SCALE_X 0.162500000
|
|
CONST_FLOAT cfSCGW_GANG_READY_SCALE_Y 0.777777778
|
|
|
|
CONST_FLOAT cfSCGW_GANG_READY_RECT_OFFSET 0.050000000
|
|
|
|
CONST_FLOAT cfSCGW_GANG_READY_ARROW_POS_Y 0.143518518
|
|
CONST_FLOAT cfSCGW_GANG_READY_ARROW_SCALE_X 0.162500000
|
|
CONST_FLOAT cfSCGW_GANG_READY_ARROW_SCALE_Y 0.051851852
|
|
CONST_FLOAT cfSCGW_GANG_READY_ARROW_FLASH_MOD 0.25
|
|
|
|
TWEAK_FLOAT cfSCGW_GANG_READY_TEXT_POS_Y 0.23
|
|
TWEAK_FLOAT cfSCGW_GANG_READY_TEXT_SCALE 0.95
|
|
|
|
TWEAK_FLOAT cfSCGW_GANG_PRESS_START_TEXT_POS_Y 0.885
|
|
TWEAK_FLOAT cfSCGW_GANG_PRESS_START_TEXT_SCALE 0.65
|
|
|
|
TWEAK_FLOAT cfSCGW_GANG_PLAYER_NAME_TEXT_POS_Y 0.845
|
|
TWEAK_FLOAT cfSCGW_GANG_PLAYER_NAME_TEXT_SCALE 0.5
|
|
|
|
CONST_FLOAT cfSCGW_GANG_READY_POS_X_0 0.255208334
|
|
CONST_FLOAT cfSCGW_GANG_READY_POS_Y_0 0.456481481
|
|
|
|
CONST_FLOAT cfSCGW_GANG_READY_POS_X_1 0.418229167
|
|
CONST_FLOAT cfSCGW_GANG_READY_POS_Y_1 0.456481481
|
|
|
|
CONST_FLOAT cfSCGW_GANG_READY_POS_X_2 0.581770833
|
|
CONST_FLOAT cfSCGW_GANG_READY_POS_Y_2 0.456481481
|
|
|
|
CONST_FLOAT cfSCGW_GANG_READY_POS_X_3 0.744791666
|
|
CONST_FLOAT cfSCGW_GANG_READY_POS_Y_3 0.456481481
|
|
|
|
CONST_FLOAT cfSCGW_GAME_WINNER_TEXT_SCALE_X 0.312500000
|
|
CONST_FLOAT cfSCGW_GAME_WINNER_TEXT_SCALE_Y 0.148148148
|
|
CONST_FLOAT cfSCGW_GAME_WINNER_TEXT_START_OFFSET_Y -0.050000000
|
|
CONST_INT ciSCGW_GAME_WINNER_TEXT_FRAMES 4
|
|
CONST_FLOAT cfSCGW_GAME_WINNER_BLUR_SCALE_X 0.312500000
|
|
CONST_FLOAT cfSCGW_GAME_WINNER_BLUR_SCALE_Y 0.148148148
|
|
CONST_INT ciSCGW_GAME_WINNER_BLUR_FRAMES 8
|
|
CONST_FLOAT cfSCGW_GAME_WINNER_GRAFF_SCALE_X 0.312500000
|
|
CONST_FLOAT cfSCGW_GAME_WINNER_GRAFF_SCALE_Y 0.148148148
|
|
CONST_FLOAT cfSCGW_GAME_WINNER_GRAFF_OFFSET_Y 0.074074074
|
|
CONST_INT ciSCGW_GAME_WINNER_GRAFF_FRAMES 10
|
|
|
|
CONST_FLOAT cfSCGW_SUDDEN_TEXT_SCALE_X 0.266666667
|
|
CONST_FLOAT cfSCGW_SUDDEN_TEXT_SCALE_Y 0.148148148
|
|
CONST_FLOAT cfSCGW_DEATH_TEXT_SCALE_X 0.266666667
|
|
CONST_FLOAT cfSCGW_DEATH_TEXT_SCALE_Y 0.114814815
|
|
CONST_FLOAT cfSCGW_DEATH_TEXT_OFFSET_Y 0.074074074
|
|
CONST_INT ciSCGW_SUDDEN_DEATH_TEXT_TIME 2250
|
|
|
|
CONST_FLOAT cfSCGW_TIMER_SIN_MOD 0.5058
|
|
|
|
TWEAK_FLOAT cfSCGW_DROP_SHADOW_OFFSET_X 0.001041667
|
|
TWEAK_FLOAT cfSCGW_DROP_SHADOW_OFFSET_Y 0.003703704
|
|
|
|
CONST_INT ciSCGW_READY_SPAM_DELAY 500
|
|
|
|
//~~~~~ Leaderboard ~~~~~
|
|
|
|
TWEAK_FLOAT cfSCGW_LBD_ENTRY_POSITION_POS_Y 0.205
|
|
TWEAK_FLOAT cfSCGW_LBD_ENTRY_POSITION_TEXT_SCALE 1.100
|
|
TWEAK_FLOAT cfSCGW_LBD_ENTRY_SCORE_POS_Y 0.260
|
|
TWEAK_FLOAT cfSCGW_LBD_ENTRY_SCORE_TEXT_SCALE 0.75
|
|
TWEAK_FLOAT cfSCGW_LBD_ENTRY_INITIALS_POS_Y 0.875
|
|
TWEAK_FLOAT cfSCGW_LBD_ENTRY_INITIALS_SPACING 0.025
|
|
TWEAK_FLOAT cfSCGW_LBD_ENTRY_INITIALS_TEXT_SCALE 0.95
|
|
|
|
TWEAK_FLOAT cfSCGW_LBD_TITLE_POS_Y 0.15
|
|
TWEAK_FLOAT cfSCGW_LBD_STARTING_POS_Y 0.220
|
|
TWEAK_FLOAT cfSCGW_LBD_POSITION_POS_X 0.370
|
|
TWEAK_FLOAT cfSCGW_LBD_INITIAL_3_POS_X 0.46875
|
|
TWEAK_FLOAT cfSCGW_LBD_INITIAL_2_POS_X 0.441145833
|
|
TWEAK_FLOAT cfSCGW_LBD_INITIAL_1_POS_X 0.413541666
|
|
TWEAK_FLOAT cfSCGW_LBD_SCORE_POS_X 0.695
|
|
TWEAK_FLOAT cfSCGW_LBD_TEXT_SCALE 1.0
|
|
TWEAK_FLOAT cfSCGW_LBD_SPACING_Y 0.06
|
|
|
|
CONST_FLOAT cfSCGW_LBD_BG_SCALE_X 0.660416667
|
|
CONST_FLOAT cfSCGW_LBD_BG_SCALE_Y 0.948148148
|
|
|
|
CONST_INT ciSCGW_LBD_DEFAULT_RANK 99
|
|
|
|
CONST_INT ciSCGW_RESEND_LEADERBOARD_REQUEST_TIME 5000
|
|
|
|
//~~~~~ Help Text ~~~~~
|
|
|
|
CONST_INT ciSCGW_HELP_BS_SHOWING_HELP_TEXT 0
|
|
CONST_INT ciSCGW_HELP_BS_MOVEMENT_HELP_SHOWN 1
|
|
CONST_INT ciSCGW_HELP_BS_SHOOTING_HELP_SHOWN 2
|
|
CONST_INT ciSCGW_HELP_BS_RESPAWN_HELP_SHOWN 3
|
|
|
|
CONST_INT ciSCGW_DEFAULT_HELP_TEXT_TIME 7500
|
|
|
|
//~~~~~ Animation ~~~~~
|
|
|
|
CONST_FLOAT cfSCGW_ANIM_FRAME_TIME 66.0
|
|
|
|
//~~~~~ Collision ~~~~~
|
|
|
|
CONST_FLOAT cfSCGW_COLLISION_OFFSET_X 0.008333333
|
|
CONST_FLOAT cfSCGW_COLLISION_OFFSET_Y 0.014814815
|
|
|
|
//~~~~~ Audio ~~~~~
|
|
|
|
//Bits for iAudioBS
|
|
CONST_INT ciSCGW_AUDIOBS_ROUND_DOOF_PLAYED 0
|
|
CONST_INT ciSCGW_AUDIOBS_3_DOOF_PLAYED 1
|
|
CONST_INT ciSCGW_AUDIOBS_2_DOOF_PLAYED 2
|
|
CONST_INT ciSCGW_AUDIOBS_1_DOOF_PLAYED 3
|
|
CONST_INT ciSCGW_AUDIOBS_FIGHT_DOOF_PLAYED 4
|
|
CONST_INT ciSCGW_AUDIOBS_COUNTDOWN_SOUND_PLAYED 5
|
|
CONST_INT ciSCGW_AUDIOBS_READY_SOUND_PLAYED 6
|
|
CONST_INT ciSCGW_AUDIOBS_WASTED_SOUND_PLAYED 7
|
|
CONST_INT ciSCGW_AUDIOBS_RESPAWN_FIGHT_SOUND_PLAYED 8
|
|
|
|
//~~~~~ Flyover Sprites ~~~~~
|
|
|
|
CONST_INT ciSCGW_FLYOVER_INTERVAL 22500
|
|
|
|
CONST_INT ciSCGW_FLYOVER_TYPE_BIRDS 0
|
|
CONST_INT ciSCGW_FLYOVER_TYPE_PLANE 1
|
|
CONST_INT ciSCGW_FLYOVER_TYPE_HELI 2
|
|
CONST_INT ciSCGW_FLYOVER_TYPE_MAX 3
|
|
|
|
CONST_FLOAT cfSCGW_FLYOVER_BIRDS_SPRITE_SCALE_X 0.033333333
|
|
CONST_FLOAT cfSCGW_FLYOVER_BIRDS_SPRITE_SCALE_Y 0.059259259
|
|
CONST_FLOAT cfSCGW_FLYOVER_BIRDS_SPRITE_SPEED_X -0.062500000
|
|
CONST_FLOAT cfSCGW_FLYOVER_BIRDS_SPRITE_SPEED_Y -0.111111111
|
|
|
|
CONST_FLOAT cfSCGW_FLYOVER_PLANE_SPRITE_SCALE_X 0.114583333
|
|
CONST_FLOAT cfSCGW_FLYOVER_PLANE_SPRITE_SCALE_Y 0.203703704
|
|
CONST_FLOAT cfSCGW_FLYOVER_PLANE_SPRITE_SPEED_X -0.062500000
|
|
CONST_FLOAT cfSCGW_FLYOVER_PLANE_SPRITE_SPEED_Y -0.111111111
|
|
|
|
CONST_FLOAT cfSCGW_FLYOVER_HELI_SPRITE_SCALE_X 0.114583333
|
|
CONST_FLOAT cfSCGW_FLYOVER_HELI_SPRITE_SCALE_Y 0.203703704
|
|
CONST_FLOAT cfSCGW_FLYOVER_HELI_SPRITE_SPEED_X 0.078125000
|
|
CONST_FLOAT cfSCGW_FLYOVER_HELI_SPRITE_SPEED_Y -0.138888889
|
|
|
|
//~~~~~ Damage Border ~~~~~
|
|
|
|
CONST_INT ciSCGW_DAMAGE_BORDER_V_SPRITES 4
|
|
CONST_INT ciSCGW_DAMAGE_BORDER_H_SPRITES 7
|
|
|
|
CONST_FLOAT cfSCGW_DAMAGE_BORDER_V_SPRITE_SCALE_X 0.033333333
|
|
CONST_FLOAT cfSCGW_DAMAGE_BORDER_V_SPRITE_SCALE_Y 0.237037037
|
|
|
|
CONST_FLOAT cfSCGW_DAMAGE_BORDER_H_SPRITE_SCALE_X 0.133333333
|
|
CONST_FLOAT cfSCGW_DAMAGE_BORDER_H_SPRITE_SCALE_Y 0.059259259
|
|
|
|
TWEAK_FLOAT cfSCGW_DAMAGE_BORDER_TOP_OFFSET_Y 0.154
|
|
TWEAK_FLOAT cfSCGW_DAMAGE_BORDER_BOTTOM_OFFSET_Y 0.09
|
|
TWEAK_FLOAT cfSCGW_DAMAGE_BORDER_LEFT_OFFSET_X 0.176
|
|
TWEAK_FLOAT cfSCGW_DAMAGE_BORDER_RIGHT_OFFSET_X 0.173
|
|
|
|
// ------------------------------ ENUMS ------------------------------
|
|
|
|
/// PURPOSE:
|
|
/// Defines values for the game's states on the client
|
|
ENUM SCGW_CLIENT_STATE
|
|
|
|
SCGW_CLIENT_STATE_INITIALISING = 0,
|
|
SCGW_CLIENT_STATE_REQUESTING_ASSETS,
|
|
SCGW_CLIENT_STATE_INTRO_VIDEO,
|
|
SCGW_CLIENT_STATE_GANG_SCREEN,
|
|
SCGW_CLIENT_STATE_LAUNCHING,
|
|
SCGW_CLIENT_STATE_INIT_ROUND,
|
|
SCGW_CLIENT_STATE_COUNTDOWN,
|
|
SCGW_CLIENT_STATE_RUNNING,
|
|
SCGW_CLIENT_STATE_ROUND_END_SCREEN,
|
|
SCGW_CLIENT_STATE_LBD_ENTRY,
|
|
SCGW_CLIENT_STATE_LBD,
|
|
SCGW_CLIENT_STATE_CLEANUP,
|
|
SCGW_CLIENT_STATE_FINISHED
|
|
|
|
ENDENUM
|
|
|
|
/// PURPOSE:
|
|
/// Defines values for the game's states on the server
|
|
ENUM SCGW_SERVER_STATE
|
|
|
|
SCGW_SERVER_STATE_INITIALISING = 0,
|
|
SCGW_SERVER_STATE_LAUNCHING,
|
|
SCGW_SERVER_STATE_INIT_ROUND,
|
|
SCGW_SERVER_STATE_COUNTDOWN,
|
|
SCGW_SERVER_STATE_RUNNING,
|
|
SCGW_SERVER_STATE_ROUND_END_SCREEN,
|
|
SCGW_SERVER_STATE_LEADERBOARD,
|
|
SCGW_SERVER_STATE_FINISHED
|
|
|
|
ENDENUM
|
|
|
|
/// PURPOSE:
|
|
/// Defines values for the state of each player in the game
|
|
ENUM SCGW_PLAYER_STATE
|
|
|
|
SCGW_PLAYER_STATE_INITIALISING = 0,
|
|
SCGW_PLAYER_STATE_WAITING_TO_START,
|
|
SCGW_PLAYER_STATE_ALIVE,
|
|
SCGW_PLAYER_STATE_DEAD,
|
|
SCGW_PLAYER_STATE_CANT_RESPAWN,
|
|
SCGW_PLAYER_STATE_FINISHED
|
|
|
|
ENDENUM
|
|
|
|
ENUM SCGW_MUSIC_EVENT
|
|
|
|
SCGW_MUSIC_EVENT_TITLE_START,
|
|
SCGW_MUSIC_EVENT_GAMEPLAY,
|
|
SCGW_MUSIC_EVENT_MID_ROUND,
|
|
SCGW_MUSIC_EVENT_SUDDEN_DEATH,
|
|
SCGW_MUSIC_EVENT_STOP_MUSIC
|
|
|
|
ENDENUM
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
// ------------------------------ ENUM TO STRING HELPERS ------------------------------
|
|
|
|
FUNC STRING SCGW_DEBUG_GET_SERVER_STATE_AS_STRING(SCGW_SERVER_STATE eState)
|
|
|
|
SWITCH eState
|
|
CASE SCGW_SERVER_STATE_INITIALISING RETURN "SCGW_SERVER_STATE_INITIALISING"
|
|
CASE SCGW_SERVER_STATE_LAUNCHING RETURN "SCGW_SERVER_STATE_LAUNCHING"
|
|
CASE SCGW_SERVER_STATE_INIT_ROUND RETURN "SCGW_SERVER_STATE_INIT_ROUND"
|
|
CASE SCGW_SERVER_STATE_COUNTDOWN RETURN "SCGW_SERVER_STATE_COUNTDOWN"
|
|
CASE SCGW_SERVER_STATE_RUNNING RETURN "SCGW_SERVER_STATE_RUNNING"
|
|
CASE SCGW_SERVER_STATE_ROUND_END_SCREEN RETURN "SCGW_SERVER_STATE_ROUND_END_SCREEN"
|
|
CASE SCGW_SERVER_STATE_LEADERBOARD RETURN "SCGW_SERVER_STATE_LEADERBOARD"
|
|
CASE SCGW_SERVER_STATE_FINISHED RETURN "SCGW_SERVER_STATE_FINISHED"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID SCGW_SERVER_STATE"
|
|
|
|
ENDFUNC
|
|
|
|
FUNC STRING SCGW_DEBUG_GET_CLIENT_STATE_AS_STRING(SCGW_CLIENT_STATE eState)
|
|
|
|
SWITCH eState
|
|
CASE SCGW_CLIENT_STATE_INITIALISING RETURN "SCGW_CLIENT_STATE_INITIALISING"
|
|
CASE SCGW_CLIENT_STATE_REQUESTING_ASSETS RETURN "SCGW_CLIENT_STATE_REQUESTING_ASSETS"
|
|
CASE SCGW_CLIENT_STATE_INTRO_VIDEO RETURN "SCGW_CLIENT_STATE_INTRO_VIDEO"
|
|
CASE SCGW_CLIENT_STATE_GANG_SCREEN RETURN "SCGW_CLIENT_STATE_GANG_SCREEN"
|
|
CASE SCGW_CLIENT_STATE_LAUNCHING RETURN "SCGW_CLIENT_STATE_LAUNCHING"
|
|
CASE SCGW_CLIENT_STATE_INIT_ROUND RETURN "SCGW_CLIENT_STATE_INIT_ROUND"
|
|
CASE SCGW_CLIENT_STATE_COUNTDOWN RETURN "SCGW_CLIENT_STATE_COUNTDOWN"
|
|
CASE SCGW_CLIENT_STATE_RUNNING RETURN "SCGW_CLIENT_STATE_RUNNING"
|
|
CASE SCGW_CLIENT_STATE_ROUND_END_SCREEN RETURN "SCGW_CLIENT_STATE_ROUND_END_SCREEN"
|
|
CASE SCGW_CLIENT_STATE_CLEANUP RETURN "SCGW_CLIENT_STATE_CLEANUP"
|
|
CASE SCGW_CLIENT_STATE_LBD_ENTRY RETURN "SCGW_CLIENT_STATE_LBD_ENTRY"
|
|
CASE SCGW_CLIENT_STATE_LBD RETURN "SCGW_CLIENT_STATE_LBD"
|
|
CASE SCGW_CLIENT_STATE_FINISHED RETURN "SCGW_CLIENT_STATE_FINISHED"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID SCGW_CLIENT_STATE"
|
|
|
|
ENDFUNC
|
|
|
|
FUNC STRING SCGW_DEBUG_GET_PLAYER_STATE_AS_STRING(SCGW_PLAYER_STATE eState)
|
|
|
|
SWITCH eState
|
|
CASE SCGW_PLAYER_STATE_INITIALISING RETURN "SCGW_PLAYER_STATE_INITIALISING"
|
|
CASE SCGW_PLAYER_STATE_WAITING_TO_START RETURN "SCGW_PLAYER_STATE_WAITING_TO_START"
|
|
CASE SCGW_PLAYER_STATE_ALIVE RETURN "SCGW_PLAYER_STATE_ALIVE"
|
|
CASE SCGW_PLAYER_STATE_DEAD RETURN "SCGW_PLAYER_STATE_DEAD"
|
|
CASE SCGW_PLAYER_STATE_CANT_RESPAWN RETURN "SCGW_PLAYER_STATE_CANT_RESPAWN"
|
|
CASE SCGW_PLAYER_STATE_FINISHED RETURN "SCGW_PLAYER_STATE_FINISHED"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID SCGW_PLAYER_STATE"
|
|
|
|
ENDFUNC
|
|
|
|
FUNC STRING SCGW_DEBUG_GET_SCGW_MUSIC_EVENT_AS_STRING(SCGW_MUSIC_EVENT eState)
|
|
|
|
SWITCH eState
|
|
CASE SCGW_MUSIC_EVENT_TITLE_START RETURN "SCGW_MUSIC_EVENT_TITLE_START"
|
|
CASE SCGW_MUSIC_EVENT_GAMEPLAY RETURN "SCGW_MUSIC_EVENT_GAMEPLAY"
|
|
CASE SCGW_MUSIC_EVENT_MID_ROUND RETURN "SCGW_MUSIC_EVENT_MID_ROUND"
|
|
CASE SCGW_MUSIC_EVENT_SUDDEN_DEATH RETURN "SCGW_MUSIC_EVENT_SUDDEN_DEATH"
|
|
CASE SCGW_MUSIC_EVENT_STOP_MUSIC RETURN "SCGW_MUSIC_EVENT_STOP_MUSIC"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID SCGW_MUSIC_EVENT"
|
|
|
|
ENDFUNC
|
|
|
|
//~~~~~ Globals ~~~~~
|
|
FUNC STRING SCGW_DEBUG_GET_CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_AS_STRING(CASINO_ARCADE_STREET_CRIME_PLAYER_STATE eValue)
|
|
|
|
SWITCH eValue
|
|
CASE CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_NOT_PLAYING RETURN "CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_NOT_PLAYING"
|
|
CASE CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_INTRO RETURN "CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_INTRO"
|
|
CASE CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_READY_UP RETURN "CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_READY_UP"
|
|
CASE CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_COUNTDOWN RETURN "CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_COUNTDOWN"
|
|
CASE CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_PLAYING RETURN "CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_PLAYING"
|
|
CASE CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_DEAD RETURN "CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_DEAD"
|
|
CASE CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_DEAD_CANT_RESPAWN RETURN "CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_DEAD_CANT_RESPAWN"
|
|
CASE CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_ROUND_END_WON RETURN "CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_ROUND_END_WON"
|
|
CASE CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_ROUND_END_LOST RETURN "CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_ROUND_END_LOST"
|
|
CASE CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_GAME_END_WON RETURN "CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_GAME_END_WON"
|
|
CASE CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_GAME_END_LOST RETURN "CASINO_ARCADE_STREET_CRIME_PLAYER_STATE_GAME_END_LOST"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID CASINO_ARCADE_STREET_CRIME_PLAYER_STATE"
|
|
|
|
ENDFUNC
|
|
|
|
FUNC STRING SCGW_DEBUG_GET_CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_AS_STRING(CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION eValue)
|
|
|
|
SWITCH eValue
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_NONE RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_NONE"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_READY_UP RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_READY_UP"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_PLAYER_1 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_PLAYER_1"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_PLAYER_2 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_PLAYER_2"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_PLAYER_3 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_PLAYER_3"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_PLAYER_4 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_PLAYER_4"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_BY_PLAYER_1 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_BY_PLAYER_1"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_BY_PLAYER_2 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_BY_PLAYER_2"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_BY_PLAYER_3 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_BY_PLAYER_3"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_BY_PLAYER_4 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_BY_PLAYER_4"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_BY_VEHICLE RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_KILLED_BY_VEHICLE"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_COLLECTED_PICKUP RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_COLLECTED_PICKUP"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_JOINED_PLAYER_1 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_JOINED_PLAYER_1"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_JOINED_PLAYER_2 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_JOINED_PLAYER_2"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_JOINED_PLAYER_3 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_JOINED_PLAYER_3"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_JOINED_PLAYER_4 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_JOINED_PLAYER_4"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_WON_PLAYER_1 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_WON_PLAYER_1"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_WON_PLAYER_2 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_WON_PLAYER_2"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_WON_PLAYER_3 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_WON_PLAYER_3"
|
|
CASE CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_WON_PLAYER_4 RETURN "CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION_WON_PLAYER_4"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID CASINO_ARCADE_STREET_CRIME_THIS_FRAME_ACTION"
|
|
|
|
ENDFUNC
|
|
|
|
// ------------------------------ DEBUG STRUCTS ------------------------------
|
|
|
|
STRUCT SCGW_DEBUG_STRUCT
|
|
|
|
BOOL bDebugCreatedWidgets = FALSE
|
|
BOOL bDebugOnePlayerTest = FALSE
|
|
BOOL bDrawCollisionDebug = FALSE
|
|
BOOL bDisableSFX = FALSE
|
|
BOOL bDisableMusic = FALSE
|
|
BOOL bTriggerChallenges = FALSE
|
|
BOOL bCallVehicles = FALSE
|
|
|
|
WIDGET_GROUP_ID widgetGridMinigame
|
|
|
|
ENDSTRUCT
|
|
#ENDIF
|
|
|
|
// ------------------------------ STRUCTS ------------------------------
|
|
|
|
STRUCT SCGW_BROADCAST_VEHICLE_INSTANCE_STRUCT
|
|
|
|
INT iVehicleTime = -HIGHEST_INT
|
|
INT iVehicleOrigin
|
|
INT iVehicleDirection
|
|
INT iVehicleType
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_BROADCAST_PICKUP_STRUCT
|
|
|
|
INT iSpawnedPickupLocation = -1
|
|
INT iSpawnedPickupType = -1
|
|
INT iSpawnedPickupSpawnTime = -HIGHEST_INT
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_LEADERBOARD_STRUCT
|
|
|
|
INT iInitials = 0
|
|
INT iScore = -1
|
|
INT iPlayer = -1
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_ULTRAFAST_SERVER_DATA_STRUCT
|
|
|
|
INT iCurrentScore[ciSCGW_GANG_MAX]
|
|
|
|
ENDSTRUCT
|
|
|
|
/// PURPOSE:
|
|
/// Server Broadcast Data
|
|
STRUCT SCGW_SERVER_DATA_STRUCT
|
|
|
|
INT iGridGangOwnership[ciSCGW_MAX_GRID_POSITIONS_X][ciSCGW_MAX_GRID_POSITIONS_Y]
|
|
INT iGridSpriteIndexes[ciSCGW_MAX_GRID_POSITIONS_X][ciSCGW_MAX_GRID_POSITIONS_Y]
|
|
|
|
SCGW_BROADCAST_PICKUP_STRUCT sPickups[ciSCGW_MAX_SPAWNED_PICKUPS]
|
|
INT iLastPickupSpawnTime = -HIGHEST_INT
|
|
|
|
INT iPositionOwnershipBS[ciSCGW_GANG_MAX][ciSCGW_OWNERSHIP_LINK_MAX][ciSCGW_GRIDBS_LENGTH]
|
|
|
|
INT iGameWinner = -1
|
|
INT iRoundWinner[ciSCGW_MAX_ROUNDS]
|
|
INT iCurrentRound = 0
|
|
INT iNumRounds
|
|
INT iRoundScores[ciSCGW_MAX_ROUNDS]
|
|
|
|
SCGW_SERVER_STATE eCurrentServerState = SCGW_SERVER_STATE_INITIALISING
|
|
INT iStartTime = -HIGHEST_INT
|
|
INT iEndTime = -HIGHEST_INT
|
|
|
|
SCGW_BROADCAST_VEHICLE_INSTANCE_STRUCT sVehicles[ciSCGW_MAX_ACTIVE_VEHICLES]
|
|
INT iLastVehicleSpawnTime = -HIGHEST_INT
|
|
|
|
//TODO: Bitset
|
|
BOOL bSuddenDeath = FALSE
|
|
BOOL bAllDeadSuddenDeath = FALSE
|
|
BOOL bLeaderboardRecieved = FALSE
|
|
|
|
SCGW_LEADERBOARD_STRUCT sLeaderboard[ciCASINO_ARCADE_LEADERBOARD_POSITIONS]
|
|
INT iPlayerLeaderboardRanks[ciSCGW_MAX_PLAYERS]
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_BROADCAST_PROJECTILE_STRUCT
|
|
|
|
INT iShotTime = -HIGHEST_INT
|
|
VECTOR_2D vShotOrigin
|
|
INT iShotDirection
|
|
INT iShotWeaponType
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_ULTRAFAST_PLAYER_DATA_STRUCT
|
|
|
|
INT iPlayerPosition
|
|
INT iPreviousPlayerPosition
|
|
INT iLastMovementTime = -HIGHEST_INT
|
|
INT iLastMovementDirection
|
|
INT iFacingDirection
|
|
|
|
SCGW_BROADCAST_PROJECTILE_STRUCT sProjectiles[ciSCGW_MAX_PLAYER_SHOTS]
|
|
|
|
ENDSTRUCT
|
|
|
|
/// PURPOSE:
|
|
/// Player Broadcast Data
|
|
STRUCT SCGW_PLAYER_DATA_STRUCT
|
|
|
|
SCGW_PLAYER_STATE eCurrentPlayerState = SCGW_PLAYER_STATE_INITIALISING
|
|
|
|
FLOAT fMoveSpeed = cfSCGW_BASE_SPEED
|
|
|
|
INT iHealth = ciSCGW_MAX_PLAYER_HEALTH
|
|
INT iLastDamagedTime = -HIGHEST_INT
|
|
INT iLastRespawnTime = -HIGHEST_INT
|
|
|
|
INT iEquippedWeaponType = ciSCGW_WEAPON_NONE
|
|
|
|
INT iGang = ciSCGW_GANG_NONE
|
|
|
|
INT iLeaderboardInitials
|
|
INT iLeaderboardScore = 0
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_POSITION_DATA_STRUCT
|
|
|
|
VECTOR_2D vPlayAreaCorners[ciSCGW_MAX_CORNERS]
|
|
INT iPlayerStartPositions[ciSCGW_GANG_MAX][ciSCGW_PLAYER_GRID_AXIS_MAX]
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_WEAPON_DATA_STRUCT
|
|
|
|
STRING stPlayerSpriteName
|
|
INT iGridShotTime
|
|
INT iGridRange
|
|
INT iShotInterval
|
|
INT iShotDamage
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_VEHICLE_DATA_STRUCT
|
|
|
|
STRING stSpriteName
|
|
INT iMaxAnimFrames
|
|
VECTOR_2D vSpriteScale
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_PICKUP_DATA_STRUCT
|
|
|
|
STRING stSpriteName
|
|
INT iMaxAnimFrames
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_EXPLOSION_STRUCT
|
|
|
|
INT iAnimFrame = -1
|
|
VECTOR_2D vPosition
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_CLIENT_VEHICLE_INSTANCE_STRUCT
|
|
|
|
VECTOR_2D vActualVehiclePosition
|
|
VECTOR_2D vLastFrameVehiclePosition
|
|
INT iVehicleAnimationFrame
|
|
INT iVehicleLoopSoundId = -1
|
|
INT iVehicleWarningSoundId = -1
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_CLIENT_PROJECTILE_STRUCT
|
|
|
|
VECTOR_2D vActualBulletPosition
|
|
VECTOR_2D vLastFrameBulletPosition
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_CLIENT_PLAYER_STRUCT
|
|
|
|
VECTOR_2D vActualPlayerPosition
|
|
VECTOR_2D vLastFramePlayerPosition
|
|
INT iPlayerAnimFrame
|
|
INT iMuzzleFlashFrame = -1
|
|
INT iPlayerSoundId = -1
|
|
INT iWalkingSoundId = -1
|
|
INT iShotSoundId = -1
|
|
INT iDisplayHealth
|
|
SCGW_CLIENT_PROJECTILE_STRUCT sProjectiles[ciSCGW_MAX_PLAYER_SHOTS]
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_LOCAL_PLAYER_STRUCT
|
|
|
|
INT iLocalPart = -1
|
|
BOOL bIsHost
|
|
INT iSpeedBoostRemainingMoves = 0
|
|
INT iLastShotTime = -HIGHEST_INT
|
|
INT iDeathSoundId = -1
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT SCGW_COLOUR_DATA_STRUCT
|
|
|
|
RGBA_COLOUR_STRUCT rgbaGangColours[ciSCGW_GANG_MAX]
|
|
RGBA_COLOUR_STRUCT rgbaSprite
|
|
RGBA_COLOUR_STRUCT rgbaHudBackground
|
|
RGBA_COLOUR_STRUCT rgbaBlack
|
|
RGBA_COLOUR_STRUCT rgbaWasted
|
|
|
|
ENDSTRUCT
|
|
|
|
/// PURPOSE:
|
|
/// Struct containing all data for the minigame
|
|
STRUCT SCGW_DATA_STRUCT
|
|
|
|
SCGW_POSITION_DATA_STRUCT sPositionData
|
|
SCGW_VEHICLE_DATA_STRUCT sVehicleData[ciSCGW_MAX_VEHICLE_TYPES]
|
|
SCGW_WEAPON_DATA_STRUCT sWeaponData[ciSCGW_WEAPON_MAX]
|
|
SCGW_PICKUP_DATA_STRUCT sPickupData[ciSCGW_PICKUPS_MAX]
|
|
SCGW_COLOUR_DATA_STRUCT sColours
|
|
|
|
SCGW_CLIENT_STATE eCurrentState = SCGW_CLIENT_STATE_INITIALISING
|
|
|
|
INT iLocalBS
|
|
INT iBotBS[ciSCGW_MAX_PLAYERS]
|
|
|
|
INT iActivePlayers
|
|
INT iConnectedPlayers
|
|
INT iGangPlayers[ciSCGW_GANG_MAX]
|
|
INT iGangPlayerJoinTimes[ciSCGW_GANG_MAX]
|
|
|
|
SCGW_EXPLOSION_STRUCT sExplosions[ciSCGW_MAX_EXPLOSIONS]
|
|
SCGW_LOCAL_PLAYER_STRUCT sLocalPlayer
|
|
SCGW_LOCAL_PLAYER_STRUCT sBotPlayer[ciSCGW_MAX_PLAYERS]
|
|
SCGW_CLIENT_PLAYER_STRUCT sPlayers[ciSCGW_MAX_PLAYERS]
|
|
SCGW_CLIENT_VEHICLE_INSTANCE_STRUCT sVehicles[ciSCGW_MAX_ACTIVE_VEHICLES]
|
|
|
|
INT iFinalizedShotsBS
|
|
INT iFinalizedShotsBSBot
|
|
INT iShotsLastFrame
|
|
INT iShotsLastFrameBot
|
|
|
|
INT iNextShotIndex = 0
|
|
INT iNextExplosionIndex = 0
|
|
|
|
INT iHiddenPickupsBS
|
|
INT iLastFramePickups
|
|
INT iPickupAnimFrame = 0
|
|
|
|
SCRIPT_TIMER tdWaitForPlayersTimer
|
|
SCRIPT_TIMER tdIntroDelayTimer
|
|
SCRIPT_TIMER tdSuddenDeathText
|
|
|
|
INT iLastFrameGangOwnership[ciSCGW_MAX_GRID_POSITIONS_X][ciSCGW_MAX_GRID_POSITIONS_Y]
|
|
INT iPreviousGangOwnership[ciSCGW_MAX_GRID_POSITIONS_X][ciSCGW_MAX_GRID_POSITIONS_Y]
|
|
INT iGangOwnershipLastChanged[ciSCGW_MAX_GRID_POSITIONS_X][ciSCGW_MAX_GRID_POSITIONS_Y]
|
|
|
|
INT iFrameTimeCounter
|
|
INT iUpdateFrames
|
|
INT iFrameTimeCounterHalf
|
|
INT iUpdateFramesHalf
|
|
|
|
INT iGameWinnerAnimFrame = 0
|
|
INT iRocketAnimFrame = 0
|
|
|
|
INT iHelpTextBitset
|
|
INT iCurrentHelpTextExpiry = -HIGHEST_INT
|
|
STRING stCurrentHelpText
|
|
INT iCurrentHelpTextValue = -1
|
|
BOOL bDoNotApplyPC = FALSE
|
|
|
|
STRING stGangSprites[ciSCGW_GANG_MAX]
|
|
|
|
BINK_MOVIE_ID binkIntro
|
|
|
|
INT iAmbienceSoundId = -1
|
|
INT iAudioBS
|
|
INT iNoTerritoryLoopSoundId = -1
|
|
|
|
INT iQuitTime = -HIGHEST_INT
|
|
|
|
INT iInitial = 0
|
|
|
|
INT iWinningPart = -1
|
|
INT iLastFrameWinningPart = -1
|
|
INT iLastLeaderboardRequest = -HIGHEST_INT
|
|
INT iLbdInitialProfanityToken = 0
|
|
|
|
INT iFlyoverTime = -HIGHEST_INT
|
|
INT iFlyoverType
|
|
VECTOR_2D vFlyoverPos
|
|
|
|
INT iReadyPressedTime = -HIGHEST_INT
|
|
|
|
INT iDisplayedHelpText = -1
|
|
|
|
ARCADE_CABINET_ANIM_EVENT_STRUCT sArcadeCabinetAnimEvent
|
|
#IF IS_DEBUG_BUILD
|
|
SCGW_DEBUG_STRUCT sDebug
|
|
#ENDIF
|
|
|
|
BOOL bCanAddBots
|
|
|
|
ENDSTRUCT
|
|
|
|
ENUM SCGW_BOT_STATE_AI
|
|
SCGW_BOT_STATE_AI_CAPTURE_BUILDING,
|
|
SCGW_BOT_STATE_AI_AVOID_VEHICLE,
|
|
SCGW_BOT_STATE_AI_COLLECT_PICKUP,
|
|
SCGW_BOT_STATE_AI_SUDDEN_DEATH
|
|
|
|
ENDENUM
|
|
|
|
STRUCT SCGW_BOT_DATA_STRUCT
|
|
SCGW_PLAYER_DATA_STRUCT SCGW_player
|
|
SCGW_ULTRAFAST_PLAYER_DATA_STRUCT SCGW_UF_Player
|
|
BOOL bActive = FALSE
|
|
BOOL bShouldShoot = FALSE
|
|
BOOL bTaskComplete = TRUE
|
|
INT iFaceDirection = -1
|
|
INT iBuildingToCaptureX = -1
|
|
INT iBuildingToCaptureY = -1
|
|
INT iBuildingToCaptureCorner = 0
|
|
INT iBuildingToCaptureCornerRandom = 0
|
|
INT iTargetPosX = -1
|
|
INT iTargetPosY = -1
|
|
INT iSuddenDeathTarget = -1
|
|
SCGW_BOT_STATE_AI eStateAI
|
|
ENDSTRUCT
|
|
|
|
// ------------------------------ VARIABLES ------------------------------
|
|
|
|
SCGW_DATA_STRUCT sSCGWData
|
|
SCGW_SERVER_DATA_STRUCT SCGW_ServerBD
|
|
SCGW_ULTRAFAST_SERVER_DATA_STRUCT SCGW_UF_ServerBD
|
|
SCGW_PLAYER_DATA_STRUCT SCGW_PlayerBD[ciSCGW_MAX_PLAYERS]
|
|
SCGW_ULTRAFAST_PLAYER_DATA_STRUCT SCGW_UF_PlayerBD[ciSCGW_MAX_PLAYERS]
|
|
SCGW_BOT_DATA_STRUCT SCGW_Bot[ciSCGW_MAX_PLAYERS]
|
|
|
|
// ------------------------------ DATA FILLERS ------------------------------
|
|
|
|
/// PURPOSE:
|
|
/// Initializes the server broadcast data before networking
|
|
PROC SCGW_PRE_DEFINE_SERVER_DATA()
|
|
|
|
INT i,j
|
|
FOR i = 0 TO ciSCGW_MAX_GRID_POSITIONS_X - 1
|
|
FOR j = 0 TO ciSCGW_MAX_GRID_POSITIONS_Y - 1
|
|
SCGW_ServerBD.iGridGangOwnership[i][j] = ciSCGW_GANG_NONE
|
|
ENDFOR
|
|
ENDFOR
|
|
|
|
FOR i = 0 TO ciSCGW_MAX_SPAWNED_PICKUPS - 1
|
|
SCGW_ServerBD.sPickups[i].iSpawnedPickupLocation = -1
|
|
SCGW_ServerBD.sPickups[i].iSpawnedPickupType = ciSCGW_PICKUPS_NONE
|
|
SCGW_ServerBD.sPickups[i].iSpawnedPickupSpawnTime = -HIGHEST_INT
|
|
ENDFOR
|
|
|
|
FOR i = 0 TO ciSCGW_MAX_ACTIVE_VEHICLES - 1
|
|
SCGW_ServerBD.sVehicles[i].iVehicleTime = -HIGHEST_INT
|
|
SCGW_ServerBD.sVehicles[i].iVehicleOrigin = -1
|
|
SCGW_ServerBD.sVehicles[i].iVehicleDirection = -1
|
|
SCGW_ServerBD.sVehicles[i].iVehicleType = -1
|
|
ENDFOR
|
|
|
|
FOR i = 0 TO ciSCGW_MAX_ROUNDS - 1
|
|
SCGW_ServerBD.iRoundWinner[i] = -1
|
|
ENDFOR
|
|
|
|
FOR i = 0 TO ciSCGW_MAX_PLAYERS - 1
|
|
SCGW_ServerBD.iPlayerLeaderboardRanks[i] = ciSCGW_LBD_DEFAULT_RANK
|
|
ENDFOR
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Initializes the player broadcast data before networking
|
|
PROC SCGW_PRE_DEFINE_PLAYER_DATA()
|
|
|
|
//NOTHING TO INITIALISE YET
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Initialises sSCGWData.sPositionData
|
|
PROC SCGW_INITIALIZE_POSITION_DATA_STRUCT()
|
|
|
|
//Play Area
|
|
sSCGWData.sPositionData.vPlayAreaCorners[ciSCGW_CORNER_BOTTOM_LEFT] = INIT_VECTOR_2D(0.170833, 0.909259 - 0.019444)
|
|
sSCGWData.sPositionData.vPlayAreaCorners[ciSCGW_CORNER_TOP_LEFT] = INIT_VECTOR_2D(0.170833, 0.109259 + 0.019444)
|
|
sSCGWData.sPositionData.vPlayAreaCorners[ciSCGW_CORNER_TOP_RIGHT] = INIT_VECTOR_2D(0.829167, 0.109259 + 0.019444)
|
|
sSCGWData.sPositionData.vPlayAreaCorners[ciSCGW_CORNER_BOTTOM_RIGHT] = INIT_VECTOR_2D(0.829167, 0.909259 - 0.019444)
|
|
|
|
sSCGWData.sPositionData.iPlayerStartPositions[ciSCGW_GANG_GREEN][ciSCGW_PLAYER_GRID_AXIS_X] = 1
|
|
sSCGWData.sPositionData.iPlayerStartPositions[ciSCGW_GANG_GREEN][ciSCGW_PLAYER_GRID_AXIS_Y] = 2
|
|
|
|
sSCGWData.sPositionData.iPlayerStartPositions[ciSCGW_GANG_PURPLE][ciSCGW_PLAYER_GRID_AXIS_X] = ciSCGW_MAX_PLAYER_POSITIONS_X - 2
|
|
sSCGWData.sPositionData.iPlayerStartPositions[ciSCGW_GANG_PURPLE][ciSCGW_PLAYER_GRID_AXIS_Y] = 2
|
|
|
|
sSCGWData.sPositionData.iPlayerStartPositions[ciSCGW_GANG_YELLOW][ciSCGW_PLAYER_GRID_AXIS_X] = 1
|
|
sSCGWData.sPositionData.iPlayerStartPositions[ciSCGW_GANG_YELLOW][ciSCGW_PLAYER_GRID_AXIS_Y] = ciSCGW_MAX_PLAYER_POSITIONS_Y - 3
|
|
|
|
sSCGWData.sPositionData.iPlayerStartPositions[ciSCGW_GANG_BLUE][ciSCGW_PLAYER_GRID_AXIS_X] = ciSCGW_MAX_PLAYER_POSITIONS_X - 2
|
|
sSCGWData.sPositionData.iPlayerStartPositions[ciSCGW_GANG_BLUE][ciSCGW_PLAYER_GRID_AXIS_Y] = ciSCGW_MAX_PLAYER_POSITIONS_Y - 3
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Initialises sSCGWData.stGangSprites
|
|
PROC SCGW_INITIALIZE_GANGS()
|
|
|
|
sSCGWData.stGangSprites[ciSCGW_GANG_GREEN] = "green"
|
|
sSCGWData.stGangSprites[ciSCGW_GANG_PURPLE] = "purple"
|
|
sSCGWData.stGangSprites[ciSCGW_GANG_YELLOW] = "yellow"
|
|
sSCGWData.stGangSprites[ciSCGW_GANG_BLUE] = "blue"
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Initialises sSCGWData.sColours
|
|
PROC SCGW_INITIALIZE_COLOURS()
|
|
|
|
INIT_RGBA_STRUCT(sSCGWData.sColours.rgbaGangColours[ciSCGW_GANG_GREEN], 78, 187, 30)
|
|
INIT_RGBA_STRUCT(sSCGWData.sColours.rgbaGangColours[ciSCGW_GANG_PURPLE], 171, 0, 255)
|
|
INIT_RGBA_STRUCT(sSCGWData.sColours.rgbaGangColours[ciSCGW_GANG_YELLOW], 255, 228, 0)
|
|
INIT_RGBA_STRUCT(sSCGWData.sColours.rgbaGangColours[ciSCGW_GANG_BLUE], 35, 92, 255)
|
|
|
|
INIT_RGBA_STRUCT(sSCGWData.sColours.rgbaWasted, 221, 21, 10, 255)
|
|
INIT_RGBA_STRUCT(sSCGWData.sColours.rgbaSprite, 255, 255, 255, 255)
|
|
INIT_RGBA_STRUCT(sSCGWData.sColours.rgbaHudBackground, 55, 55, 55, 255)
|
|
INIT_RGBA_STRUCT(sSCGWData.sColours.rgbaBlack, 0, 0, 0, 255)
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Initialises sSCGWData.sVehicleData
|
|
PROC SCGW_INITIALIZE_VEHICLE_TYPES()
|
|
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_ICE_CREAM].stSpriteName = "ice_cream_van_"
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_ICE_CREAM].iMaxAnimFrames = 1
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_ICE_CREAM].vSpriteScale.x = 0.033333
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_ICE_CREAM].vSpriteScale.y = 0.029630
|
|
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_AMBULANCE].stSpriteName = "ambulance_"
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_AMBULANCE].iMaxAnimFrames = 2
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_AMBULANCE].vSpriteScale.X = 0.035417
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_AMBULANCE].vSpriteScale.Y = 0.029630
|
|
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_POLICE].stSpriteName = "police_"
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_POLICE].iMaxAnimFrames = 2
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_POLICE].vSpriteScale.X = 0.033333
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_POLICE].vSpriteScale.Y = 0.025926
|
|
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_FIRE].stSpriteName = "fire_truck_"
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_FIRE].iMaxAnimFrames = 2
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_FIRE].vSpriteScale.X = 0.045833
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_FIRE].vSpriteScale.Y = 0.029630
|
|
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_TANK].stSpriteName = "tank_"
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_TANK].iMaxAnimFrames = 1
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_TANK].vSpriteScale.X = 0.041667
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_TANK].vSpriteScale.Y = 0.025926
|
|
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_0].stSpriteName = "gang_car_green"
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_0].iMaxAnimFrames = 1
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_0].vSpriteScale.X = 0.033333
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_0].vSpriteScale.Y = 0.059259
|
|
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_1].stSpriteName = "gang_car_purple"
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_1].iMaxAnimFrames = 1
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_1].vSpriteScale.X = 0.033333
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_1].vSpriteScale.Y = 0.059259
|
|
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_2].stSpriteName = "gang_car_yellow"
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_2].iMaxAnimFrames = 1
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_2].vSpriteScale.X = 0.033333
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_2].vSpriteScale.Y = 0.059259
|
|
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_3].stSpriteName = "gang_car_blue"
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_3].iMaxAnimFrames = 1
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_3].vSpriteScale.X = 0.033333
|
|
sSCGWData.sVehicleData[ciSCGW_VEHICLE_TYPE_GANG_3].vSpriteScale.Y = 0.059259
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Initialises sSCGWData.sPickupData
|
|
PROC SCGW_INITIALIZE_PICKUP_TYPES()
|
|
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_HEALTH].stSpriteName = "heart_anim_"
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_HEALTH].iMaxAnimFrames = 10
|
|
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_SPEED].stSpriteName = "speed_anim_"
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_SPEED].iMaxAnimFrames = 10
|
|
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_GANG_CARS].stSpriteName = "phone_anim_"
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_GANG_CARS].iMaxAnimFrames = 10
|
|
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_PISTOL].stSpriteName = "icon_pistol"
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_PISTOL].iMaxAnimFrames = 0
|
|
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_UZI].stSpriteName = "icon_uzi"
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_UZI].iMaxAnimFrames = 0
|
|
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_AK47].stSpriteName = "icon_rifle"
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_AK47].iMaxAnimFrames = 0
|
|
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_ROCKET].stSpriteName = "icon_rocket_launcher"
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_ROCKET].iMaxAnimFrames = 0
|
|
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_SHOTGUN].stSpriteName = "icon_shotgun"
|
|
sSCGWData.sPickupData[ciSCGW_PICKUPS_SHOTGUN].iMaxAnimFrames = 0
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Initialises sSCGWData.sWeaponData
|
|
PROC SCGW_INITIALIZE_WEAPON_TYPES()
|
|
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_NONE].stPlayerSpriteName = ""
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_NONE].iGridRange = 0
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_NONE].iShotDamage = 0
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_NONE].iShotInterval = 0
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_NONE].iGridShotTime = 0
|
|
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_PISTOL].stPlayerSpriteName = "gun_"
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_PISTOL].iGridRange = ciSCGW_PISTOL_SHOT_GRID_RANGE
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_PISTOL].iShotDamage = ciSCGW_PISTOL_SHOT_DAMAGE
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_PISTOL].iShotInterval = ciSCGW_PISTOL_SHOT_INTERVAL
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_PISTOL].iGridShotTime = ciSCGW_PISTOL_SHOT_TIME_PER_GRID
|
|
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_UZI].stPlayerSpriteName = "uzi_"
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_UZI].iGridRange = ciSCGW_UZI_SHOT_GRID_RANGE
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_UZI].iShotDamage = ciSCGW_UZI_SHOT_DAMAGE
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_UZI].iShotInterval = ciSCGW_UZI_SHOT_INTERVAL
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_UZI].iGridShotTime = ciSCGW_UZI_SHOT_TIME_PER_GRID
|
|
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_AK47].stPlayerSpriteName = "rifle_"
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_AK47].iGridRange = ciSCGW_AK47_SHOT_GRID_RANGE
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_AK47].iShotDamage = ciSCGW_AK47_SHOT_DAMAGE
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_AK47].iShotInterval = ciSCGW_AK47_SHOT_INTERVAL
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_AK47].iGridShotTime = ciSCGW_AK47_SHOT_TIME_PER_GRID
|
|
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_ROCKET].stPlayerSpriteName = "rocket_"
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_ROCKET].iGridRange = ciSCGW_ROCKET_SHOT_GRID_RANGE
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_ROCKET].iShotDamage = ciSCGW_ROCKET_SHOT_DAMAGE
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_ROCKET].iShotInterval = ciSCGW_ROCKET_SHOT_INTERVAL
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_ROCKET].iGridShotTime = ciSCGW_ROCKET_SHOT_TIME_PER_GRID
|
|
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_SHOTGUN].stPlayerSpriteName = "shotgun_"
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_SHOTGUN].iGridRange = ciSCGW_SHOTGUN_SHOT_GRID_RANGE
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_SHOTGUN].iShotDamage = ciSCGW_SHOTGUN_SHOT_DAMAGE
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_SHOTGUN].iShotInterval = ciSCGW_SHOTGUN_SHOT_INTERVAL
|
|
sSCGWData.sWeaponData[ciSCGW_WEAPON_SHOTGUN].iGridShotTime = ciSCGW_SHOTGUN_SHOT_TIME_PER_GRID
|
|
|
|
ENDPROC
|
|
|
|
// ------------------------------ HELPERS ------------------------------
|
|
|
|
/// PURPOSE:
|
|
/// Returns the grid position represented by iPosition
|
|
/// PARAMS:
|
|
/// iX - X position output to this variable
|
|
/// iY - Y position output to this variable
|
|
PROC SCGW_GET_POSITION_COORDS(INT iPosition, INT &iX, INT &iY)
|
|
|
|
iY = FLOOR(TO_FLOAT(iPosition) / ciSCGW_MAX_PLAYER_POSITIONS_X)
|
|
iX = iPosition - (iY * ciSCGW_MAX_PLAYER_POSITIONS_X)
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Returns the single int position representing grid position (iX, iY)
|
|
FUNC INT SCGW_GET_POSITION_FROM_COORDS(INT iX, INT iY)
|
|
|
|
RETURN iX + (iY *(ciSCGW_MAX_PLAYER_POSITIONS_X))
|
|
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns screenspace coords for position iPosition
|
|
FUNC VECTOR_2D SCGW_GET_SCREEN_COORDS_FROM_PLAYER_GRID_POSITION(INT iPosition)
|
|
|
|
INT iX, iY
|
|
VECTOR_2D vCoords
|
|
SCGW_GET_POSITION_COORDS(iPosition, iX, iY)
|
|
|
|
vCoords.x = cfSCGW_PLAYER_POS_X_OFFSET + (cfSCGW_PLAYER_POS_X_INCR * (iX + 1))
|
|
vCoords.y = cfSCGW_PLAYER_POS_Y_OFFSET + (cfSCGW_PLAYER_POS_Y_INCR * (iY + 1))
|
|
|
|
RETURN vCoords
|
|
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns screenspace coords for grid position iX, iY
|
|
FUNC VECTOR_2D SCGW_GET_SCREEN_COORDS_FROM_GRID_COORDS(INT iX, INT iY)
|
|
|
|
VECTOR_2D vCoords
|
|
vCoords.x = cfSCGW_GRID_POS_X_OFFSET + (cfSCGW_GRID_POS_X_INCR * (iX + 1))
|
|
vCoords.y = cfSCGW_GRID_POS_Y_OFFSET + (cfSCGW_GRID_POS_Y_INCR * (iY + 1))
|
|
|
|
RETURN vCoords
|
|
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns true if the player is currently dead
|
|
FUNC BOOL SCGW_IS_PLAYER_DEAD(INT iParticipant)
|
|
|
|
IF SCGW_PlayerBD[iParticipant].eCurrentPlayerState = SCGW_PLAYER_STATE_DEAD
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF SCGW_PlayerBD[iParticipant].eCurrentPlayerState = SCGW_PLAYER_STATE_CANT_RESPAWN
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL SCGW_IS_PLAYER_DEAD_BOT(INT iBot)
|
|
|
|
IF SCGW_Bot[iBot].SCGW_player.eCurrentPlayerState = SCGW_PLAYER_STATE_DEAD
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF SCGW_Bot[iBot].SCGW_player.eCurrentPlayerState = SCGW_PLAYER_STATE_CANT_RESPAWN
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns the current time it takes player iPlayerPart to move one grid space
|
|
FUNC INT SCGW_GET_PLAYER_MOVEMENT_TIME(INT iPlayerPart)
|
|
|
|
RETURN ROUND(ciSCGW_PLAYER_GRID_SPEED * SCGW_PlayerBD[iPlayerPart].fMoveSpeed)
|
|
|
|
ENDFUNC
|
|
|
|
FUNC INT SCGW_GET_PLAYER_MOVEMENT_TIME_BOT(INT iBot)
|
|
|
|
RETURN ROUND(ciSCGW_PLAYER_GRID_SPEED * SCGW_Bot[iBot].SCGW_player.fMoveSpeed)
|
|
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns the bit for iParticipants shot iShot
|
|
/// For use with sSCGWData.iFinalizedShotsBS and sSCGWData.iShotsLastFrame
|
|
FUNC INT SCGW_GET_PARTICIPANT_SHOT_BIT(INT iParticipant, INT iShot)
|
|
|
|
RETURN iShot + (ciSCGW_MAX_PLAYER_SHOTS * iParticipant)
|
|
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns true if no part of the rect is visible in the playable area of the screen
|
|
FUNC BOOL SCGW_IS_RECT_COMPLETELY_OUTSIDE_OF_GAME_AREA(VECTOR_2D vCenter, VECTOR_2D vScale)
|
|
|
|
FLOAT fMinX = vCenter.x - (vScale.x / 2)
|
|
IF fMinX > (1.0 - cfSCGW_FACADE_WIDTH)
|
|
//Obscured by right facade
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
FLOAT fMaxX = vCenter.x + (vScale.x / 2)
|
|
IF fMaxX < cfSCGW_FACADE_WIDTH
|
|
//Obscured by left facade
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
FLOAT fMinY = vCenter.y - (vScale.y / 2)
|
|
IF fMinY > 1.0 - cfSCGW_FACADE_TOP_HEIGHT
|
|
//Below the bottom of the screen
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
FLOAT fMaxY = vCenter.y + (vScale.y / 2)
|
|
IF fMaxY < 0.0 + cfSCGW_FACADE_TOP_HEIGHT
|
|
//Above the top of the screen
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Adjusts collision lines so collision detection is never done on parallel lines
|
|
/// Applies cfSCGW_COLLISION_OFFSET_X or cfSCGW_COLLISION_OFFSET_Y to v0 and v1 depending on the direction of the line
|
|
PROC SCGW_APPLY_COLLISION_OFFSET_TO_VECTOR_2DS(VECTOR_2D &v0, VECTOR_2D &v1)
|
|
|
|
IF IS_FLOAT_IN_RANGE(v0.x, v1.x - cfARCADE_MINIGAME_FLOAT_TOLERANCE, v1.x + cfARCADE_MINIGAME_FLOAT_TOLERANCE)
|
|
//X is the same adjust X
|
|
v0.x += cfSCGW_COLLISION_OFFSET_X
|
|
v1.x -= cfSCGW_COLLISION_OFFSET_X
|
|
ENDIF
|
|
|
|
IF IS_FLOAT_IN_RANGE(v0.y, v1.y - cfARCADE_MINIGAME_FLOAT_TOLERANCE, v1.y + cfARCADE_MINIGAME_FLOAT_TOLERANCE)
|
|
//Y is the same adjust Y
|
|
v0.y += cfSCGW_COLLISION_OFFSET_Y
|
|
v1.y -= cfSCGW_COLLISION_OFFSET_Y
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Returns true if the lines vA vB and vC vD intersect with collision offsets applied
|
|
FUNC BOOL SCGW_DO_LINES_INTERSECT_FOR_COLLISION(VECTOR_2D vA, VECTOR_2D vB, VECTOR_2D vC, VECTOR_2D vD)
|
|
|
|
//Copies for perpindicular lines
|
|
VECTOR_2D vA1 = vA
|
|
VECTOR_2D vB1 = vB
|
|
VECTOR_2D vC1 = vC
|
|
VECTOR_2D vD1 = vD
|
|
|
|
//Apply offsets
|
|
SCGW_APPLY_COLLISION_OFFSET_TO_VECTOR_2DS(vA, vB)
|
|
SCGW_APPLY_COLLISION_OFFSET_TO_VECTOR_2DS(vC, vD)
|
|
SCGW_APPLY_COLLISION_OFFSET_TO_VECTOR_2DS(vB1, vA1)
|
|
SCGW_APPLY_COLLISION_OFFSET_TO_VECTOR_2DS(vD1, vC1)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sSCGWData.sDebug.bDrawCollisionDebug
|
|
DRAW_DEBUG_LINE_2D_FROM_VECTOR_2D(vA, vB, sSCGWData.sColours.rgbaWasted)
|
|
DRAW_DEBUG_LINE_2D_FROM_VECTOR_2D(vA1, vB1, sSCGWData.sColours.rgbaWasted)
|
|
DRAW_DEBUG_LINE_2D_FROM_VECTOR_2D(vC, vD, sSCGWData.sColours.rgbaSprite)
|
|
DRAW_DEBUG_LINE_2D_FROM_VECTOR_2D(vC1, vD1, sSCGWData.sColours.rgbaSprite)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
VECTOR_2D vIntersect
|
|
|
|
IF ARCADE_CABINET_GET_LINE_INTERSECT(vA, vB, vC1, vD1, vIntersect)
|
|
OR ARCADE_CABINET_GET_LINE_INTERSECT(vA, vB, vC, vD, vIntersect)
|
|
OR ARCADE_CABINET_GET_LINE_INTERSECT(vA1, vB1, vC, vD, vIntersect)
|
|
OR ARCADE_CABINET_GET_LINE_INTERSECT(vA1, vB1, vC1, vD1, vIntersect)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_DO_LINES_INTERSECT_FOR_COLLISION - vA (", vA.x, ", ", vA.y, ") vB (", vA.x, ", ", vA.y, ") intersects")
|
|
CDEBUG1LN(DEBUG_MINIGAME, " vC (", vC.x, ", ", vC.y, ") vB (", vD.x, ", ", vD.y, ") at (", vIntersect.x, ", ", vIntersect.y, ")")
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
// ------------------------------ SOUND EFFECTS ------------------------------
|
|
|
|
FUNC STRING SCGW_GET_VEHICLE_WARNING_SOUND(INT iVehicleType)
|
|
|
|
SWITCH iVehicleType
|
|
CASE ciSCGW_VEHICLE_TYPE_AMBULANCE
|
|
RETURN "Ambulance_Warning"
|
|
CASE ciSCGW_VEHICLE_TYPE_POLICE
|
|
RETURN "Police_Car_Warning"
|
|
CASE ciSCGW_VEHICLE_TYPE_FIRE
|
|
RETURN "Fire_Truck_Warning"
|
|
CASE ciSCGW_VEHICLE_TYPE_TANK
|
|
RETURN "Tank_Warning"
|
|
CASE ciSCGW_VEHICLE_TYPE_GANG_0
|
|
CASE ciSCGW_VEHICLE_TYPE_GANG_1
|
|
CASE ciSCGW_VEHICLE_TYPE_GANG_2
|
|
CASE ciSCGW_VEHICLE_TYPE_GANG_3
|
|
RETURN "Gang_Van_Warning"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID VEHICLE"
|
|
|
|
ENDFUNC
|
|
|
|
FUNC STRING SCGW_GET_VEHICLE_LOOP_SOUND(INT iVehicleType)
|
|
|
|
SWITCH iVehicleType
|
|
CASE ciSCGW_VEHICLE_TYPE_ICE_CREAM
|
|
RETURN "Ice_Cream_Van_Loop"
|
|
CASE ciSCGW_VEHICLE_TYPE_AMBULANCE
|
|
CASE ciSCGW_VEHICLE_TYPE_POLICE
|
|
CASE ciSCGW_VEHICLE_TYPE_FIRE
|
|
RETURN "Emergency_Siren_Loop"
|
|
CASE ciSCGW_VEHICLE_TYPE_TANK
|
|
RETURN "Tank_Loop"
|
|
CASE ciSCGW_VEHICLE_TYPE_GANG_0
|
|
CASE ciSCGW_VEHICLE_TYPE_GANG_1
|
|
CASE ciSCGW_VEHICLE_TYPE_GANG_2
|
|
CASE ciSCGW_VEHICLE_TYPE_GANG_3
|
|
RETURN "Gang_Van_Loop"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID VEHICLE"
|
|
|
|
ENDFUNC
|
|
|
|
FUNC STRING SCGW_GET_SOUNDSET_FOR_GANG(INT iGang)
|
|
|
|
SWITCH iGang
|
|
CASE ciSCGW_GANG_GREEN
|
|
RETURN "dlc_vw_am_tw_gang_Hoods_sounds"
|
|
CASE ciSCGW_GANG_PURPLE
|
|
RETURN "dlc_vw_am_tw_gang_Punks_sounds"
|
|
CASE ciSCGW_GANG_YELLOW
|
|
RETURN "dlc_vw_am_tw_gang_Yokels_sounds"
|
|
CASE ciSCGW_GANG_BLUE
|
|
RETURN "dlc_vw_am_tw_gang_Bikers_sounds"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID GANG"
|
|
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns the position for the "Screen_Position" variable based on the play area
|
|
FUNC FLOAT SCGW_GET_SOUND_SCREEN_POSITION_FROM_COORDS(VECTOR_2D vCoords)
|
|
|
|
RETURN CLAMP((vCoords.x - cfSCGW_FACADE_WIDTH) / cfSCGW_PLAY_AREA_WIDTH, 0.0, 1.0)
|
|
|
|
ENDFUNC
|
|
|
|
PROC SCGW_PLAY_FIRE_AND_FORGET_FRONTEND_SOUND(STRING stSoundName)
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_PLAY_FIRE_AND_FORGET_FRONTEND_SOUND - Playing: ", stSoundName)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sSCGWData.sDebug.bDisableSFX
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
PLAY_SOUND_FRONTEND(-1, stSoundName, "dlc_vw_am_tw_frontend_sounds", FALSE)
|
|
|
|
ENDPROC
|
|
|
|
PROC SCGW_PROCESS_ZERO_TERRITORIES_SOUND_LOOP()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sSCGWData.sDebug.bDisableSFX
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
BOOL bShouldPlay = TRUE
|
|
IF SCGW_ServerBD.eCurrentServerState != SCGW_SERVER_STATE_RUNNING
|
|
bShouldPlay = FALSE
|
|
ENDIF
|
|
|
|
IF SCGW_IS_PLAYER_DEAD(sSCGWData.sLocalPlayer.iLocalPart)
|
|
bShouldPlay = FALSE
|
|
ENDIF
|
|
|
|
IF SCGW_UF_ServerBD.iCurrentScore[SCGW_PlayerBD[sSCGWData.sLocalPlayer.iLocalPart].iGang] > 0
|
|
bShouldPlay = FALSE
|
|
ENDIF
|
|
|
|
IF bShouldPlay
|
|
IF sSCGWData.iNoTerritoryLoopSoundId = -1
|
|
sSCGWData.iNoTerritoryLoopSoundId = GET_SOUND_ID()
|
|
ENDIF
|
|
IF HAS_SOUND_FINISHED(sSCGWData.iNoTerritoryLoopSoundId)
|
|
PLAY_SOUND_FRONTEND(sSCGWData.iNoTerritoryLoopSoundId, "Frontend_Player_No_Territory_Loop", "dlc_vw_am_tw_frontend_sounds", FALSE)
|
|
ENDIF
|
|
ELSE
|
|
IF sSCGWData.iNoTerritoryLoopSoundId != -1
|
|
AND NOT HAS_SOUND_FINISHED(sSCGWData.iNoTerritoryLoopSoundId)
|
|
STOP_SOUND(sSCGWData.iNoTerritoryLoopSoundId)
|
|
RELEASE_SOUND_ID(sSCGWData.iNoTerritoryLoopSoundId)
|
|
sSCGWData.iNoTerritoryLoopSoundId = -1
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC SCGW_START_LOOPING_GLOBAL_SOUND(STRING stSoundName, INT &iSoundId, VECTOR_2D vCoords, BOOL bPassScreenPos = TRUE)
|
|
|
|
FLOAT fScreenPos = SCGW_GET_SOUND_SCREEN_POSITION_FROM_COORDS(vCoords)
|
|
|
|
IF bPassScreenPos
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_START_LOOPING_GLOBAL_SOUND - Playing: ", stSoundName, " at ", fScreenPos)
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_START_LOOPING_GLOBAL_SOUND - Playing: ", stSoundName)
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sSCGWData.sDebug.bDisableSFX
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF iSoundId = -1
|
|
iSoundId = GET_SOUND_ID()
|
|
ENDIF
|
|
|
|
IF HAS_SOUND_FINISHED(iSoundId)
|
|
PLAY_SOUND_FRONTEND(iSoundId, stSoundName, "dlc_vw_am_tw_global_sounds", FALSE)
|
|
ENDIF
|
|
|
|
IF bPassScreenPos
|
|
SET_VARIABLE_ON_SOUND(iSoundId, "Screen_Position", fScreenPos)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC SCGW_STOP_LOOPING_SOUND(INT &iSoundId)
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_STOP_LOOPING_SOUND - Stopping: ", iSoundId)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sSCGWData.sDebug.bDisableSFX
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF NOT HAS_SOUND_FINISHED(iSoundId)
|
|
STOP_SOUND(iSoundId)
|
|
ENDIF
|
|
|
|
RELEASE_SOUND_ID(iSoundId)
|
|
iSoundId = -1
|
|
|
|
ENDPROC
|
|
|
|
PROC SCGW_PLAY_FIRE_AND_FORGET_GLOBAL_SOUND(STRING stSoundName, VECTOR_2D vCoords, BOOL bPassScreenPos = TRUE)
|
|
|
|
FLOAT fScreenPos = SCGW_GET_SOUND_SCREEN_POSITION_FROM_COORDS(vCoords)
|
|
|
|
IF bPassScreenPos
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_PLAY_FIRE_AND_FORGET_GLOBAL_SOUND - Playing: ", stSoundName, "Screen Pos: ", fScreenPos)
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_PLAY_FIRE_AND_FORGET_GLOBAL_SOUND - Playing: ", stSoundName)
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sSCGWData.sDebug.bDisableSFX
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
INT iSoundId = GET_SOUND_ID()
|
|
PLAY_SOUND_FRONTEND(iSoundId, stSoundName, "dlc_vw_am_tw_global_sounds", FALSE)
|
|
IF bPassScreenPos
|
|
SET_VARIABLE_ON_SOUND(iSoundId, "Screen_Position", fScreenPos)
|
|
ENDIF
|
|
RELEASE_SOUND_ID(iSoundId)
|
|
|
|
ENDPROC
|
|
|
|
PROC SCGW_PLAY_GLOBAL_SOUND_FROM_PLAYER(STRING stSoundName, INT iParticipant, INT &iSoundId)
|
|
|
|
FLOAT fScreenPos = SCGW_GET_SOUND_SCREEN_POSITION_FROM_COORDS(sSCGWData.sPlayers[iParticipant].vActualPlayerPosition)
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_PLAY_GLOBAL_SOUND_FROM_PLAYER - Playing: ", stSoundName, "player ", iParticipant, "Screen Pos: ", fScreenPos)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sSCGWData.sDebug.bDisableSFX
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF iSoundId = -1
|
|
iSoundId = GET_SOUND_ID()
|
|
ENDIF
|
|
|
|
PLAY_SOUND_FRONTEND(iSoundId, stSoundName, "dlc_vw_am_tw_global_sounds", FALSE)
|
|
SET_VARIABLE_ON_SOUND(iSoundId, "Screen_Position", fScreenPos)
|
|
|
|
ENDPROC
|
|
|
|
PROC SCGW_PLAY_LOCAL_PLAYER_DEATH_SOUND(STRING stSoundName)
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_PLAY_LOCAL_PLAYER_DEATH_SOUND - Playing: ", stSoundName)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sSCGWData.sDebug.bDisableSFX
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF sSCGWData.sLocalPlayer.iDeathSoundId = -1
|
|
sSCGWData.sLocalPlayer.iDeathSoundId = GET_SOUND_ID()
|
|
ENDIF
|
|
|
|
PLAY_SOUND_FRONTEND(sSCGWData.sLocalPlayer.iDeathSoundId, stSoundName, "dlc_vw_am_tw_global_sounds", FALSE)
|
|
|
|
ENDPROC
|
|
|
|
PROC SCGW_PLAY_FIRE_AND_FORGET_GANG_SOUND(STRING stSoundName, VECTOR_2D vCoords, INT iGang)
|
|
|
|
FLOAT fScreenPos = SCGW_GET_SOUND_SCREEN_POSITION_FROM_COORDS(vCoords)
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_PLAY_FIRE_AND_FORGET_GANG_SOUND - Playing: ", stSoundName, "Screen Pos: ", fScreenPos, " gang: ", iGang)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sSCGWData.sDebug.bDisableSFX
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
INT iSoundId = GET_SOUND_ID()
|
|
PLAY_SOUND_FRONTEND(iSoundId, stSoundName, SCGW_GET_SOUNDSET_FOR_GANG(iGang), FALSE)
|
|
SET_VARIABLE_ON_SOUND(iSoundId, "Screen_Position", fScreenPos)
|
|
RELEASE_SOUND_ID(iSoundId)
|
|
|
|
ENDPROC
|
|
|
|
PROC SCGW_PLAY_GANG_SOUND_FROM_PLAYER(STRING stSoundName, INT iParticipant, INT &iSoundId)
|
|
|
|
FLOAT fScreenPos = SCGW_GET_SOUND_SCREEN_POSITION_FROM_COORDS(sSCGWData.sPlayers[iParticipant].vActualPlayerPosition)
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_PLAY_GANG_SOUND_FROM_PLAYER - Playing: ", stSoundName, "player ", iParticipant, "Screen Pos: ", fScreenPos)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sSCGWData.sDebug.bDisableSFX
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF iSoundId = -1
|
|
iSoundId = GET_SOUND_ID()
|
|
ENDIF
|
|
|
|
PLAY_SOUND_FRONTEND(iSoundId, stSoundName, SCGW_GET_SOUNDSET_FOR_GANG(SCGW_PlayerBD[iParticipant].iGang), FALSE)
|
|
SET_VARIABLE_ON_SOUND(iSoundId, "Screen_Position", fScreenPos)
|
|
|
|
ENDPROC
|
|
|
|
PROC SCGW_START_LOOPING_GANG_SOUND(STRING stSoundName, INT &iSoundId, VECTOR_2D vCoords, INT iGang)
|
|
|
|
FLOAT fScreenPos = SCGW_GET_SOUND_SCREEN_POSITION_FROM_COORDS(vCoords)
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_START_LOOPING_GANG_SOUND - Playing: ", stSoundName, " at ", fScreenPos, " for gang: ", iGang)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sSCGWData.sDebug.bDisableSFX
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF iSoundId = -1
|
|
iSoundId = GET_SOUND_ID()
|
|
ENDIF
|
|
|
|
IF HAS_SOUND_FINISHED(iSoundId)
|
|
PLAY_SOUND_FRONTEND(iSoundId, stSoundName, SCGW_GET_SOUNDSET_FOR_GANG(iGang), FALSE)
|
|
ENDIF
|
|
SET_VARIABLE_ON_SOUND(iSoundId, "Screen_Position", fScreenPos)
|
|
|
|
ENDPROC
|
|
|
|
PROC SCGW_PLAY_SHOOTING_SOUND_FOR_PLAYER(INT iParticipant, INT iShotIndex)
|
|
|
|
STRING stShotSound = ""
|
|
SWITCH SCGW_UF_PlayerBD[iParticipant].sProjectiles[iShotIndex].iShotWeaponType
|
|
CASE ciSCGW_WEAPON_PISTOL
|
|
stShotSound = "Pistol_Fire"
|
|
BREAK
|
|
CASE ciSCGW_WEAPON_AK47
|
|
stShotSound = "Assault_Rifle_Fire"
|
|
BREAK
|
|
CASE ciSCGW_WEAPON_UZI
|
|
stShotSound = "Machine_Pistol_Fire"
|
|
BREAK
|
|
CASE ciSCGW_WEAPON_SHOTGUN
|
|
stShotSound = "Shotgun_Fire"
|
|
BREAK
|
|
CASE ciSCGW_WEAPON_ROCKET
|
|
stShotSound = "Rocket_Fire"
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF SCGW_UF_PlayerBD[iParticipant].sProjectiles[iShotIndex].iShotWeaponType = ciSCGW_WEAPON_PISTOL
|
|
SCGW_PLAY_GANG_SOUND_FROM_PLAYER(stShotSound, iParticipant, sSCGWData.sPlayers[iParticipant].iShotSoundId)
|
|
ELSE
|
|
SCGW_PLAY_GLOBAL_SOUND_FROM_PLAYER(stShotSound, iParticipant, sSCGWData.sPlayers[iParticipant].iShotSoundId)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC SCGW_PLAY_SHOOTING_SOUND_FOR_BOT(INT iBot, INT iShotIndex)
|
|
|
|
STRING stShotSound = ""
|
|
SWITCH SCGW_Bot[iBot].SCGW_UF_Player.sProjectiles[iShotIndex].iShotWeaponType
|
|
CASE ciSCGW_WEAPON_PISTOL
|
|
stShotSound = "Pistol_Fire"
|
|
BREAK
|
|
CASE ciSCGW_WEAPON_AK47
|
|
stShotSound = "Assault_Rifle_Fire"
|
|
BREAK
|
|
CASE ciSCGW_WEAPON_UZI
|
|
stShotSound = "Machine_Pistol_Fire"
|
|
BREAK
|
|
CASE ciSCGW_WEAPON_SHOTGUN
|
|
stShotSound = "Shotgun_Fire"
|
|
BREAK
|
|
CASE ciSCGW_WEAPON_ROCKET
|
|
stShotSound = "Rocket_Fire"
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF SCGW_Bot[iBot].SCGW_UF_Player.sProjectiles[iShotIndex].iShotWeaponType = ciSCGW_WEAPON_PISTOL
|
|
SCGW_PLAY_GANG_SOUND_FROM_PLAYER(stShotSound, iBot, sSCGWData.sPlayers[iBot].iShotSoundId)
|
|
ELSE
|
|
SCGW_PLAY_GLOBAL_SOUND_FROM_PLAYER(stShotSound, iBot, sSCGWData.sPlayers[iBot].iShotSoundId)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
// ------------------------------ MUSIC ------------------------------
|
|
|
|
/// PURPOSE:
|
|
/// Returns the music event string for the type of event passed in
|
|
FUNC STRING SCGW_GET_MUSIC_EVENT_STRING(SCGW_MUSIC_EVENT eEvent)
|
|
|
|
SWITCH eEvent
|
|
CASE SCGW_MUSIC_EVENT_TITLE_START
|
|
RETURN "CASINO_TW_TITLE_START"
|
|
CASE SCGW_MUSIC_EVENT_GAMEPLAY
|
|
RETURN "CASINO_TW_GAMEPLAY"
|
|
CASE SCGW_MUSIC_EVENT_MID_ROUND
|
|
RETURN "CASINO_TW_MID_ROUND"
|
|
CASE SCGW_MUSIC_EVENT_SUDDEN_DEATH
|
|
RETURN "CASINO_TW_SUDDEN_DEATH"
|
|
CASE SCGW_MUSIC_EVENT_STOP_MUSIC
|
|
RETURN "CASINO_TW_STOP_MUSIC"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID MUSIC EVENT"
|
|
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Triggers a music event
|
|
PROC SCGW_TRIGGER_MUSIC_EVENT(STRING stEvent)
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_TRIGGER_MUSIC_EVENT - Triggering ", stEvent)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF sSCGWData.sDebug.bDisableMusic
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
TRIGGER_MUSIC_EVENT(stEvent)
|
|
|
|
ENDPROC
|
|
|
|
// ------------------------------ PICKUP GROUPS ------------------------------
|
|
|
|
/// PURPOSE:
|
|
/// Contains the layouts for sudden death pickups and initialises a random one
|
|
PROC SCGW_SPAWN_SUDDEN_DEATH_PICKUPS()
|
|
|
|
//Wipe any spawned pickups
|
|
INT i
|
|
FOR i = 0 TO ciSCGW_MAX_SPAWNED_PICKUPS - 1
|
|
SCGW_ServerBD.sPickups[i].iSpawnedPickupLocation = -1
|
|
SCGW_ServerBD.sPickups[i].iSpawnedPickupType = ciSCGW_PICKUPS_NONE
|
|
SCGW_ServerBD.sPickups[i].iSpawnedPickupSpawnTime = -HIGHEST_INT
|
|
ENDFOR
|
|
|
|
INT iTime = NATIVE_TO_INT(GET_NETWORK_TIME())
|
|
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_0_1
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_1
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_1
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_4_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
|
|
INT iSpawnGroup = GET_RANDOM_INT_IN_RANGE(0, ciSCGW_MAX_SUDDEN_DEATH_PICKUP_GROUPS)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_SPAWN_SUDDEN_DEATH_PICKUPS - Spawn Group ", iSpawnGroup)
|
|
|
|
SWITCH iSpawnGroup
|
|
|
|
CASE 0 //Pistols
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
BREAK
|
|
|
|
CASE 1 //Uzis
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_UZI
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_UZI
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_UZI
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_UZI
|
|
BREAK
|
|
|
|
CASE 2 //Rifles
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_AK47
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_AK47
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_AK47
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_AK47
|
|
BREAK
|
|
|
|
CASE 3 //Shotguns
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_SHOTGUN
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_SHOTGUN
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_SHOTGUN
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_SHOTGUN
|
|
BREAK
|
|
|
|
CASE 4 //Rockets
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
//Spawn a random pickup in the center
|
|
iSpawnGroup = GET_RANDOM_INT_IN_RANGE(0, ciSCGW_MAX_SUDDEN_DEATH_CENTER_PICKUPS)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_SPAWN_SUDDEN_DEATH_PICKUPS - Center Pickup ", iSpawnGroup)
|
|
|
|
SWITCH iSpawnGroup
|
|
|
|
CASE 0
|
|
//Nothing
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_NONE
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupLocation = -1
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupSpawnTime = -HIGHEST_INT
|
|
BREAK
|
|
|
|
CASE 1
|
|
//Gang Cars
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_GANG_CARS
|
|
BREAK
|
|
|
|
CASE 2
|
|
//Health
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
BREAK
|
|
|
|
CASE 3
|
|
//Speed
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Contains the layouts for the initial pickup spawn and initialises a random one
|
|
PROC SCGW_SPAWN_STARTING_PICKUPS()
|
|
|
|
INT iTime = NATIVE_TO_INT(GET_NETWORK_TIME())
|
|
|
|
//Starting pistols
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_0
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_1
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_1
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_2
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupSpawnTime = iTime
|
|
|
|
INT iSpawnGroup = GET_RANDOM_INT_IN_RANGE(0, ciSCGW_MAX_STARTING_PICKUP_GROUPS)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_SPAWN_STARTING_PICKUPS - Spawn Group ", iSpawnGroup)
|
|
|
|
SWITCH iSpawnGroup
|
|
|
|
CASE 0
|
|
//Center Gang Cars
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_GANG_CARS
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
BREAK
|
|
|
|
CASE 1
|
|
//Center Random Weapon (Excluding rocket)
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = GET_RANDOM_INT_IN_RANGE(ciSCGW_PICKUPS_UZI, ciSCGW_PICKUPS_ROCKET)
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
BREAK
|
|
|
|
CASE 2
|
|
//Speed
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_0_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_4_1
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupSpawnTime = iTime
|
|
BREAK
|
|
|
|
CASE 3
|
|
//Nothing
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Contains the layouts for mid game pickup spawns and initialises a random one
|
|
PROC SCGW_SPAWN_MID_GAME_PICKUPS()
|
|
|
|
INT iTime = NATIVE_TO_INT(GET_NETWORK_TIME())
|
|
|
|
INT iSpawnGroup = GET_RANDOM_INT_IN_RANGE(0, ciSCGW_MAX_MID_GAME_PICKUP_GROUPS)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_SPAWN_MID_GAME_PICKUPS - Spawn Group ", iSpawnGroup)
|
|
|
|
SWITCH iSpawnGroup
|
|
|
|
CASE 0
|
|
//Pistols & Uzis
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_0
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_UZI
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_1
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_UZI
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_1
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_2
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_GANG_CARS
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_0_1
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_4_1
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupSpawnTime = iTime
|
|
BREAK
|
|
|
|
CASE 1
|
|
//Shotguns and Rifles
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_AK47
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_0
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_SHOTGUN
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_1
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_SHOTGUN
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_1
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_AK47
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_2
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_GANG_CARS
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_0_1
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_4_1
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupSpawnTime = iTime
|
|
BREAK
|
|
|
|
CASE 2
|
|
//Pistols & Rockets
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_0
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_0
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_2
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_2
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_0_1
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_4_1
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupSpawnTime = iTime
|
|
|
|
BREAK
|
|
|
|
CASE 3
|
|
//Speed & Gang Backup
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_0
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_0
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_2
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_2
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_GANG_CARS
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_0_1
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_4_1
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupSpawnTime = iTime
|
|
BREAK
|
|
|
|
CASE 4
|
|
//Health & Rockets
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_0
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_0
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_2
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_2
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_0_1
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_4_1
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupSpawnTime = iTime
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Contains the layouts for late game pickup spawns and initialises a random one
|
|
PROC SCGW_SPAWN_LATE_GAME_PICKUPS()
|
|
|
|
INT iTime = NATIVE_TO_INT(GET_NETWORK_TIME())
|
|
|
|
INT iSpawnGroup = GET_RANDOM_INT_IN_RANGE(0, ciSCGW_MAX_LATE_GAME_PICKUP_GROUPS)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[SCGW] [JS] SCGW_SPAWN_LATE_GAME_PICKUPS - Spawn Group ", iSpawnGroup)
|
|
|
|
SWITCH iSpawnGroup
|
|
|
|
CASE 0
|
|
//Rockets & Uzis
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_0
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_UZI
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_1
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_UZI
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_1
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_2
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_0_1
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_4_1
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupSpawnTime = iTime
|
|
BREAK
|
|
|
|
CASE 1
|
|
//Gang Cars and Rifles
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_AK47
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_0
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_1
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_SPEED
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_1
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_AK47
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_2
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_AK47
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_0_1
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_4_1
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupSpawnTime = iTime
|
|
BREAK
|
|
|
|
CASE 2
|
|
//Pistols & Rockets
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_0
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_0
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_2
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_PISTOL
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_2
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_GANG_CARS
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_0_1
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_4_1
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupSpawnTime = iTime
|
|
|
|
BREAK
|
|
|
|
CASE 3
|
|
//Shotguns, Health & Gang Backup
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_0
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_0
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_2
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_2
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_GANG_CARS
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupType = ciSCGW_PICKUPS_SHOTGUN
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_0_1
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupType = ciSCGW_PICKUPS_SHOTGUN
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_4_1
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupSpawnTime = iTime
|
|
BREAK
|
|
|
|
CASE 4
|
|
//Health & Rockets
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_0
|
|
SCGW_ServerBD.sPickups[0].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_0
|
|
SCGW_ServerBD.sPickups[1].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_3_2
|
|
SCGW_ServerBD.sPickups[2].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupType = ciSCGW_PICKUPS_ROCKET
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_1_2
|
|
SCGW_ServerBD.sPickups[3].iSpawnedPickupSpawnTime = iTime
|
|
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_2_1
|
|
SCGW_ServerBD.sPickups[4].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_0_1
|
|
SCGW_ServerBD.sPickups[5].iSpawnedPickupSpawnTime = iTime
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupType = ciSCGW_PICKUPS_HEALTH
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupLocation = ciSCGW_PICKUP_POSITION_4_1
|
|
SCGW_ServerBD.sPickups[6].iSpawnedPickupSpawnTime = iTime
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
FUNC INT SCGW_GET_PLAYER_LEADERBOARD_POSITION(INT iParticipant)
|
|
|
|
INT i
|
|
FOR i = 0 TO ciCASINO_ARCADE_LEADERBOARD_POSITIONS - 1
|
|
IF SCGW_ServerBD.sLeaderboard[i].iPlayer = iParticipant
|
|
RETURN i
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
RETURN ciSCGW_LBD_DEFAULT_RANK
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL SCGW_IS_GANG_BOT(INT iGang)
|
|
INT iBot
|
|
FOR iBot = 0 TO ciSCGW_GANG_MAX - 1
|
|
IF SCGW_Bot[iBot].bActive
|
|
IF SCGW_Bot[iBot].SCGW_player.iGang = iGang
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
PROC DEBUG_TEXT_FLOAT_IN_SCREEN(STRING text, FLOAT fValue,FLOAT x, FLOAT y, INT r = 255, INT g = 0, INT b = 0)
|
|
TEXT_PLACEMENT textPlacement
|
|
textPlacement.x = x
|
|
textPlacement.y = y
|
|
TEXT_STYLE textStyle
|
|
SET_TITLE_SMALL_TEXT(textStyle)
|
|
textStyle.XScale = 0.2
|
|
textStyle.YScale = 0.2
|
|
|
|
TEXT_LABEL_63 output
|
|
output = text
|
|
output += " = "
|
|
output += FLOAT_TO_STRING(fValue)
|
|
textStyle.r = r
|
|
textStyle.g = g
|
|
textStyle.b = b
|
|
|
|
DRAW_TEXT_WITH_STRING(textPlacement, textStyle, "DBG_STRING",output)
|
|
ENDPROC
|
|
|
|
PROC DEBUG_TEXT_INT_IN_SCREEN(STRING text, INT iValue,FLOAT x, FLOAT y, FLOAT w = 0.2, FLOAT h = 0.2, INT r = 255, INT g = 0, INT b = 0)
|
|
TEXT_PLACEMENT textPlacement
|
|
textPlacement.x = x
|
|
textPlacement.y = y
|
|
TEXT_STYLE textStyle
|
|
SET_TITLE_SMALL_TEXT(textStyle)
|
|
textStyle.XScale = w
|
|
textStyle.YScale = h
|
|
|
|
TEXT_LABEL_63 output
|
|
output = text
|
|
output += " = "
|
|
output += iValue
|
|
textStyle.r = r
|
|
textStyle.g = g
|
|
textStyle.b = b
|
|
|
|
DRAW_TEXT_WITH_STRING(textPlacement, textStyle, "DBG_STRING",output)
|
|
ENDPROC
|
|
|
|
PROC DEBUG_TEXT_VECTOR_2D_IN_SCREEN(STRING text, VECTOR_2D iValue,FLOAT x, FLOAT y, INT r = 255, INT g = 0, INT b = 0)
|
|
TEXT_PLACEMENT textPlacement
|
|
textPlacement.x = x
|
|
textPlacement.y = y
|
|
TEXT_STYLE textStyle
|
|
SET_TITLE_SMALL_TEXT(textStyle)
|
|
textStyle.XScale = 0.2
|
|
textStyle.YScale = 0.2
|
|
|
|
TEXT_LABEL_63 output
|
|
output = text
|
|
output += " = ( "
|
|
output += FLOAT_TO_STRING(iValue.x)
|
|
output += " , "
|
|
output += FLOAT_TO_STRING(iValue.y)
|
|
output += " ) "
|
|
textStyle.r = r
|
|
textStyle.g = g
|
|
textStyle.b = b
|
|
|
|
DRAW_TEXT_WITH_STRING(textPlacement, textStyle, "DBG_STRING",output)
|
|
ENDPROC
|
|
|
|
PROC DEBUG_TEXT_STRING_IN_SCREEN(STRING text, STRING iValue,FLOAT x, FLOAT y, INT r = 255, INT g = 0, INT b = 0)
|
|
TEXT_PLACEMENT textPlacement
|
|
textPlacement.x = x
|
|
textPlacement.y = y
|
|
TEXT_STYLE textStyle
|
|
SET_TITLE_SMALL_TEXT(textStyle)
|
|
textStyle.XScale = 0.2
|
|
textStyle.YScale = 0.2
|
|
|
|
TEXT_LABEL_63 output
|
|
output = text
|
|
output += " = "
|
|
output += iValue
|
|
textStyle.r = r
|
|
textStyle.g = g
|
|
textStyle.b = b
|
|
|
|
DRAW_TEXT_WITH_STRING(textPlacement, textStyle, "DBG_STRING",output)
|
|
ENDPROC
|
|
|
|
#ENDIF
|
|
|