973 lines
41 KiB
Scheme
Executable File
973 lines
41 KiB
Scheme
Executable File
USING "degenatron_games_using.sch"
|
|
USING "degenatron_games_drawing.sch"
|
|
USING "arcade_games_help_text.sch"
|
|
USING "degenatron_games_animation.sch"
|
|
|
|
PROC DEGENATRON_GAMES_INIT_TELEMETRY()
|
|
sDegenatronGamesData.sTelemetry.challenges = 0
|
|
SWITCH sDegenatronGamesData.eGame
|
|
CASE DEGENATRON_GAMES_DEFENDER
|
|
sDegenatronGamesData.sTelemetry.gameType = HASH("ARCADE_CABINET_CH_DEFENDER_OF_THE_FAITH")
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_MONKEY
|
|
sDegenatronGamesData.sTelemetry.gameType = HASH("ARCADE_CABINET_CH_MONKEYS_PARADISE")
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_PENETRATOR
|
|
sDegenatronGamesData.sTelemetry.gameType = HASH("ARCADE_CABINET_CH_PENETRATOR")
|
|
BREAK
|
|
ENDSWITCH
|
|
sDegenatronGamesData.sTelemetry.kills = 0
|
|
sDegenatronGamesData.sTelemetry.level = 0
|
|
sDegenatronGamesData.sTelemetry.matchId = -1
|
|
sDegenatronGamesData.sTelemetry.numPlayers = 1
|
|
sDegenatronGamesData.sTelemetry.powerUps = 0
|
|
sDegenatronGamesData.sTelemetry.reward = 0
|
|
sDegenatronGamesData.sTelemetry.score = 0
|
|
sDegenatronGamesData.sTelemetry.timePlayed = GET_GAME_TIMER()
|
|
sDegenatronGamesData.bTelemetryInit = TRUE
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_SEND_TELEMETRY()
|
|
IF sDegenatronGamesData.bTelemetryInit
|
|
sDegenatronGamesData.sTelemetry.timePlayed = GET_GAME_TIMER() - sDegenatronGamesData.sTelemetry.timePlayed
|
|
sDegenatronGamesData.sTelemetry.challenges = ENUM_TO_INT(sDegenatronGamesData.eChallengeFlags)
|
|
IF PLAYER_ID() != INVALID_PLAYER_INDEX()
|
|
SWITCH GET_SIMPLE_INTERIOR_TYPE_LOCAL_PLAYER_IS_IN()
|
|
CASE SIMPLE_INTERIOR_TYPE_ARCADE
|
|
sDegenatronGamesData.sTelemetry.location = HASH("SIMPLE_INTERIOR_TYPE_ARCADE")
|
|
BREAK
|
|
CASE SIMPLE_INTERIOR_TYPE_AUTO_SHOP
|
|
sDegenatronGamesData.sTelemetry.location = HASH("SIMPLE_INTERIOR_TYPE_AUTO_SHOP")
|
|
BREAK
|
|
|
|
#IF FEATURE_FIXER
|
|
CASE SIMPLE_INTERIOR_TYPE_FIXER_HQ
|
|
sDegenatronGamesData.sTelemetry.location = HASH("SIMPLE_INTERIOR_TYPE_FIXER_HQ")
|
|
BREAK
|
|
#ENDIF
|
|
|
|
DEFAULT
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] [DEGENATRON_GAMES_SEND_TELEMETRY] not in valid arcade location, setting sDegenatronGamesData.sTelemetry.location = 0")
|
|
sDegenatronGamesData.sTelemetry.location = 0
|
|
BREAK
|
|
ENDSWITCH
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] [DEGENATRON_GAMES_SEND_TELEMETRY] Invalid Player ID, setting sDegenatronGamesData.sTelemetry.location = 0")
|
|
sDegenatronGamesData.sTelemetry.location = 0
|
|
ENDIF
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_SEND_TELEMETRY")
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] challenges ",sDegenatronGamesData.sTelemetry.challenges)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] gameType ",sDegenatronGamesData.sTelemetry.gameType)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] kills ",sDegenatronGamesData.sTelemetry.kills)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] level ",sDegenatronGamesData.sTelemetry.level)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] matchId ",sDegenatronGamesData.sTelemetry.matchId)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] numPlayers ",sDegenatronGamesData.sTelemetry.numPlayers)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] powerUps ",sDegenatronGamesData.sTelemetry.powerUps)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] reward ",sDegenatronGamesData.sTelemetry.reward)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] score ",sDegenatronGamesData.sTelemetry.score)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] timePlayed ",sDegenatronGamesData.sTelemetry.timePlayed)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] timePlayed ",sDegenatronGamesData.sTelemetry.location)
|
|
|
|
PLAYSTATS_ARCADE_CABINET(sDegenatronGamesData.sTelemetry)
|
|
|
|
sDegenatronGamesData.bTelemetryInit = FALSE
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC CASINO_ARCADE_GAME DEGENATRON_GAMES_GET_CASINO_ARCADE_GAME()
|
|
SWITCH sDegenatronGamesData.eGame
|
|
CASE DEGENATRON_GAMES_DEFENDER
|
|
RETURN CASINO_ARCADE_GAME_DEGENATRON_DEFENDER
|
|
CASE DEGENATRON_GAMES_MONKEY
|
|
RETURN CASINO_ARCADE_GAME_DEGENATRON_MONKEY
|
|
CASE DEGENATRON_GAMES_PENETRATOR
|
|
RETURN CASINO_ARCADE_GAME_DEGENATRON_PENETRATOR
|
|
ENDSWITCH
|
|
RETURN CASINO_ARCADE_GAME_DEGENATRON_DEFENDER
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Updates the values used for animating sprite sequences
|
|
PROC DEGENATRON_GAMES_UPDATE_ANIM_FRAMES()
|
|
|
|
//Slow anim update
|
|
sDegenatronGamesData.iSlowFrameTimeCounter += ROUND(GET_FRAME_TIME() * 1000)
|
|
sDegenatronGamesData.iSlowUpdateFrames = FLOOR(sDegenatronGamesData.iSlowFrameTimeCounter / cfDEGENATRON_GAMES_SLOW_ANIM_FRAME_TIME)
|
|
sDegenatronGamesData.iSlowFrameTimeCounter -= ROUND(cfDEGENATRON_GAMES_SLOW_ANIM_FRAME_TIME * sDegenatronGamesData.iSlowUpdateFrames)
|
|
|
|
//Default anim update
|
|
sDegenatronGamesData.iDefaultFrameTimeCounter += ROUND(GET_FRAME_TIME() * 1000)
|
|
sDegenatronGamesData.iDefaultUpdateFrames = FLOOR(sDegenatronGamesData.iDefaultFrameTimeCounter / cfDEGENATRON_GAMES_DEFAULT_ANIM_FRAME_TIME)
|
|
sDegenatronGamesData.iDefaultFrameTimeCounter -= ROUND(cfDEGENATRON_GAMES_DEFAULT_ANIM_FRAME_TIME * sDegenatronGamesData.iDefaultUpdateFrames)
|
|
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_MAINTAIN_GLITCH
|
|
sDegenatronGamesData.iMachineBashed = BOOL_TO_INT( IS_ARCADE_CABINET_GLITCHED() ) #IF IS_DEBUG_BUILD + BOOL_TO_INT( sDegenatronGamesData.bDebugGlitchOverride )*2 #ENDIF
|
|
|
|
IF sDegenatronGamesData.iMachineBashed = 0
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF sDegenatronGamesData.iMachineBashed = 1
|
|
IF NOT sDegenatronGamesData.bGlitchCrazy
|
|
IF sDegenatronGamesData.iGlitchTime = -HIGHEST_INT
|
|
OR sDegenatronGamesData.iGlitchTime-5000 < sDegenatronGamesData.iGameTimer AND sDegenatronGamesData.iGlitchCounter = 1
|
|
OR sDegenatronGamesData.iGlitchTime-3500 < sDegenatronGamesData.iGameTimer AND sDegenatronGamesData.iGlitchCounter = 2
|
|
OR sDegenatronGamesData.iGlitchTime-1500 < sDegenatronGamesData.iGameTimer AND sDegenatronGamesData.iGlitchCounter = 3
|
|
IF sDegenatronGamesData.iGlitchTime = -HIGHEST_INT
|
|
sDegenatronGamesData.iGlitchTime = sDegenatronGamesData.iGameTimer + GET_RANDOM_INT_IN_RANGE(ciDEGENATRON_GAMES_GLITCH_CALM_TIME_MIN,ciDEGENATRON_GAMES_GLITCH_CALM_TIME_MAX)
|
|
ENDIF
|
|
sDegenatronGamesData.fNoise = GET_RANDOM_FLOAT_IN_RANGE(2.0,8.0)
|
|
sDegenatronGamesData.fYbugA = GET_RANDOM_FLOAT_IN_RANGE(-65.00,65.0)
|
|
sDegenatronGamesData.fYbugB = GET_RANDOM_FLOAT_IN_RANGE(-0.05,0.05)
|
|
sDegenatronGamesData.fYbugC = GET_RANDOM_FLOAT_IN_RANGE(-0.05,0.05)
|
|
sDegenatronGamesData.fAberrationTime = (BOOL_TO_INT(GET_RANDOM_BOOL())*2-1)*GET_RANDOM_FLOAT_IN_RANGE(500.00,1000.00)
|
|
sDegenatronGamesData.fAberrationNoiseMultiplier = (BOOL_TO_INT(GET_RANDOM_BOOL())*2-1)*GET_RANDOM_FLOAT_IN_RANGE(3.0,8.0)
|
|
sDegenatronGamesData.fAberrationNoise = GET_RANDOM_FLOAT_IN_RANGE(2.0,4.0)
|
|
sDegenatronGamesData.fAberrationSeparation = (BOOL_TO_INT(GET_RANDOM_BOOL())*2-1)*GET_RANDOM_FLOAT_IN_RANGE(2.0,10.0)
|
|
sDegenatronGamesData.fAberrationYNegative = TO_FLOAT(GET_RANDOM_INT_IN_RANGE(0,3)-1)
|
|
sDegenatronGamesData.fAberrationXNegative = TO_FLOAT(GET_RANDOM_INT_IN_RANGE(0,3)-1)
|
|
sDegenatronGamesData.iGlitchCounter++
|
|
ENDIF
|
|
IF sDegenatronGamesData.iGlitchTime < sDegenatronGamesData.iGameTimer
|
|
sDegenatronGamesData.iGlitchTime = -HIGHEST_INT
|
|
sDegenatronGamesData.bGlitchCrazy = TRUE
|
|
sDegenatronGamesData.iGlitchCounter = 0
|
|
ENDIF
|
|
ELSE
|
|
IF sDegenatronGamesData.iGlitchTime = -HIGHEST_INT
|
|
sDegenatronGamesData.iGlitchTime = sDegenatronGamesData.iGameTimer + GET_RANDOM_INT_IN_RANGE(ciDEGENATRON_GAMES_GLITCH_CRAZY_TIME_MIN,ciDEGENATRON_GAMES_GLITCH_CRAZY_TIME_MAX)
|
|
sDegenatronGamesData.fNoise = GET_RANDOM_FLOAT_IN_RANGE(3.0,5.0)
|
|
sDegenatronGamesData.fYbugA = GET_RANDOM_FLOAT_IN_RANGE(-5.0,5.0)
|
|
sDegenatronGamesData.fYbugB = GET_RANDOM_FLOAT_IN_RANGE(0.05,0.2)
|
|
sDegenatronGamesData.fYbugC = GET_RANDOM_FLOAT_IN_RANGE(0.5,1.2)
|
|
|
|
sDegenatronGamesData.fAberrationTime = (BOOL_TO_INT(GET_RANDOM_BOOL())*2-1)*GET_RANDOM_FLOAT_IN_RANGE(500.00,1000.00)
|
|
sDegenatronGamesData.fAberrationNoiseMultiplier = (BOOL_TO_INT(GET_RANDOM_BOOL())*2-1)*GET_RANDOM_FLOAT_IN_RANGE(3.0,8.0)
|
|
sDegenatronGamesData.fAberrationSeparation = (BOOL_TO_INT(GET_RANDOM_BOOL())*2-1)*GET_RANDOM_FLOAT_IN_RANGE(2.0,10.0)
|
|
sDegenatronGamesData.fAberrationNoise = GET_RANDOM_FLOAT_IN_RANGE(2.0,4.0)
|
|
sDegenatronGamesData.fAberrationYNegative = TO_FLOAT(GET_RANDOM_INT_IN_RANGE(0,3)-1)
|
|
sDegenatronGamesData.fAberrationXNegative = TO_FLOAT(GET_RANDOM_INT_IN_RANGE(0,3)-1)
|
|
ENDIF
|
|
IF sDegenatronGamesData.iGlitchTime < sDegenatronGamesData.iGameTimer
|
|
sDegenatronGamesData.iGlitchTime = -HIGHEST_INT
|
|
sDegenatronGamesData.bGlitchCrazy = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
#IF IS_DEBUG_BUILD
|
|
ELIF sDegenatronGamesData.iMachineBashed > 1
|
|
sDegenatronGamesData.fNoise = sDegenatronGamesData.fDebugNoise
|
|
sDegenatronGamesData.fYbugA = sDegenatronGamesData.fDebugYbugA
|
|
sDegenatronGamesData.fYbugB = sDegenatronGamesData.fDebugYbugB
|
|
sDegenatronGamesData.fYbugC = sDegenatronGamesData.fDebugYbugC
|
|
|
|
sDegenatronGamesData.fAberrationTime = sDegenatronGamesData.fDebugAberrationTime
|
|
sDegenatronGamesData.fAberrationNoise = sDegenatronGamesData.fDebugAberrationNoise
|
|
sDegenatronGamesData.fAberrationNoiseMultiplier = sDegenatronGamesData.fDebugAberrationNoiseMultiplier
|
|
sDegenatronGamesData.fAberrationSeparation = sDegenatronGamesData.fDebugAberrationSeparation
|
|
sDegenatronGamesData.fAberrationFlooring = sDegenatronGamesData.fDebugAberrationFlooring
|
|
#ENDIF
|
|
ENDIF
|
|
sDegenatronGamesData.yGlitch = YBUG()
|
|
sDegenatronGamesData.bShouldDoHeavyShake = sDegenatronGamesData.bGlitchCrazy
|
|
sDegenatronGamesData.bShouldDoMidShake = NOT sDegenatronGamesData.bGlitchCrazy AND ABSF(sDegenatronGamesData.yGlitch) < 0.04 AND ABSF(sDegenatronGamesData.yGlitch) > 0.01
|
|
sDegenatronGamesData.bShouldDoSoftShake = NOT sDegenatronGamesData.bGlitchCrazy AND ABSF(sDegenatronGamesData.yGlitch) > 0.04
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_SET_CLIENT_STATE(DEGENATRON_GAMES_CLIENT_STATE eNewState)
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_SET_CLIENT_STATE - State changed from ",
|
|
DEGENATRON_GAMES_DEBUG_GET_DEGENATRON_GAMES_CLIENT_STATE_AS_STRING(sDegenatronGamesData.eClientState), " to ", DEGENATRON_GAMES_DEBUG_GET_DEGENATRON_GAMES_CLIENT_STATE_AS_STRING(eNewState))
|
|
|
|
sDegenatronGamesData.eClientState = eNewState
|
|
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_CLEANUP_ASSETS()
|
|
DEGENATRON_GAMES_CLEANUP_SPRITE_DICT("MPArcadeDegenatron")
|
|
SWITCH sDegenatronGamesData.eGame
|
|
CASE DEGENATRON_GAMES_DEFENDER
|
|
DEGENATRON_GAMES_CLEANUP_SPRITE_DICT("MPArcadeDegenatronFacadeDoF")
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_MONKEY
|
|
DEGENATRON_GAMES_CLEANUP_SPRITE_DICT("MPArcadeDegenatronFacadeMonkey")
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_PENETRATOR
|
|
DEGENATRON_GAMES_CLEANUP_SPRITE_DICT("MPArcadeDegenatronFacadePenetrator")
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
DEGENATRON_GAMES_CLEANUP_SPRITE_DICT("MPArcadeDegenatronCharacters")
|
|
ARCADE_GAMES_POSTFX_CLEANUP_ASSETS()
|
|
ENDPROC
|
|
|
|
|
|
PROC DEGENATRON_GAMES_CLEANUP_AND_EXIT_CLIENT()
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] - DEGENATRON_GAMES_CLEANUP_AND_EXIT_CLIENT - Cleaning up and terminating the script")
|
|
|
|
DEGENATRON_GAMES_SEND_TELEMETRY()
|
|
|
|
ARCADE_CABINET_COMMON_CLEANUP()
|
|
|
|
g_bIsPlayerPlayingDegenatron = FALSE
|
|
|
|
// Release any asset preloaded
|
|
DEGENATRON_GAMES_CLEAN_UP()
|
|
DEGENATRON_GAMES_CLEANUP_ASSETS()
|
|
ARCADE_GAMES_HELP_TEXT_CLEAR()
|
|
ARCADE_GAMES_AUDIO_CLEAN_UP()
|
|
|
|
sDGAnimationData.sArcadeCabinetAnimEvent.bLoopAnim = FALSE
|
|
PLAY_ARCADE_CABINET_ANIMATION(sDGAnimationData.sArcadeCabinetAnimEvent, ARCADE_CABINET_ANIM_CLIP_EXIT)
|
|
|
|
TERMINATE_THIS_MULTIPLAYER_THREAD_NO_ARGS()
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_CHALLENGE_INIT
|
|
IF GET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_KEEPFAITH)
|
|
SET_BITMASK_ENUM_AS_ENUM(sDegenatronGamesData.eChallengeFlags, DEGENATRON_GAMES_CHALLENGE_BIT_KEEP_THE_FAITH)
|
|
ENDIF
|
|
IF GET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_AQUAAPE)
|
|
SET_BITMASK_ENUM_AS_ENUM(sDegenatronGamesData.eChallengeFlags, DEGENATRON_GAMES_CHALLENGE_BIT_AQUAAPE)
|
|
ENDIF
|
|
IF GET_MP_INT_CHARACTER_AWARD(MP_AWARD_MASTERFUL) >= 40000
|
|
SET_BITMASK_ENUM_AS_ENUM(sDegenatronGamesData.eChallengeFlags, DEGENATRON_GAMES_CHALLENGE_BIT_MASTERFUL_PLATINUM)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_SOUND_PRE_GAME()
|
|
FLOAT fMachineDamaged = 0.2
|
|
IF IS_ARCADE_CABINET_GLITCHED()
|
|
fMachineDamaged = 1.0
|
|
ENDIF
|
|
INT iSound
|
|
FOR iSound = ARCADE_GAMES_SOUND_DEGENATRON_BOOT_SCREEN TO ARCADE_GAMES_SOUND_DEGENATRON_MUSIC_MENU_BACK
|
|
ARCADE_GAMES_SOUND_SET_VARIABLE(INT_TO_ENUM(ARCADE_GAMES_SOUND,iSound),"MachineDamage",fMachineDamaged)
|
|
ENDFOR
|
|
ARCADE_GAMES_SOUND_SET_VARIABLE(ARCADE_GAMES_SOUND_DEGENATRON_MUSIC_MAIN_LOOP_UW,"MachineDamage",fMachineDamaged)
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_PROCESS_CLIENT_STATE_INIT()
|
|
|
|
ARCADE_CABINET_COMMON_INITIALIZATION()
|
|
|
|
g_bIsPlayerPlayingDegenatron = TRUE
|
|
PRINTLN("[DEGENATRON_GAMES] [DEGENATRON_GAMES_PROCESS_CLIENT_STATE_INIT] - MPGlobalsAmbience.iDegenatronGame ", MPGlobalsAmbience.iDegenatronGame)
|
|
sDegenatronGamesData.eGame = INT_TO_ENUM(DEGENATRON_GAMES, MPGlobalsAmbience.iDegenatronGame)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_PROCESS_CLIENT_STATE_PLAYING - sDegenatronGamesData.iMachineBashed ",sDegenatronGamesData.iMachineBashed)
|
|
|
|
sDegenatronGamesData.sControlTimer.control = FRONTEND_CONTROL
|
|
sDegenatronGamesData.sControlTimer.action = INPUT_FRONTEND_CANCEL
|
|
sDegenatronGamesData.vScreenSpace = INIT_VECTOR_2D(cfDEGENATRON_GAMES_SCREEN_WIDTH,cfDEGENATRON_GAMES_SCREEN_HEIGHT)
|
|
|
|
DEGENATRON_GAMES_INIT_COLOUR_STRUCTS()
|
|
ARCADE_GAMES_POSTFX_INIT(DEGENATRON_GAMES_GET_CASINO_ARCADE_GAME())
|
|
ARCADE_GAMES_SOUND_INIT(DEGENATRON_GAMES_GET_CASINO_ARCADE_GAME())
|
|
|
|
DEGENATRON_GAMES_SET_CLIENT_STATE(DEGENATRON_GAMES_CLIENT_STATE_REQUESTING_ASSETS)
|
|
|
|
// ARCADE_GAMES_AUDIO_SCENE_START(ARCADE_GAMES_AUDIO_SCENE_MACHINE_IN_USE)
|
|
ENDPROC
|
|
|
|
FUNC BOOL DEGENATRON_GAMES_REQUESTING_ASSETS()
|
|
BOOL bLoaded = TRUE
|
|
bLoaded = bLoaded AND DEGENATRON_GAMES_PRELOAD_SPRITE_DICT("MPArcadeDegenatron")
|
|
SWITCH sDegenatronGamesData.eGame
|
|
CASE DEGENATRON_GAMES_DEFENDER
|
|
bLoaded = bLoaded AND DEGENATRON_GAMES_PRELOAD_SPRITE_DICT("MPArcadeDegenatronFacadeDoF")
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_MONKEY
|
|
bLoaded = bLoaded AND DEGENATRON_GAMES_PRELOAD_SPRITE_DICT("MPArcadeDegenatronFacadeMonkey")
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_PENETRATOR
|
|
bLoaded = bLoaded AND DEGENATRON_GAMES_PRELOAD_SPRITE_DICT("MPArcadeDegenatronFacadePenetrator")
|
|
BREAK
|
|
ENDSWITCH
|
|
//#IF IS_DEBUG_BUILD
|
|
// IF NOT bLoaded
|
|
// sDegenatronGamesData.bDebugDrawFacade = bLoaded
|
|
// bLoaded = TRUE
|
|
// ENDIF
|
|
//#ENDIF
|
|
bLoaded = bLoaded AND DEGENATRON_GAMES_PRELOAD_SPRITE_DICT("MPArcadeDegenatronCharacters")
|
|
bLoaded = bLoaded AND ARCADE_GAMES_POSTFX_REQUESTING_ASSETS()
|
|
RETURN bLoaded
|
|
ENDFUNC
|
|
|
|
FUNC BOOL DEGENATRON_GAMES_HAVE_ALL_ASSETS_LOADED()
|
|
IF NOT DEGENATRON_GAMES_REQUESTING_ASSETS()
|
|
RETURN FALSE
|
|
ENDIF
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
PROC DEGENATRON_GAMES_PROCESS_CLIENT_STATE_REQUESTING_ASSETS()
|
|
IF NOT DEGENATRON_GAMES_HAVE_ALL_ASSETS_LOADED()
|
|
PRINTLN("[DEGENATRON_GAMES] [DEGENATRON_GAMES_PROCESS_CLIENT_STATE_REQUESTING_ASSETS] - Loading assets...")
|
|
EXIT
|
|
ENDIF
|
|
|
|
//Start the intro movie
|
|
// DG_START_MOVIE(sDegenatronGamesData.bmIDDegenatronIntro, "_1992_DegenatronLogo_720_auto")
|
|
DG_START_MOVIE(sDegenatronGamesData.bmIDDegenatronIntro, "Degenatron_80s")
|
|
|
|
// Preload any asset needed
|
|
DEGENATRON_GAMES_SET_CLIENT_STATE(DEGENATRON_GAMES_CLIENT_STATE_INTRO)
|
|
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_PROCESS_CLIENT_STATE_INTRO()
|
|
|
|
DEGENATRON_GAMES_DRAW_BACKMASK()
|
|
|
|
//Wait for the intro movie to finish
|
|
BOOL bAberration = (sDegenatronGamesData.iMachineBashed > 0 AND sDegenatronGamesData.iMachineBashed <= 3)
|
|
BOOL bGreenScale = sDegenatronGamesData.bShowFXGreenScale
|
|
BOOL bMovieFinished
|
|
|
|
RGBA_COLOUR_STRUCT color = sDegenatronGamesData.rgbaWhite
|
|
RGBA_COLOUR_STRUCT colorCyan = sDegenatronGamesData.rgbaCyan
|
|
|
|
IF bGreenScale
|
|
color.iR = 0
|
|
color.iG = ROUND(sDegenatronGamesData.rgbaWhite.iR*0.2999 + sDegenatronGamesData.rgbaWhite.iG*0.587 + sDegenatronGamesData.rgbaWhite.iB*0.114)
|
|
color.iB = 0
|
|
color.iA = sDegenatronGamesData.rgbaWhite.iA
|
|
|
|
colorCyan.iR = 0
|
|
colorCyan.iG = ROUND(sDegenatronGamesData.rgbaCyan.iR*0.2999 + sDegenatronGamesData.rgbaCyan.iG*0.587 + sDegenatronGamesData.rgbaCyan.iB*0.114)
|
|
colorCyan.iB = 0
|
|
colorCyan.iA = sDegenatronGamesData.rgbaCyan.iA
|
|
ENDIF
|
|
|
|
FLOAT xPos = cfSCREEN_CENTER
|
|
FLOAT yPos = cfSCREEN_CENTER
|
|
IF NOT bAberration
|
|
bMovieFinished = DG_DRAW_MOVIE_WITH_POS(sDegenatronGamesData.bmIDDegenatronIntro,DEGENATRON_GAMES_SCREEN_HEIGHT_RATIO()*1.1,DEGENATRON_GAMES_SCREEN_HEIGHT_RATIO()*1.1,xPos,yPos,color)
|
|
ELSE
|
|
yPos = MOD(cfSCREEN_CENTER+sDegenatronGamesData.yGlitch, 1.0)
|
|
|
|
FLOAT fRatio
|
|
fRatio = (sDegenatronGamesData.iGameTimer % sDegenatronGamesData.fAberrationTime) / sDegenatronGamesData.fAberrationTime
|
|
fRatio = RAND(fRatio,sDegenatronGamesData.fAberrationNoise)*sDegenatronGamesData.fAberrationNoiseMultiplier
|
|
fRatio = FLOOR(fRatio*sDegenatronGamesData.fAberrationFlooring)/sDegenatronGamesData.fAberrationFlooring
|
|
fRatio *= sDegenatronGamesData.fAberrationXNegative
|
|
FLOAT fRatioY
|
|
fRatioY = (sDegenatronGamesData.iGameTimer % sDegenatronGamesData.fAberrationTime) / sDegenatronGamesData.fAberrationTime
|
|
fRatioY = RAND(fRatioY,sDegenatronGamesData.fAberrationNoise)*sDegenatronGamesData.fAberrationNoiseMultiplier
|
|
fRatioY = FLOOR(fRatioY*sDegenatronGamesData.fAberrationFlooring)/sDegenatronGamesData.fAberrationFlooring
|
|
fRatioY *= sDegenatronGamesData.fAberrationYNegative
|
|
RGBA_COLOUR_STRUCT r = color
|
|
r.iA = sDegenatronGamesData.rgbaWhite.iA/4*3
|
|
RGBA_COLOUR_STRUCT b = colorCyan
|
|
b.iA = colorCyan.iA/2
|
|
|
|
xPos = cfSCREEN_CENTER - sDegenatronGamesData.fAberrationSeparation/cfBASE_SCREEN_HEIGHT*fRatio
|
|
bMovieFinished = DG_DRAW_MOVIE_WITH_POS(sDegenatronGamesData.bmIDDegenatronIntro,DEGENATRON_GAMES_SCREEN_HEIGHT_RATIO()*1.1,DEGENATRON_GAMES_SCREEN_HEIGHT_RATIO()*1.1,xPos,yPos,b)
|
|
xPos = cfSCREEN_CENTER + sDegenatronGamesData.fAberrationSeparation/cfBASE_SCREEN_HEIGHT*fRatio
|
|
yPos = yPos + sDegenatronGamesData.fAberrationSeparation/cfBASE_SCREEN_HEIGHT*fRatioY
|
|
bMovieFinished = DG_DRAW_MOVIE_WITH_POS(sDegenatronGamesData.bmIDDegenatronIntro,DEGENATRON_GAMES_SCREEN_HEIGHT_RATIO()*1.1,DEGENATRON_GAMES_SCREEN_HEIGHT_RATIO()*1.1,xPos,yPos,r)
|
|
ENDIF
|
|
|
|
ARCADE_GAMES_POSTFX_DRAW()
|
|
DEGENATRON_GAMES_DRAW_FACADE()
|
|
IF NOT bMovieFinished
|
|
EXIT
|
|
ENDIF
|
|
DEGENATRON_GAMES_SET_CLIENT_STATE(DEGENATRON_GAMES_CLIENT_STATE_PLAYING)
|
|
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_UPDATE_GAME_STATE()
|
|
SWITCH sDegenatronGamesData.sGameData.eGameState
|
|
CASE DEGENATRON_GAMES_STATE_GAME_INIT
|
|
sDegenatronGamesData.sGameData.eGameState = DEGENATRON_GAMES_STATE_GAME_MENU
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_MENU
|
|
IF sDegenatronGamesData.bButtonPressed
|
|
IF sDegenatronGamesData.iMenuSelected = 0
|
|
sDegenatronGamesData.sGameData.eGameState = DEGENATRON_GAMES_STATE_GAME_INTRO
|
|
ELSE
|
|
IF IS_ACCOUNT_OVER_17_FOR_UGC()
|
|
sDegenatronGamesData.sGameData.eGameState = DEGENATRON_GAMES_STATE_GAME_LEADERBOARD
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_INTRO
|
|
IF sDegenatronGamesData.bButtonPressed
|
|
sDegenatronGamesData.sGameData.eGameState = DEGENATRON_GAMES_STATE_GAME_UPDATE
|
|
ENDIF
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_UPDATE
|
|
SWITCH sDegenatronGamesData.eGame
|
|
CASE DEGENATRON_GAMES_DEFENDER
|
|
IF sDGDefenderData.sLevelData.eLevelState = DG_DEFENDER_STATE_LEVEL_END
|
|
sDegenatronGamesData.sGameData.eGameState = DEGENATRON_GAMES_STATE_GAME_SCORE
|
|
ENDIF
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_MONKEY
|
|
IF sDGMonkeyData.sLevelData.eLevelState = DG_MONKEY_STATE_LEVEL_END
|
|
sDegenatronGamesData.sGameData.eGameState = DEGENATRON_GAMES_STATE_GAME_SCORE
|
|
ENDIF
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_PENETRATOR
|
|
IF sDGPenetratorData.sLevelData.eLevelState = DG_PENETRATOR_STATE_LEVEL_END
|
|
sDegenatronGamesData.sGameData.eGameState = DEGENATRON_GAMES_STATE_GAME_SCORE
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_SCORE
|
|
IF sDegenatronGamesData.bButtonPressed
|
|
IF IS_ACCOUNT_OVER_17_FOR_UGC()
|
|
sDegenatronGamesData.sGameData.eGameState = DEGENATRON_GAMES_STATE_GAME_LEADERBOARD
|
|
ELSE
|
|
sDegenatronGamesData.sGameData.eGameState = DEGENATRON_GAMES_STATE_GAME_END
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_LEADERBOARD
|
|
IF sDegenatronGamesData.bBackButtonPressed AND NOT sAGLeaderboardData.bEditing
|
|
ARCADE_GAMES_SOUND_PLAY(ARCADE_GAMES_SOUND_DEGENATRON_MUSIC_MENU_BACK)
|
|
sDegenatronGamesData.sGameData.eGameState = DEGENATRON_GAMES_STATE_GAME_END
|
|
ENDIF
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_END
|
|
sDegenatronGamesData.sGameData.eGameState = DEGENATRON_GAMES_STATE_GAME_INIT
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_GAME_INIT()
|
|
sDegenatronGamesData.sGameData.iLevel = 1
|
|
sDegenatronGamesData.sGameData.iLifes = 3
|
|
sDegenatronGamesData.sGameData.iScore = 0
|
|
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_UPDATE_CONTROL_FEEDBACK()
|
|
IF sDegenatronGamesData.bShouldDoHeavyShake
|
|
SET_CONTROL_SHAKE(FRONTEND_CONTROL, 500, sDegenatronGamesData.iFreqHeavyShake)
|
|
sDegenatronGamesData.iFeedBackTime = NATIVE_TO_INT(GET_NETWORK_TIME()) + 1000
|
|
sDegenatronGamesData.rgbaFeedback = sDegenatronGamesData.rgbaRed
|
|
ELIF sDegenatronGamesData.bShouldDoMidShake
|
|
SET_CONTROL_SHAKE(FRONTEND_CONTROL, 250, sDegenatronGamesData.iFreqMidShake)
|
|
sDegenatronGamesData.iFeedBackTime = NATIVE_TO_INT(GET_NETWORK_TIME()) + 1000
|
|
sDegenatronGamesData.rgbaFeedback = sDegenatronGamesData.rgbaGreen
|
|
ELIF sDegenatronGamesData.bShouldDoSoftShake
|
|
SET_CONTROL_SHAKE(FRONTEND_CONTROL, 1, sDegenatronGamesData.iFreqSoftShake)
|
|
ENDIF
|
|
sDegenatronGamesData.bShouldDoHeavyShake = FALSE
|
|
sDegenatronGamesData.bShouldDoMidShake = FALSE
|
|
|
|
IF sDegenatronGamesData.iFeedBackTime > NATIVE_TO_INT(GET_NETWORK_TIME())
|
|
BOOL bOn = INT_TO_BOOL(((sDegenatronGamesData.iFeedBackTime - NATIVE_TO_INT(GET_NETWORK_TIME()))/250) % 2)
|
|
IF bOn
|
|
SET_CONTROL_LIGHT_EFFECT_COLOR(FRONTEND_CONTROL,sDegenatronGamesData.rgbaFeedback.iR,sDegenatronGamesData.rgbaFeedback.iG,sDegenatronGamesData.rgbaFeedback.iB)
|
|
ELSE
|
|
CLEAR_CONTROL_LIGHT_EFFECT(FRONTEND_CONTROL)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_CLIENT_STATE_PLAYING_UPDATE_AUDIO
|
|
SWITCH sDegenatronGamesData.sGameData.eGameState
|
|
CASE DEGENATRON_GAMES_STATE_GAME_INIT
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_MENU
|
|
ARCADE_GAMES_SOUND_PLAY_LOOP(ARCADE_GAMES_SOUND_DEGENATRON_MUSIC_MENU_LOOP)
|
|
IF sDegenatronGamesData.sControlsInput.iLeftAxisYTick != 0
|
|
ARCADE_GAMES_SOUND_PLAY(ARCADE_GAMES_SOUND_DEGENATRON_MUSIC_MENU_NAV)
|
|
ENDIF
|
|
IF sDegenatronGamesData.bButtonPressed
|
|
ARCADE_GAMES_SOUND_PLAY(ARCADE_GAMES_SOUND_DEGENATRON_MUSIC_MENU_SELECT)
|
|
ENDIF
|
|
|
|
ARCADE_GAMES_AUDIO_SCENE_START(ARCADE_GAMES_AUDIO_SCENE_DEGENATRON_IN_MENU)
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_INTRO
|
|
ARCADE_GAMES_SOUND_STOP(ARCADE_GAMES_SOUND_DEGENATRON_MUSIC_MENU_LOOP)
|
|
ARCADE_GAMES_SOUND_PLAY_LOOP(ARCADE_GAMES_SOUND_DEGENATRON_MUSIC_MAIN_LOOP)
|
|
IF sDegenatronGamesData.bButtonPressed
|
|
ARCADE_GAMES_SOUND_PLAY(ARCADE_GAMES_SOUND_DEGENATRON_MUSIC_MENU_SELECT)
|
|
ENDIF
|
|
|
|
ARCADE_GAMES_AUDIO_SCENE_START(ARCADE_GAMES_AUDIO_SCENE_DEGENATRON_IN_MENU)
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_UPDATE
|
|
|
|
ARCADE_GAMES_AUDIO_SCENE_STOP(ARCADE_GAMES_AUDIO_SCENE_DEGENATRON_IN_MENU)
|
|
ARCADE_GAMES_AUDIO_SCENE_START(ARCADE_GAMES_AUDIO_SCENE_DEGENATRON_IN_GAMEPLAY)
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_SCORE
|
|
ARCADE_GAMES_SOUND_STOP(ARCADE_GAMES_SOUND_DEGENATRON_MUSIC_MAIN_LOOP)
|
|
ARCADE_GAMES_SOUND_PLAY_LOOP(ARCADE_GAMES_SOUND_DEGENATRON_MUSIC_MENU_LOOP)
|
|
IF sDegenatronGamesData.bButtonPressed
|
|
ARCADE_GAMES_SOUND_PLAY(ARCADE_GAMES_SOUND_DEGENATRON_MUSIC_MENU_SELECT)
|
|
ENDIF
|
|
|
|
ARCADE_GAMES_AUDIO_SCENE_STOP(ARCADE_GAMES_AUDIO_SCENE_DEGENATRON_IN_GAMEPLAY)
|
|
ARCADE_GAMES_AUDIO_SCENE_START(ARCADE_GAMES_AUDIO_SCENE_DEGENATRON_IN_MENU)
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_LEADERBOARD
|
|
IF sDegenatronGamesData.bButtonPressed AND NOT sAGLeaderboardData.bEditing
|
|
ARCADE_GAMES_SOUND_PLAY(ARCADE_GAMES_SOUND_DEGENATRON_MUSIC_MENU_BACK)
|
|
ENDIF
|
|
|
|
ARCADE_GAMES_AUDIO_SCENE_START(ARCADE_GAMES_AUDIO_SCENE_DEGENATRON_IN_MENU)
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_END
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_CLIENT_STATE_PLAYING_UPDATE_GAME
|
|
SWITCH sDegenatronGamesData.sGameData.eGameState
|
|
CASE DEGENATRON_GAMES_STATE_GAME_INIT
|
|
DEGENATRON_GAMES_GAME_INIT()
|
|
DEGENATRON_GAMES_ANIMATION_SET_STATE(DEGENATRON_GAMES_ANIMATION_STATE_IDLE)
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_MENU
|
|
DEGENATRON_GAMES_MENU()
|
|
DEGENATRON_GAMES_ANIMATION_SET_STATE(DEGENATRON_GAMES_ANIMATION_STATE_IDLE)
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_INTRO
|
|
DEGENATRON_GAMES_INTRO()
|
|
DEGENATRON_GAMES_INIT_TELEMETRY()
|
|
DEGENATRON_GAMES_ANIMATION_SET_STATE(DEGENATRON_GAMES_ANIMATION_STATE_IDLE)
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_UPDATE
|
|
SWITCH sDegenatronGamesData.eGame
|
|
CASE DEGENATRON_GAMES_DEFENDER
|
|
DG_DEFENDER_CLIENT_STATE_UPDATE()
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_MONKEY
|
|
DG_MONKEY_CLIENT_STATE_UPDATE()
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_PENETRATOR
|
|
DG_PENETRATOR_CLIENT_STATE_UPDATE()
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_SCORE
|
|
DEGENATRON_GAMES_SCORE()
|
|
DEGENATRON_GAMES_SEND_TELEMETRY()
|
|
DEGENATRON_GAMES_ANIMATION_SET_STATE(DEGENATRON_GAMES_ANIMATION_STATE_IDLE)
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_LEADERBOARD
|
|
DEGENATRON_GAMES_LEADERBOARD()
|
|
DEGENATRON_GAMES_ANIMATION_SET_STATE(DEGENATRON_GAMES_ANIMATION_STATE_IDLE)
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_END
|
|
DEGENATRON_GAMES_ANIMATION_SET_STATE(DEGENATRON_GAMES_ANIMATION_STATE_IDLE)
|
|
BREAK
|
|
ENDSWITCH
|
|
DEGENATRON_GAMES_UPDATE_GAME_STATE()
|
|
DEGENATRON_GAMES_UPDATE_CONTROL_FEEDBACK()
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_CLIENT_STATE_PLAYING_MAINTAIN_HELP_TEXT
|
|
|
|
SWITCH sDegenatronGamesData.sGameData.eGameState
|
|
CASE DEGENATRON_GAMES_STATE_GAME_INIT
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_MENU
|
|
ARCADE_GAMES_HELP_TEXT_PRINT_FOREVER(ARCADE_GAMES_HELP_TEXT_ENUM_DEGENATRON_GAME_MENU)
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_INTRO
|
|
ARCADE_GAMES_HELP_TEXT_CLEAR()
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_UPDATE
|
|
SWITCH sDegenatronGamesData.eGame
|
|
CASE DEGENATRON_GAMES_DEFENDER
|
|
IF NOT ARCADE_GAMES_HELP_TEXT_HAS_BEEN_DISPLAYED(ARCADE_GAMES_HELP_TEXT_ENUM_DEGENATRON_DEFENDER_CONTROLS)
|
|
ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_DEGENATRON_DEFENDER_CONTROLS)
|
|
ELSE
|
|
IF NOT ARCADE_GAMES_HELP_TEXT_HAS_BEEN_DISPLAYED(ARCADE_GAMES_HELP_TEXT_ENUM_DEGENATRON_DEFENDER_HELP)
|
|
ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_DEGENATRON_DEFENDER_HELP)
|
|
ELSE
|
|
IF sDegenatronGamesData.sGameData.iObjectives < sDGDefenderData.sLevelData.iObjectivesAmount
|
|
ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_DEGENATRON_DEFENDER_HELP_2)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_MONKEY
|
|
ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_DEGENATRON_MONKEY_CONTROLS)
|
|
IF sDGMonkeyData.sLevelData.iCurrentTree = 20
|
|
IF sDGMonkeyData.sLevelData.iTimeTree = -HIGHEST_INT
|
|
sDGMonkeyData.sLevelData.iTimeTree = NATIVE_TO_INT( GET_NETWORK_TIME() ) + 10000
|
|
ELIF sDGMonkeyData.sLevelData.iTimeTree > NATIVE_TO_INT( GET_NETWORK_TIME() )
|
|
ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_DEGENATRON_MONKEY_HELP)
|
|
ENDIF
|
|
ELSE
|
|
sDGMonkeyData.sLevelData.iTimeTree = -HIGHEST_INT
|
|
ENDIF
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_PENETRATOR
|
|
ARCADE_GAMES_HELP_TEXT_PRINT(ARCADE_GAMES_HELP_TEXT_ENUM_DEGENATRON_PENETRATOR_CONTROLS)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_SCORE
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_LEADERBOARD
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_STATE_GAME_END
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_PROCESS_CLIENT_STATE_PLAYING()
|
|
|
|
sDegenatronGamesData.bButtonPressed = FALSE
|
|
sDegenatronGamesData.bBackButtonPressed = FALSE
|
|
DEGENATRON_GAMES_LEFT_AXIS_INPUT()
|
|
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
OR (IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) AND IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT))
|
|
sDegenatronGamesData.bButtonPressed = TRUE
|
|
ENDIF
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
|
OR (IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) AND IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL))
|
|
sDegenatronGamesData.bBackButtonPressed = TRUE
|
|
ENDIF
|
|
|
|
DEGENATRON_GAMES_CLIENT_STATE_PLAYING_UPDATE_GAME()
|
|
DEGENATRON_GAMES_CLIENT_STATE_PLAYING_DRAW()
|
|
DEGENATRON_GAMES_CLIENT_STATE_PLAYING_UPDATE_AUDIO()
|
|
DEGENATRON_GAMES_CLIENT_STATE_PLAYING_MAINTAIN_HELP_TEXT()
|
|
DEGENATRON_GAMES_ANIMATION_UPDATE()
|
|
#IF IS_DEBUG_BUILD
|
|
IF sDegenatronGamesData.bShowHelp
|
|
__DEGENATRON_GAMES_PRINT_DEBUG_GAME_INFO()
|
|
ENDIF
|
|
#ENDIF
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_PROCESS_CLIENT_STATE_MACHINE()
|
|
|
|
SWITCH sDegenatronGamesData.eClientState
|
|
|
|
CASE DEGENATRON_GAMES_CLIENT_STATE_INIT
|
|
|
|
DEGENATRON_GAMES_PROCESS_CLIENT_STATE_INIT()
|
|
|
|
BREAK
|
|
|
|
CASE DEGENATRON_GAMES_CLIENT_STATE_REQUESTING_ASSETS
|
|
|
|
DEGENATRON_GAMES_PROCESS_CLIENT_STATE_REQUESTING_ASSETS()
|
|
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_CLIENT_STATE_INTRO
|
|
|
|
DEGENATRON_GAMES_PROCESS_CLIENT_STATE_INTRO()
|
|
|
|
BREAK
|
|
|
|
CASE DEGENATRON_GAMES_CLIENT_STATE_PLAYING
|
|
|
|
DEGENATRON_GAMES_PROCESS_CLIENT_STATE_PLAYING()
|
|
|
|
BREAK
|
|
|
|
CASE DEGENATRON_GAMES_CLIENT_STATE_CLEANUP
|
|
|
|
DEGENATRON_GAMES_CLEANUP_AND_EXIT_CLIENT()
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
PROC DEGENATRON_GAMES_DEBUG_SET_PARENT_WIDGET_GROUP(WIDGET_GROUP_ID parentWidgetGroup)
|
|
|
|
sDegenatronGamesData.widgetGroupExample = parentWidgetGroup
|
|
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_DEBUG_CREATE_WIDGETS()
|
|
|
|
IF sDegenatronGamesData.bDebugCreatedWidgets
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF sDegenatronGamesData.widgetGroupExample = NULL
|
|
EXIT
|
|
ENDIF
|
|
|
|
sDegenatronGamesData.widgetGroupExample = GET_ID_OF_TOP_LEVEL_WIDGET_GROUP()
|
|
SET_CURRENT_WIDGET_GROUP(sDegenatronGamesData.widgetGroupExample)
|
|
|
|
ADD_WIDGET_FLOAT_SLIDER("Degenatron Ratio", sDegenatronGamesData.fScaleRatio,0.0,1.0,0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Degenatron Screen Space X", sDegenatronGamesData.vScreenSpace.x,0.0,5000.0,1.0)
|
|
ADD_WIDGET_FLOAT_SLIDER("Degenatron Screen Space Y", sDegenatronGamesData.vScreenSpace.y,0.0,5000.0,1.0)
|
|
ADD_WIDGET_BOOL("Draw", sDegenatronGamesData.bDebugDraw)
|
|
ADD_WIDGET_BOOL("Draw Backmask", sDegenatronGamesData.bDebugDrawBackmask)
|
|
ADD_WIDGET_BOOL("Draw Facade", sDegenatronGamesData.bDebugDrawFacade)
|
|
START_WIDGET_GROUP("Glitch")
|
|
ADD_WIDGET_BOOL("Override Glitch", sDegenatronGamesData.bDebugGlitchOverride)
|
|
ADD_WIDGET_FLOAT_READ_ONLY("Glitch", sDegenatronGamesData.yGlitch)
|
|
ADD_WIDGET_FLOAT_SLIDER("Noise", sDegenatronGamesData.fDebugNoise,-50.0,50.0,0.010)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ybug A", sDegenatronGamesData.fDebugYbugA,-50.0,50.0,0.010)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ybug B", sDegenatronGamesData.fDebugYbugB,-5.0,5.0,0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Ybug C", sDegenatronGamesData.fDebugYbugC,-30.0,30.0,0.01)
|
|
ADD_WIDGET_FLOAT_SLIDER("Aberration Time", sDegenatronGamesData.fDebugAberrationTime,0.0,10000.0,1.0)
|
|
ADD_WIDGET_FLOAT_SLIDER("Aberration Noise", sDegenatronGamesData.fDebugAberrationNoise,-50.0,50.0,0.010)
|
|
ADD_WIDGET_FLOAT_SLIDER("Aberration Mul", sDegenatronGamesData.fDebugAberrationNoiseMultiplier,0.0,30.0,1.0)
|
|
ADD_WIDGET_FLOAT_SLIDER("Aberration Separation", sDegenatronGamesData.fDebugAberrationSeparation,0.0,100.0,1.0)
|
|
ADD_WIDGET_FLOAT_SLIDER("Aberration Flooring", sDegenatronGamesData.fDebugAberrationFlooring,0.0,100.0,1.0)
|
|
ADD_WIDGET_FLOAT_READ_ONLY("Noise", sDegenatronGamesData.fNoise)
|
|
ADD_WIDGET_FLOAT_READ_ONLY("Ybug A", sDegenatronGamesData.fYbugA)
|
|
ADD_WIDGET_FLOAT_READ_ONLY("Ybug B", sDegenatronGamesData.fYbugB)
|
|
ADD_WIDGET_FLOAT_READ_ONLY("Ybug C", sDegenatronGamesData.fYbugC)
|
|
ADD_WIDGET_FLOAT_READ_ONLY("Aberration Time", sDegenatronGamesData.fAberrationTime)
|
|
ADD_WIDGET_FLOAT_READ_ONLY("Aberration Noise", sDegenatronGamesData.fAberrationNoise)
|
|
ADD_WIDGET_FLOAT_READ_ONLY("Aberration Mul", sDegenatronGamesData.fAberrationNoiseMultiplier)
|
|
ADD_WIDGET_FLOAT_READ_ONLY("Aberration Separation", sDegenatronGamesData.fAberrationSeparation)
|
|
ADD_WIDGET_FLOAT_READ_ONLY("Aberration Separation", sDegenatronGamesData.fAberrationFlooring)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Game Data")
|
|
ADD_WIDGET_INT_SLIDER("Level", sDegenatronGamesData.sGameData.iLevel,0,100,1)
|
|
ADD_WIDGET_INT_SLIDER("Lifes", sDegenatronGamesData.sGameData.iLifes,0,100,1)
|
|
ADD_WIDGET_INT_SLIDER("Score", sDegenatronGamesData.sGameData.iScore,0,9999999,50)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
DG_DEFENDER_DEBUG_CREATE_WIDGETS()
|
|
DG_MONKEY_DEBUG_CREATE_WIDGETS()
|
|
DG_PENETRATOR_DEBUG_CREATE_WIDGETS()
|
|
|
|
START_WIDGET_GROUP("Render")
|
|
ADD_WIDGET_BOOL("bBlockDrawing", g_bBlockArcadeCabinetDrawing)
|
|
ADD_WIDGET_BOOL("g_bMinimizeArcadeCabinetDrawing", g_bMinimizeArcadeCabinetDrawing)
|
|
ADD_WIDGET_INT_READ_ONLY("iRectsDrawnThisFrame", iRectsDrawnThisFrame)
|
|
ADD_WIDGET_INT_READ_ONLY("iSpritesDrawnThisFrame", iSpritesDrawnThisFrame)
|
|
ADD_WIDGET_INT_READ_ONLY("iDebugLinesDrawnThisFrame", iDebugLinesDrawnThisFrame)
|
|
STOP_WIDGET_GROUP()
|
|
ARCADE_GAMES_POSTFX_WIDGET_CREATE()
|
|
ARCADE_GAMES_SOUND_WIDGET_CREATE()
|
|
ARCADE_GAMES_LEADERBOARD_WIDGET_CREATE()
|
|
START_WIDGET_GROUP("Shake Controller")
|
|
ADD_WIDGET_INT_SLIDER("Hard Shake", sDegenatronGamesData.iFreqHeavyShake,0,255,1)
|
|
ADD_WIDGET_BOOL("Hard Shake", sDegenatronGamesData.bShouldDoHeavyShake)
|
|
ADD_WIDGET_INT_SLIDER("Mid Shake", sDegenatronGamesData.iFreqMidShake,0,255,1)
|
|
ADD_WIDGET_BOOL("Mid Shake", sDegenatronGamesData.bShouldDoMidShake)
|
|
ADD_WIDGET_INT_SLIDER("Soft Shake", sDegenatronGamesData.iFreqSoftShake,0,255,1)
|
|
ADD_WIDGET_BOOL("Soft Shake", sDegenatronGamesData.bShouldDoSoftShake)
|
|
STOP_WIDGET_GROUP()
|
|
START_WIDGET_GROUP("Challenges")
|
|
ADD_WIDGET_BOOL("Reset All", sDegenatronGamesData.bDebugResetChallenges)
|
|
ADD_WIDGET_BOOL("Reset Trophy", sDegenatronGamesData.bDebugResetTrophy)
|
|
ADD_WIDGET_BOOL("Reset DoF", sDegenatronGamesData.bDebugResetDoF)
|
|
ADD_WIDGET_BOOL("Reset Monkey", sDegenatronGamesData.bDebugResetMonkey)
|
|
ADD_WIDGET_BOOL("Reset Penetrator", sDegenatronGamesData.bDebugResetPenetrator)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
sDegenatronGamesData.bDebugCreatedWidgets = TRUE
|
|
|
|
CLEAR_CURRENT_WIDGET_GROUP(sDegenatronGamesData.widgetGroupExample)
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_DEBUG_UPDATE_WIDGETS()
|
|
|
|
IF NOT sDegenatronGamesData.bDebugCreatedWidgets
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF sDegenatronGamesData.bDebugResetChallenges
|
|
DEGENATRON_GAMES_RESET_CHALLENGES()
|
|
sDegenatronGamesData.bDebugResetChallenges = FALSE
|
|
ENDIF
|
|
IF sDegenatronGamesData.bDebugResetTrophy
|
|
ARCADE_CABINET_FLOW_CLEAR_TROPHY(ARCADE_GAME_TROPHY_DEGENATRON)
|
|
sDegenatronGamesData.bDebugResetTrophy = FALSE
|
|
ENDIF
|
|
IF sDegenatronGamesData.bDebugResetDoF
|
|
SET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_KEEPFAITH, FALSE)
|
|
ARCADE_CABINET_FLOW_CLEAR_TSHIRT(ARCADE_GAME_TSHIRTS_DEGENATRON_RIGHT_KIND_OF_FAITH)
|
|
sDegenatronGamesData.bDebugResetDoF = FALSE
|
|
ENDIF
|
|
IF sDegenatronGamesData.bDebugResetMonkey
|
|
SET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_AQUAAPE, FALSE)
|
|
ARCADE_CABINET_FLOW_CLEAR_TSHIRT(ARCADE_GAME_TSHIRTS_DEGENATRON_AQUATIC_APE)
|
|
sDegenatronGamesData.bDebugResetMonkey = FALSE
|
|
ENDIF
|
|
IF sDegenatronGamesData.bDebugResetPenetrator
|
|
SET_MP_INT_CHARACTER_AWARD(MP_AWARD_MASTERFUL, 0)
|
|
ARCADE_CABINET_FLOW_CLEAR_TSHIRT(ARCADE_GAME_TSHIRTS_DEGENATRON_RIMMING_MASTER)
|
|
sDegenatronGamesData.bDebugResetPenetrator = FALSE
|
|
ENDIF
|
|
|
|
DG_DEFENDER_DEBUG_UPDATE_WIDGETS()
|
|
DG_MONKEY_DEBUG_UPDATE_WIDGETS()
|
|
DG_PENETRATOR_DEBUG_UPDATE_WIDGETS()
|
|
ARCADE_GAMES_POSTFX_WIDGET_UPDATE()
|
|
ARCADE_GAMES_SOUND_WIDGET_UPDATE()
|
|
ARCADE_GAMES_LEADERBOARD_WIDGET_UPDATE()
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Dumps the current state of the game to the logs
|
|
/// Automatically called when a bug is entered
|
|
PROC DEGENATRON_GAMES_DEBUG_DUMP_DATA_TO_LOGS()
|
|
|
|
ARCADE_CABINET_DUMP_DATA_TO_CONSOLE()
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DEBUG_DUMP_DATA_TO_LOGS - Dumping data...")
|
|
|
|
//General
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] ----- GENERAL -----")
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] eClientState = ", DEGENATRON_GAMES_DEBUG_GET_DEGENATRON_GAMES_CLIENT_STATE_AS_STRING(sDegenatronGamesData.eClientState))
|
|
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_DEBUG_PROCESSING()
|
|
|
|
DEGENATRON_GAMES_DEBUG_CREATE_WIDGETS()
|
|
DEGENATRON_GAMES_DEBUG_UPDATE_WIDGETS()
|
|
|
|
//If a bug is entered dump all data to the console.
|
|
IF IS_KEYBOARD_KEY_PRESSED(KEY_SPACE)
|
|
OR IS_KEYBOARD_KEY_PRESSED(KEY_RBRACKET)
|
|
DEGENATRON_GAMES_DEBUG_DUMP_DATA_TO_LOGS()
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
#ENDIF
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Returns true if the game should quit
|
|
/// Processes holding a button to quit
|
|
/// RETURNS:
|
|
///
|
|
FUNC BOOL DEGENATRON_GAMES_SHOULD_QUIT_NOW()
|
|
|
|
IF g_bForceQuitPenthouseArcadeMachines
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_SHOULD_QUIT_NOW - g_bForceQuitPenthouseArcadeMachines")
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF IS_PLAYER_DOING_HELI_DOCK_CUTSCENE(GET_PLAYER_INDEX())
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_SHOULD_QUIT_NOW - IS_PLAYER_DOING_HELI_DOCK_CUTSCENE")
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF IS_LOCAL_PLAYER_WALKING_IN_OR_OUT_OF_SIMPLE_INTERIOR()
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_SHOULD_QUIT_NOW - IS_LOCAL_PLAYER_WALKING_IN_OR_OUT_OF_SIMPLE_INTERIOR")
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
IF SHOULD_KICK_PLAYER_FROM_ANY_ARCADE_GAME()
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_SHOULD_QUIT_NOW - SHOULD_KICK_PLAYER_FROM_ANY_ARCADE_GAME")
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
CONTROL_ACTION CA_Quit = INPUT_FRONTEND_CANCEL
|
|
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
|
|
CA_Quit = INPUT_FRONTEND_DELETE
|
|
ENDIF
|
|
|
|
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL, CA_Quit)
|
|
OR (IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, CA_Quit))
|
|
DRAW_GENERIC_METER(ciDEGENATRON_GAMES_HOLD_TO_QUIT_TIME - ABSI(NATIVE_TO_INT(GET_NETWORK_TIME()) - sDegenatronGamesData.iQuitTime), ciDEGENATRON_GAMES_HOLD_TO_QUIT_TIME, "DEG_GAME_QUIT")
|
|
ELSE
|
|
DRAW_GENERIC_METER(0, ciDEGENATRON_GAMES_HOLD_TO_QUIT_TIME, "DEG_GAME_QUIT")
|
|
ENDIF
|
|
|
|
IF IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, CA_Quit)
|
|
|
|
IF sDegenatronGamesData.iQuitTime = -HIGHEST_INT
|
|
sDegenatronGamesData.iQuitTime = NATIVE_TO_INT(GET_NETWORK_TIME()) + ciDEGENATRON_GAMES_HOLD_TO_QUIT_TIME
|
|
ENDIF
|
|
|
|
//DRAW_GENERIC_METER(ciIAP_HOLD_TO_QUIT_TIME - (sIAPData.iQuitTime - NATIVE_TO_INT(GET_NETWORK_TIME())), ciIAP_HOLD_TO_QUIT_TIME, "IAP_EXIT", HUD_COLOUR_RED, -1, HUDORDER_TOP)
|
|
|
|
IF NATIVE_TO_INT(GET_NETWORK_TIME()) > sDegenatronGamesData.iQuitTime
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_SHOULD_QUIT_NOW - Button Held")
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
ELIF sDegenatronGamesData.iQuitTime != -HIGHEST_INT
|
|
sDegenatronGamesData.iQuitTime = -HIGHEST_INT
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Run every frame before the client state machine is processed
|
|
PROC DEGENATRON_GAMES_PRE_UPDATE()
|
|
sDegenatronGamesData.iGameTimer += DEGENATRON_GAMES_FRAME_TIME()
|
|
|
|
IF sDegenatronGamesData.eClientState >= DEGENATRON_GAMES_CLIENT_STATE_CLEANUP
|
|
// Cleaning up, don't do anything
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF NOT IS_SKYSWOOP_AT_GROUND()
|
|
DEGENATRON_GAMES_SET_CLIENT_STATE(DEGENATRON_GAMES_CLIENT_STATE_CLEANUP)
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF DEGENATRON_GAMES_SHOULD_QUIT_NOW()
|
|
DEGENATRON_GAMES_SET_CLIENT_STATE(DEGENATRON_GAMES_CLIENT_STATE_CLEANUP)
|
|
EXIT
|
|
ENDIF
|
|
|
|
ARCADE_GAMES_LEADERBOARD_PROCESS_EVENTS()
|
|
|
|
ARCADE_GAMES_LEADERBOARD_LOAD(DEGENATRON_GAMES_GET_CASINO_ARCADE_GAME())
|
|
|
|
ARCADE_GAMES_HELP_TEXT_PRE_UPDATE()
|
|
|
|
DEGENATRON_GAMES_UPDATE_ANIM_FRAMES()
|
|
|
|
DEGENATRON_GAMES_MAINTAIN_GLITCH()
|
|
|
|
DEGENATRON_GAMES_SOUND_PRE_GAME()
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_PRE_UPDATE - sDegenatronGamesData.yGlitch ",sDegenatronGamesData.yGlitch)
|
|
|
|
BOOL bIsPlaying = sDegenatronGamesData.eClientState >= DEGENATRON_GAMES_CLIENT_STATE_INTRO
|
|
ARCADE_CABINET_COMMON_EVERY_FRAME_PROCESSING(bIsPlaying)
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Run every frame after the client state machine is processed
|
|
PROC DEGENATRON_GAMES_POST_UPDATE()
|
|
|
|
//Hide help text every frame unless this minigame wants to show some
|
|
IF NOT ARCADE_GAMES_HELP_TEXT_SHOULD_ALLOW_THIS_FRAME()
|
|
HIDE_HELP_TEXT_THIS_FRAME()
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Call every frame to run the minigame
|
|
PROC PROCESS_DEGENATRON_GAMES()
|
|
|
|
DEGENATRON_GAMES_PRE_UPDATE()
|
|
|
|
DEGENATRON_GAMES_PROCESS_CLIENT_STATE_MACHINE()
|
|
|
|
DEGENATRON_GAMES_POST_UPDATE()
|
|
#IF IS_DEBUG_BUILD
|
|
DEGENATRON_GAMES_DEBUG_PROCESSING()
|
|
#ENDIF
|
|
ENDPROC
|