1028 lines
50 KiB
Scheme
Executable File
1028 lines
50 KiB
Scheme
Executable File
USING "arcade_cabinet_minigame_common.sch"
|
|
USING "degenatron_games_movie.sch"
|
|
USING "arcade_games_sound.sch"
|
|
USING "arcade_games_help_text_flow.sch"
|
|
//USING "penthouse_arcade_cabinet_common.sch"
|
|
|
|
|
|
CONST_FLOAT cfDEGENATRON_GAMES_DEFAULT_ANIM_FRAME_TIME 33.0 //30 FPS
|
|
CONST_FLOAT cfDEGENATRON_GAMES_SLOW_ANIM_FRAME_TIME 66.0 //15 FPS
|
|
|
|
|
|
CONST_INT ciDEGENATRON_GAMES_MAX_ANIM_FRAMES 4
|
|
|
|
CONST_FLOAT cfDEGENATRON_GAMES_SCREEN_HEIGHT 940.0
|
|
CONST_FLOAT cfDEGENATRON_GAMES_SCREEN_WIDTH 1318.0
|
|
CONST_FLOAT cfDEGENATRON_GAMES_SCALE_RATIO 0.687
|
|
CONST_INT ciDEGENATRON_GAMES_PLAYER_FLASH_TIME 300
|
|
CONST_INT ciDEGENATRON_GAMES_WAIT_TIME_DEAD 3000
|
|
CONST_INT ciDEGENATRON_GAMES_WAIT_TIME_GAME_OVER 5000
|
|
CONST_INT ciDEGENATRON_GAMES_SCORE_HEIGHT 100
|
|
CONST_INT ciDEGENATRON_GAMES_MAX_SCORE_CHAR 9
|
|
CONST_INT ciDEGENATRON_GAMES_LEFT_AXIS_TICK_TIME 300
|
|
CONST_FLOAT cfDEGENATRON_GAMES_LBD_TEXT_SCALE 1.0
|
|
CONST_FLOAT cfDEGENATRON_GAMES_LBD_SPACING_Y 0.06
|
|
CONST_FLOAT cfDEGENATRON_GAMES_LBD_STARTING_POS_Y 0.220
|
|
CONST_FLOAT cfDEGENATRON_GAMES_LBD_POSITION_POS_X 0.370
|
|
CONST_FLOAT cfDEGENATRON_GAMES_LBD_INITIAL_3_POS_X 0.46875
|
|
CONST_FLOAT cfDEGENATRON_GAMES_LBD_INITIAL_2_POS_X 0.441145833
|
|
CONST_FLOAT cfDEGENATRON_GAMES_LBD_INITIAL_1_POS_X 0.413541666
|
|
CONST_FLOAT cfDEGENATRON_GAMES_LBD_SCORE_POS_X 0.695
|
|
|
|
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INT_HEIGHT 59.74468085
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INT_WIDTH 69.92412747
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_HEIGHT 59.74468085
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_HIGH_SCORE_WIDTH 629.3171472
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_HIGH_SCORES_WIDTH 693.414264
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_LEVEL_FAILED_WIDTH 745.8573596
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_MONKEYS_LINE_SWING 973.1107739
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_PENETRATOR_LINE_PENETRATED 710.8952959
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_LEVEL_PASSED_WIDTH 757.5113809
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_MISSION_FAILED_WIDTH 897.3596358
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_MISSION_PASSED_WIDTH 909.0136571
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_PLAY_WIDTH 268.0424886
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_SCORE_WIDTH 337.9666161
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_GAME_OVER_WIDTH 582.7010622
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_DEFENDER_OF_THE_FAITH_WIDTH 1305.250379
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_MONKEYS_PARADISE_WIDTH 1095.477997
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_PENETRATOR_WIDTH 675.9332322
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_DEGENATRON_WIDTH 693.414264
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_DEFENDER_LINE_01_WIDTH 804.1274659
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_DEFENDER_LINE_02_WIDTH 1177.056146
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_DEFENDER_LINE_03_WIDTH 1206.191199
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_DEFENDER_LINE_04_WIDTH 1112.959029
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_MONKEY_LINE_01_WIDTH 1136.267071
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_MONKEY_LINE_02_WIDTH 1346.039454
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_MONKEY_LINE_03_WIDTH 576.8740516
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_MONKEY_LINE_04_WIDTH 1130.440061
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_PENETRATOR_LINE_01_WIDTH 804.1274659
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_PENETRATOR_LINE_02_WIDTH 874.0515933
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_PENETRATOR_LINE_03_WIDTH 938.1487102
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_INTRO_PENETRATOR_LINE_04_WIDTH 1381.001517
|
|
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_POS_X 960.0
|
|
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_40 352.5
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_41 430.8333333
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_42 509.1666667
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_43 587.5
|
|
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_50 340.0
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_51 440.0
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_52 540.0
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_53 640.0
|
|
CONST_FLOAT cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_54 740.0
|
|
|
|
|
|
CONST_FLOAT cfDEGENATRON_GAMES_SCORE_BAR_POS_Y 50.0
|
|
CONST_FLOAT cfDEGENATRON_GAMES_SCORE_BAR_POS_X_SCORE 200.0
|
|
CONST_FLOAT cfDEGENATRON_GAMES_SCORE_BAR_POS_X_LEVEL 1160.0
|
|
CONST_FLOAT cfDEGENATRON_GAMES_SCORE_BAR_POS_X_OBJECTIVES 1470.0
|
|
CONST_FLOAT cfDEGENATRON_GAMES_SCORE_BAR_POS_X_OBJECTIVES_SQUARE 1350.0
|
|
CONST_FLOAT cfDEGENATRON_GAMES_SCORE_BAR_POS_X_LIFES 1770.0
|
|
CONST_FLOAT cfDEGENATRON_GAMES_SCORE_BAR_POS_X_LIFES_SQUARE 1650.0
|
|
|
|
CONST_FLOAT cfDEGENATRON_GAMES_SCORE_BAR_SQUARE_HEIGHT 59.15226064
|
|
CONST_FLOAT cfDEGENATRON_GAMES_SCORE_BAR_SQUARE_WIDTH 75.0
|
|
|
|
CONST_INT ciDEGENATRON_GAMES_HOLD_TO_QUIT_TIME 1000
|
|
|
|
CONST_INT ciDEGENATRON_GAMES_GLITCH_CRAZY_TIME_MIN 500
|
|
CONST_INT ciDEGENATRON_GAMES_GLITCH_CRAZY_TIME_MAX 2000
|
|
CONST_INT ciDEGENATRON_GAMES_GLITCH_CALM_TIME_MIN 5000
|
|
CONST_INT ciDEGENATRON_GAMES_GLITCH_CALM_TIME_MAX 10000
|
|
|
|
|
|
ENUM DEGENATRON_GAMES_CLIENT_STATE
|
|
DEGENATRON_GAMES_CLIENT_STATE_INIT = 0,
|
|
DEGENATRON_GAMES_CLIENT_STATE_REQUESTING_ASSETS,
|
|
DEGENATRON_GAMES_CLIENT_STATE_INTRO,
|
|
DEGENATRON_GAMES_CLIENT_STATE_PLAYING,
|
|
DEGENATRON_GAMES_CLIENT_STATE_CLEANUP
|
|
ENDENUM
|
|
|
|
ENUM DEGENATRON_GAMES_TEXT_ITEM
|
|
DEGENATRON_GAMES_TEXT_ITEM_HIGH_SCORE,
|
|
DEGENATRON_GAMES_TEXT_ITEM_HIGH_SCORES,
|
|
DEGENATRON_GAMES_TEXT_ITEM_LEVEL_FAILED,
|
|
DEGENATRON_GAMES_TEXT_ITEM_LEVEL_PASSED,
|
|
DEGENATRON_GAMES_TEXT_ITEM_MISSION_FAILED,
|
|
DEGENATRON_GAMES_TEXT_ITEM_MISSION_PASSED,
|
|
DEGENATRON_GAMES_TEXT_ITEM_PLAY,
|
|
DEGENATRON_GAMES_TEXT_ITEM_SCORE,
|
|
DEGENATRON_GAMES_TEXT_ITEM_GAME_OVER,
|
|
DEGENATRON_GAMES_TEXT_ITEM_DEFENDER_OF_THE_FAITH,
|
|
DEGENATRON_GAMES_TEXT_ITEM_MONKEYS_PARADISE,
|
|
DEGENATRON_GAMES_TEXT_ITEM_PENETRATOR,
|
|
DEGENATRON_GAMES_TEXT_ITEM_DEGENATRON,
|
|
DEGENATRON_GAMES_TEXT_ITEM_INTRO_DEFENDER_LINE_01,
|
|
DEGENATRON_GAMES_TEXT_ITEM_INTRO_DEFENDER_LINE_02,
|
|
DEGENATRON_GAMES_TEXT_ITEM_INTRO_DEFENDER_LINE_03,
|
|
DEGENATRON_GAMES_TEXT_ITEM_INTRO_DEFENDER_LINE_04,
|
|
DEGENATRON_GAMES_TEXT_ITEM_INTRO_MONKEY_LINE_01,
|
|
DEGENATRON_GAMES_TEXT_ITEM_INTRO_MONKEY_LINE_02,
|
|
DEGENATRON_GAMES_TEXT_ITEM_INTRO_MONKEY_LINE_03,
|
|
DEGENATRON_GAMES_TEXT_ITEM_INTRO_MONKEY_LINE_04,
|
|
DEGENATRON_GAMES_TEXT_ITEM_INTRO_PENETRATOR_LINE_01,
|
|
DEGENATRON_GAMES_TEXT_ITEM_INTRO_PENETRATOR_LINE_02,
|
|
DEGENATRON_GAMES_TEXT_ITEM_INTRO_PENETRATOR_LINE_03,
|
|
DEGENATRON_GAMES_TEXT_ITEM_INTRO_PENETRATOR_LINE_04,
|
|
DEGENATRON_GAMES_TEXT_ITEM_NUMBER_0,
|
|
DEGENATRON_GAMES_TEXT_ITEM_NUMBER_1,
|
|
DEGENATRON_GAMES_TEXT_ITEM_NUMBER_2,
|
|
DEGENATRON_GAMES_TEXT_ITEM_NUMBER_3,
|
|
DEGENATRON_GAMES_TEXT_ITEM_NUMBER_4,
|
|
DEGENATRON_GAMES_TEXT_ITEM_NUMBER_5,
|
|
DEGENATRON_GAMES_TEXT_ITEM_NUMBER_6,
|
|
DEGENATRON_GAMES_TEXT_ITEM_NUMBER_7,
|
|
DEGENATRON_GAMES_TEXT_ITEM_NUMBER_8,
|
|
DEGENATRON_GAMES_TEXT_ITEM_NUMBER_9,
|
|
DEGENATRON_GAMES_TEXT_ITEM_PENETRATOR_SCENE_FRAME,
|
|
DEGENATRON_GAMES_TEXT_ITEM_SQUARE_01_SOLID,
|
|
DEGENATRON_GAMES_TEXT_ITEM_SQUARE_02_SOLID,
|
|
DEGENATRON_GAMES_TEXT_ITEM_SQUARE_03_SOLID,
|
|
DEGENATRON_GAMES_TEXT_ITEM_SQUARE_04_SOLID,
|
|
DEGENATRON_GAMES_TEXT_ITEM_DEFENDER_SCENE_01,
|
|
DEGENATRON_GAMES_TEXT_ITEM_DEFENDER_SCENE_02,
|
|
DEGENATRON_GAMES_TEXT_ITEM_DEFENDER_SCENE_03
|
|
ENDENUM
|
|
|
|
ENUM DEGENATRON_GAMES_TEXT_ITEM_POS
|
|
DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_40,
|
|
DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_41,
|
|
DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_42,
|
|
DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_43,
|
|
DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_50,
|
|
DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_51,
|
|
DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_52,
|
|
DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_53,
|
|
DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_54,
|
|
DEGENATRON_GAMES_TEXT_ITEM_SCORE_BAR_SCORE,
|
|
DEGENATRON_GAMES_TEXT_ITEM_SCORE_BAR_LEVEL,
|
|
DEGENATRON_GAMES_TEXT_ITEM_SCORE_BAR_LIFES,
|
|
DEGENATRON_GAMES_TEXT_ITEM_SCORE_BAR_OBJECTIVES,
|
|
DEGENATRON_GAMES_TEXT_ITEM_SCORE_BAR_LIFES_SQUARE,
|
|
DEGENATRON_GAMES_TEXT_ITEM_SCORE_BAR_OBJECTIVES_SQUARE
|
|
ENDENUM
|
|
|
|
ENUM DEGENATRON_GAMES_STATE_GAME
|
|
DEGENATRON_GAMES_STATE_GAME_INIT,
|
|
DEGENATRON_GAMES_STATE_GAME_MENU,
|
|
DEGENATRON_GAMES_STATE_GAME_INTRO,
|
|
DEGENATRON_GAMES_STATE_GAME_UPDATE,
|
|
DEGENATRON_GAMES_STATE_GAME_SCORE,
|
|
DEGENATRON_GAMES_STATE_GAME_LEADERBOARD,
|
|
DEGENATRON_GAMES_STATE_GAME_END
|
|
ENDENUM
|
|
|
|
ENUM DEGENATRON_GAMES_CHALLENGE_BIT
|
|
DEGENATRON_GAMES_CHALLENGE_BIT_NONE = 0,
|
|
DEGENATRON_GAMES_CHALLENGE_BIT_KEEP_THE_FAITH = BIT0,
|
|
DEGENATRON_GAMES_CHALLENGE_BIT_AQUAAPE = BIT1,
|
|
DEGENATRON_GAMES_CHALLENGE_BIT_MASTERFUL_BRONZE = BIT2,
|
|
DEGENATRON_GAMES_CHALLENGE_BIT_MASTERFUL_SILVER = BIT3,
|
|
DEGENATRON_GAMES_CHALLENGE_BIT_MASTERFUL_GOLD = BIT4,
|
|
DEGENATRON_GAMES_CHALLENGE_BIT_MASTERFUL_PLATINUM = BIT5
|
|
ENDENUM
|
|
|
|
FUNC STRING DEGENATRON_GAMES_DEBUG_GET_DEGENATRON_GAMES_CLIENT_STATE_AS_STRING(DEGENATRON_GAMES_CLIENT_STATE eValue)
|
|
|
|
SWITCH eValue
|
|
CASE DEGENATRON_GAMES_CLIENT_STATE_INIT RETURN "DEGENATRON_GAMES_CLIENT_STATE_INIT"
|
|
CASE DEGENATRON_GAMES_CLIENT_STATE_REQUESTING_ASSETS RETURN "DEGENATRON_GAMES_CLIENT_STATE_REQUESTING_ASSETS"
|
|
CASE DEGENATRON_GAMES_CLIENT_STATE_INTRO RETURN "DEGENATRON_GAMES_CLIENT_STATE_INTRO"
|
|
CASE DEGENATRON_GAMES_CLIENT_STATE_PLAYING RETURN "DEGENATRON_GAMES_CLIENT_STATE_PLAYING"
|
|
CASE DEGENATRON_GAMES_CLIENT_STATE_CLEANUP RETURN "DEGENATRON_GAMES_CLIENT_STATE_CLEANUP"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID DEGENATRON_GAMES_CLIENT_STATE"
|
|
|
|
ENDFUNC
|
|
|
|
FUNC STRING DEGENATRON_GAMES_STATE_GAME_TO_STRING(DEGENATRON_GAMES_STATE_GAME eEnum)
|
|
SWITCH eEnum
|
|
CASE DEGENATRON_GAMES_STATE_GAME_INIT RETURN "GAME_INIT"
|
|
CASE DEGENATRON_GAMES_STATE_GAME_MENU RETURN "GAME_MENU"
|
|
CASE DEGENATRON_GAMES_STATE_GAME_INTRO RETURN "GAME_INTRO"
|
|
CASE DEGENATRON_GAMES_STATE_GAME_UPDATE RETURN "GAME_UPDATE"
|
|
CASE DEGENATRON_GAMES_STATE_GAME_SCORE RETURN "GAME_SCORE"
|
|
CASE DEGENATRON_GAMES_STATE_GAME_LEADERBOARD RETURN "GAME_LEADERBOARD"
|
|
CASE DEGENATRON_GAMES_STATE_GAME_END RETURN "GAME_END"
|
|
ENDSWITCH
|
|
RETURN "***INVALID***"
|
|
ENDFUNC
|
|
|
|
FUNC STRING DEGENATRON_GAMES_CHALLENGE_BIT_TO_STRING(DEGENATRON_GAMES_CHALLENGE_BIT eEnum)
|
|
SWITCH eEnum
|
|
CASE DEGENATRON_GAMES_CHALLENGE_BIT_NONE RETURN "DEGENATRON_GAMES_CHALLENGE_BIT_NONE"
|
|
CASE DEGENATRON_GAMES_CHALLENGE_BIT_KEEP_THE_FAITH RETURN "DEGENATRON_GAMES_CHALLENGE_BIT_KEEP_THE_FAITH"
|
|
CASE DEGENATRON_GAMES_CHALLENGE_BIT_AQUAAPE RETURN "DEGENATRON_GAMES_CHALLENGE_BIT_AQUAAPE"
|
|
CASE DEGENATRON_GAMES_CHALLENGE_BIT_MASTERFUL_BRONZE RETURN "DEGENATRON_GAMES_CHALLENGE_BIT_MASTERFUL_BRONZE"
|
|
CASE DEGENATRON_GAMES_CHALLENGE_BIT_MASTERFUL_SILVER RETURN "DEGENATRON_GAMES_CHALLENGE_BIT_MASTERFUL_SILVER"
|
|
CASE DEGENATRON_GAMES_CHALLENGE_BIT_MASTERFUL_GOLD RETURN "DEGENATRON_GAMES_CHALLENGE_BIT_MASTERFUL_GOLD"
|
|
CASE DEGENATRON_GAMES_CHALLENGE_BIT_MASTERFUL_PLATINUM RETURN "DEGENATRON_GAMES_CHALLENGE_BIT_MASTERFUL_PLATINUM"
|
|
ENDSWITCH
|
|
RETURN "***INVALID***"
|
|
ENDFUNC
|
|
|
|
STRUCT DEGENATRON_GAMES_GAME_DATA
|
|
INT iLevel
|
|
INT iLifes
|
|
INT iScore
|
|
INT iObjectives
|
|
|
|
INT iFlashTime = 0
|
|
INT iWaitTime = 0
|
|
BOOL bPlayerIsDead
|
|
BOOL bFlashedOnce
|
|
BOOL bFlashedTwice
|
|
|
|
DEGENATRON_GAMES_STATE_GAME eGameState
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT DEGENATRON_GAMES_CONTROL_INPUT
|
|
VECTOR_2D vLeftAxisTimer
|
|
INT iLeftAxisXTick
|
|
INT iLeftAxisYTick
|
|
|
|
FLOAT fAXTimer
|
|
BOOL bAXTick
|
|
ENDSTRUCT
|
|
|
|
STRUCT DEGENATRON_GAMES_DATA
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
WIDGET_GROUP_ID widgetGroupExample
|
|
BOOL bDebugCreatedWidgets
|
|
#ENDIF
|
|
STRUCT_ARCADE_CABINET sTelemetry
|
|
DEGENATRON_GAMES eGame = DEGENATRON_GAMES_DEFENDER
|
|
DEGENATRON_GAMES_CLIENT_STATE eClientState
|
|
DEGENATRON_GAMES_GAME_DATA sGameData
|
|
SCRIPT_CONTROL_HOLD_TIMER sControlTimer
|
|
DEGENATRON_GAMES_CONTROL_INPUT sControlsInput
|
|
DEGENATRON_GAMES_CHALLENGE_BIT eChallengeFlags
|
|
|
|
BOOL bButtonPressed = FALSE
|
|
BOOL bBackButtonPressed = FALSE
|
|
BOOL bTelemetryInit = FALSE
|
|
|
|
BOOL bShowFXAberration = FALSE
|
|
BOOL bShowFXGreenScale = FALSE
|
|
|
|
BOOL bShouldDoHeavyShake = FALSE
|
|
BOOL bShouldDoSoftShake = FALSE
|
|
BOOL bShouldDoMidShake = FALSE
|
|
BOOL bGlitchCrazy = TRUE
|
|
|
|
INT iFreqHeavyShake = 255
|
|
INT iFreqMidShake = 128
|
|
INT iFreqSoftShake = 1
|
|
INT iFeedBackTime = -HIGHEST_INT
|
|
|
|
|
|
INT iDefaultFrameTimeCounter
|
|
INT iDefaultUpdateFrames
|
|
|
|
INT iMenuSelected = 0
|
|
INT iGameTimer
|
|
INT iSlowFrameTimeCounter
|
|
INT iSlowUpdateFrames
|
|
INT iMachineBashed = 0
|
|
INT iQuitTime = -HIGHEST_INT
|
|
INT iGlitchTime = -HIGHEST_INT
|
|
INT iGlitchCounter = 0
|
|
|
|
|
|
FLOAT fScaleRatio = cfDEGENATRON_GAMES_SCALE_RATIO
|
|
FLOAT yGlitch
|
|
FLOAT fNoise = 8.0
|
|
FLOAT fYbugA = 0.0
|
|
FLOAT fYbugB = 0.0100
|
|
FLOAT fYbugC = 0.1
|
|
|
|
FLOAT fAberrationTime = 610.000
|
|
FLOAT fAberrationNoiseMultiplier = 3.330
|
|
FLOAT fAberrationNoise = 4.0
|
|
FLOAT fAberrationFlooring = 6.0
|
|
FLOAT fAberrationSeparation = 9.300
|
|
FLOAT fAberrationYNegative = 0.0
|
|
FLOAT fAberrationXNegative = 0.0
|
|
|
|
VECTOR_2D vScreenSpace
|
|
VECTOR_2D iLeftAxis
|
|
|
|
BINK_MOVIE_ID bmIDDegenatronIntro
|
|
|
|
RGBA_COLOUR_STRUCT rgbaBlack
|
|
RGBA_COLOUR_STRUCT rgbaWhite
|
|
RGBA_COLOUR_STRUCT rgbaGray
|
|
RGBA_COLOUR_STRUCT rgbaLightGray
|
|
RGBA_COLOUR_STRUCT rgbaGreen
|
|
RGBA_COLOUR_STRUCT rgbaDarkGreen
|
|
RGBA_COLOUR_STRUCT rgbaPurple
|
|
RGBA_COLOUR_STRUCT rgbaRed
|
|
RGBA_COLOUR_STRUCT rgbaMagenta
|
|
RGBA_COLOUR_STRUCT rgbaBlue
|
|
RGBA_COLOUR_STRUCT rgbaYellow
|
|
RGBA_COLOUR_STRUCT rgbaCyan
|
|
RGBA_COLOUR_STRUCT rgbaBrown
|
|
|
|
RGBA_COLOUR_STRUCT rgbaFeedback
|
|
#IF IS_DEBUG_BUILD
|
|
BOOL bShowHelp = FALSE
|
|
BOOL bDebugDraw = TRUE
|
|
BOOL bDebugDrawBackmask = TRUE
|
|
BOOL bDebugDrawFacade = TRUE
|
|
BOOL bDebugResetChallenges
|
|
BOOL bDebugResetTrophy
|
|
BOOL bDebugResetDoF
|
|
BOOL bDebugResetMonkey
|
|
BOOL bDebugResetPenetrator
|
|
BOOL bDebugGlitchOverride
|
|
|
|
FLOAT fDebugNoise = 2.0
|
|
FLOAT fDebugYbugA = 9.500
|
|
FLOAT fDebugYbugB = 0.1
|
|
FLOAT fDebugYbugC = 2.250
|
|
|
|
FLOAT fDebugAberrationTime = 610.000
|
|
FLOAT fDebugAberrationNoise = 4.0
|
|
FLOAT fDebugAberrationNoiseMultiplier = 7.320
|
|
FLOAT fDebugAberrationSeparation = 4.100
|
|
FLOAT fDebugAberrationFlooring = 4.100
|
|
|
|
|
|
#ENDIF
|
|
|
|
ENDSTRUCT
|
|
|
|
DEGENATRON_GAMES_DATA sDegenatronGamesData
|
|
|
|
FUNC FLOAT DEGENATRON_GAMES_SCALE_RATIO
|
|
RETURN sDegenatronGamesData.fScaleRatio
|
|
ENDFUNC
|
|
|
|
FUNC FLOAT DEGENATRON_GAMES_SCREEN_WIDTH_RATIO
|
|
RETURN sDegenatronGamesData.vScreenSpace.x / cfBASE_SCREEN_WIDTH
|
|
ENDFUNC
|
|
FUNC FLOAT DEGENATRON_GAMES_SCREEN_HEIGHT_RATIO
|
|
RETURN sDegenatronGamesData.vScreenSpace.y / cfBASE_SCREEN_HEIGHT
|
|
ENDFUNC
|
|
|
|
|
|
// TEXTS //
|
|
FUNC STRING DEGENATRON_GAMES_GET_TEXT_STRING(DEGENATRON_GAMES_TEXT_ITEM eItem)
|
|
SWITCH eItem
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_HIGH_SCORE RETURN "HUD_TEXT_HIGH_SCORE"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_HIGH_SCORES RETURN "HUD_TEXT_HIGH_SCORES"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_LEVEL_FAILED
|
|
SWITCH sDegenatronGamesData.eGame
|
|
CASE DEGENATRON_GAMES_DEFENDER
|
|
RETURN "HUD_TEXT_LEVEL_FAILED"
|
|
CASE DEGENATRON_GAMES_MONKEY
|
|
RETURN "HUD_TEXT_INTRO_MONKEYS_LINE_SWING"
|
|
CASE DEGENATRON_GAMES_PENETRATOR
|
|
RETURN "HUD_TEXT_INTRO_PENETRATOR_LINE_PENETRATED"
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_LEVEL_PASSED RETURN "HUD_TEXT_LEVEL_PASSED"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_MISSION_FAILED RETURN "HUD_TEXT_MISSION_FAILED"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_MISSION_PASSED RETURN "HUD_TEXT_MISSION_PASSED"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_PLAY RETURN "HUD_TEXT_PLAY"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_SCORE RETURN "HUD_TEXT_SCORE"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_GAME_OVER RETURN "HUD_TEXT_GAME_OVER"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_DEFENDER_OF_THE_FAITH RETURN "HUD_TEXT_DEFENDER_OF_THE_FAITH"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_MONKEYS_PARADISE RETURN "HUD_TEXT_MONKEYS_PARADISE"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_PENETRATOR RETURN "HUD_TEXT_PENETRATOR"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_DEGENATRON RETURN "HUD_TEXT_DEGENATRON"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_DEFENDER_LINE_01 RETURN "HUD_TEXT_INTRO_DEFENDER_LINE_01"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_DEFENDER_LINE_02 RETURN "HUD_TEXT_INTRO_DEFENDER_LINE_02"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_DEFENDER_LINE_03 RETURN "HUD_TEXT_INTRO_DEFENDER_LINE_03"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_DEFENDER_LINE_04 RETURN "HUD_TEXT_INTRO_DEFENDER_LINE_04"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_MONKEY_LINE_01 RETURN "HUD_TEXT_INTRO_MONKEYS_LINE_01"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_MONKEY_LINE_02 RETURN "HUD_TEXT_INTRO_MONKEYS_LINE_02"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_MONKEY_LINE_03 RETURN "HUD_TEXT_INTRO_MONKEYS_LINE_03"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_MONKEY_LINE_04 RETURN "HUD_TEXT_INTRO_MONKEYS_LINE_04"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_PENETRATOR_LINE_01 RETURN "HUD_TEXT_INTRO_PENETRATOR_LINE_01"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_PENETRATOR_LINE_02 RETURN "HUD_TEXT_INTRO_PENETRATOR_LINE_02"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_PENETRATOR_LINE_03 RETURN "HUD_TEXT_INTRO_PENETRATOR_LINE_03"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_PENETRATOR_LINE_04 RETURN "HUD_TEXT_INTRO_PENETRATOR_LINE_04"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_0 RETURN "HUD_NUMBER_0"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_1 RETURN "HUD_NUMBER_1"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_2 RETURN "HUD_NUMBER_2"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_3 RETURN "HUD_NUMBER_3"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_4 RETURN "HUD_NUMBER_4"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_5 RETURN "HUD_NUMBER_5"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_6 RETURN "HUD_NUMBER_6"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_7 RETURN "HUD_NUMBER_7"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_8 RETURN "HUD_NUMBER_8"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_9 RETURN "HUD_NUMBER_9"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_PENETRATOR_SCENE_FRAME RETURN "PENETRATOR_SCENE_FRAME"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_SQUARE_01_SOLID RETURN "SQUARE_01_SOLID"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_SQUARE_02_SOLID RETURN "SQUARE_02_SOLID"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_SQUARE_03_SOLID RETURN "SQUARE_03_SOLID"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_SQUARE_04_SOLID RETURN "SQUARE_04_SOLID"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_DEFENDER_SCENE_01 RETURN "DEFENDER_SCENE_01"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_DEFENDER_SCENE_02 RETURN "DEFENDER_SCENE_02"
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_DEFENDER_SCENE_03 RETURN "DEFENDER_SCENE_03"
|
|
ENDSWITCH
|
|
RETURN ""
|
|
ENDFUNC
|
|
FUNC VECTOR_2D DEGENATRON_GAMES_GET_TEXT_SIZE(DEGENATRON_GAMES_TEXT_ITEM eItem)
|
|
SWITCH eItem
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_HIGH_SCORE RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_HIGH_SCORE_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_HIGH_SCORES RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_HIGH_SCORES_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_LEVEL_FAILED
|
|
SWITCH sDegenatronGamesData.eGame
|
|
CASE DEGENATRON_GAMES_DEFENDER
|
|
RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_LEVEL_FAILED_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_MONKEY
|
|
RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_MONKEYS_LINE_SWING,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_PENETRATOR
|
|
RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_PENETRATOR_LINE_PENETRATED,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_LEVEL_PASSED RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_LEVEL_PASSED_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_MISSION_FAILED RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_MISSION_FAILED_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_MISSION_PASSED RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_MISSION_PASSED_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_PLAY RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_PLAY_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_SCORE RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_SCORE_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_GAME_OVER RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_GAME_OVER_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_DEFENDER_OF_THE_FAITH RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_DEFENDER_OF_THE_FAITH_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_MONKEYS_PARADISE RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_MONKEYS_PARADISE_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_PENETRATOR RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_PENETRATOR_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_DEGENATRON RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_DEGENATRON_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_DEFENDER_LINE_01 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_DEFENDER_LINE_01_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_DEFENDER_LINE_02 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_DEFENDER_LINE_02_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_DEFENDER_LINE_03 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_DEFENDER_LINE_03_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_DEFENDER_LINE_04 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_DEFENDER_LINE_04_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_MONKEY_LINE_01 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_MONKEY_LINE_01_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_MONKEY_LINE_02 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_MONKEY_LINE_02_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_MONKEY_LINE_03 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_MONKEY_LINE_03_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_MONKEY_LINE_04 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_MONKEY_LINE_04_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_PENETRATOR_LINE_01 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_PENETRATOR_LINE_01_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_PENETRATOR_LINE_02 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_PENETRATOR_LINE_02_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_PENETRATOR_LINE_03 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_PENETRATOR_LINE_03_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_INTRO_PENETRATOR_LINE_04 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INTRO_PENETRATOR_LINE_04_WIDTH,cfDEGENATRON_GAMES_TEXT_HEIGHT)
|
|
|
|
|
|
ENDSWITCH
|
|
RETURN INIT_VECTOR_2D(0.0,0.0)
|
|
ENDFUNC
|
|
FUNC VECTOR_2D DEGENATRON_GAMES_GET_TEXT_POSITION(DEGENATRON_GAMES_TEXT_ITEM_POS eItem)
|
|
SWITCH eItem
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_40 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_POS_X,cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_40)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_41 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_POS_X,cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_41)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_42 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_POS_X,cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_42)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_43 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_POS_X,cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_43)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_50 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_POS_X,cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_50)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_51 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_POS_X,cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_51)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_52 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_POS_X,cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_52)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_53 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_POS_X,cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_53)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_LINE_POS_54 RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_POS_X,cfDEGENATRON_GAMES_TEXT_POS_Y_LINE_54)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_SCORE_BAR_SCORE RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_SCORE_BAR_POS_X_SCORE, cfDEGENATRON_GAMES_SCORE_BAR_POS_Y)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_SCORE_BAR_LEVEL RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_SCORE_BAR_POS_X_LEVEL, cfDEGENATRON_GAMES_SCORE_BAR_POS_Y)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_SCORE_BAR_LIFES RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_SCORE_BAR_POS_X_LIFES, cfDEGENATRON_GAMES_SCORE_BAR_POS_Y)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_SCORE_BAR_OBJECTIVES RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_SCORE_BAR_POS_X_OBJECTIVES, cfDEGENATRON_GAMES_SCORE_BAR_POS_Y)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_SCORE_BAR_LIFES_SQUARE RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_SCORE_BAR_POS_X_LIFES_SQUARE, cfDEGENATRON_GAMES_SCORE_BAR_POS_Y)
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_SCORE_BAR_OBJECTIVES_SQUARE RETURN INIT_VECTOR_2D(cfDEGENATRON_GAMES_SCORE_BAR_POS_X_OBJECTIVES_SQUARE, cfDEGENATRON_GAMES_SCORE_BAR_POS_Y)
|
|
ENDSWITCH
|
|
RETURN INIT_VECTOR_2D(0.0,0.0)
|
|
ENDFUNC
|
|
|
|
|
|
|
|
// SCREEN //
|
|
FUNC VECTOR_2D DEGENATRON_GAMES_GET_SCREEN_SIZE
|
|
RETURN INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH,cfBASE_SCREEN_HEIGHT)
|
|
ENDFUNC
|
|
FUNC FLOAT DEGENATRON_GAMES_GET_SCREEN_HEIGHT
|
|
VECTOR_2D screenSize = DEGENATRON_GAMES_GET_SCREEN_SIZE()
|
|
RETURN screenSize.y
|
|
ENDFUNC
|
|
FUNC FLOAT DEGENATRON_GAMES_GET_SCREEN_WIDTH
|
|
VECTOR_2D screenSize = DEGENATRON_GAMES_GET_SCREEN_SIZE()
|
|
RETURN screenSize.x
|
|
ENDFUNC
|
|
FUNC VECTOR_2D DEGENATRON_GAMES_GET_SCREEN_CENTER
|
|
RETURN INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/2.0,cfBASE_SCREEN_HEIGHT/2.0)
|
|
ENDFUNC
|
|
// SCORE //
|
|
FUNC VECTOR_2D DEGENATRON_GAMES_GET_SCORE_SIZE
|
|
RETURN INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH,ciDEGENATRON_GAMES_SCORE_HEIGHT)
|
|
ENDFUNC
|
|
FUNC FLOAT DEGENATRON_GAMES_GET_SCORE_HEIGHT
|
|
VECTOR_2D screenSize = DEGENATRON_GAMES_GET_SCORE_SIZE()
|
|
RETURN screenSize.y
|
|
ENDFUNC
|
|
FUNC FLOAT DEGENATRON_GAMES_GET_SCORE_WIDTH
|
|
VECTOR_2D screenSize = DEGENATRON_GAMES_GET_SCORE_SIZE()
|
|
RETURN screenSize.x
|
|
ENDFUNC
|
|
FUNC VECTOR_2D DEGENATRON_GAMES_GET_SCORE_CENTER
|
|
RETURN INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/2.0,ciDEGENATRON_GAMES_SCORE_HEIGHT/2)
|
|
ENDFUNC
|
|
|
|
FUNC VECTOR_2D DEGENATRON_GAMES_DRAW_SCORE_GET_SQUARE_SIZE()
|
|
RETURN INIT_VECTOR_2D(ciDEGENATRON_GAMES_SCORE_HEIGHT*0.6,ciDEGENATRON_GAMES_SCORE_HEIGHT*0.6)
|
|
ENDFUNC
|
|
|
|
|
|
// FRAME TIME //
|
|
FUNC INT DEGENATRON_GAMES_FRAME_TIME
|
|
RETURN ROUND(GET_FRAME_TIME() * 1000)
|
|
ENDFUNC
|
|
|
|
PROC DEGENATRON_GAMES_INIT_COLOUR_STRUCTS()
|
|
|
|
INIT_RGBA_STRUCT(sDegenatronGamesData.rgbaBlack, 10, 10, 10,255)
|
|
INIT_RGBA_STRUCT(sDegenatronGamesData.rgbaWhite, 255, 255, 255, 255)
|
|
INIT_RGBA_STRUCT(sDegenatronGamesData.rgbaGray, 100, 100, 100, 255)
|
|
INIT_RGBA_STRUCT(sDegenatronGamesData.rgbaLightGray, 150, 150, 150, 255)
|
|
INIT_RGBA_STRUCT(sDegenatronGamesData.rgbaGreen, 0, 255, 0, 255)
|
|
INIT_RGBA_STRUCT(sDegenatronGamesData.rgbaDarkGreen, 0, 128, 0, 255)
|
|
INIT_RGBA_STRUCT(sDegenatronGamesData.rgbaPurple, 128, 0, 128, 255)
|
|
INIT_RGBA_STRUCT(sDegenatronGamesData.rgbaRed, 255, 0, 0, 255)
|
|
INIT_RGBA_STRUCT(sDegenatronGamesData.rgbaMagenta, 255, 0, 255, 255)
|
|
INIT_RGBA_STRUCT(sDegenatronGamesData.rgbaBlue, 0, 0, 255, 255)
|
|
INIT_RGBA_STRUCT(sDegenatronGamesData.rgbaYellow, 255, 255, 0, 255)
|
|
INIT_RGBA_STRUCT(sDegenatronGamesData.rgbaCyan, 100, 255, 255, 255)
|
|
INIT_RGBA_STRUCT(sDegenatronGamesData.rgbaBrown, 100, 50, 0, 255)
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL DEGENATRON_GAMES_PRELOAD_SPRITE_DICT(STRING stTextureDict)
|
|
REQUEST_STREAMED_TEXTURE_DICT(stTextureDict)
|
|
IF NOT HAS_STREAMED_TEXTURE_DICT_LOADED(stTextureDict)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_PRELOAD_SPRITE_DICT - Loading ",stTextureDict)
|
|
RETURN FALSE
|
|
ENDIF
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
PROC DEGENATRON_GAMES_CLEANUP_SPRITE_DICT(STRING stTextureDict)
|
|
SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED(stTextureDict)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_CLEANUP_SPRITE_DICT - Cleanup ",stTextureDict)
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_LEFT_AXIS_INPUT()
|
|
sDegenatronGamesData.sControlsInput.iLeftAxisXTick = 0
|
|
sDegenatronGamesData.sControlsInput.iLeftAxisYTick = 0
|
|
sDegenatronGamesData.sControlsInput.bAXTick = FALSE
|
|
|
|
|
|
// INPUT LEFT AXIS
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_LEFT)
|
|
sDegenatronGamesData.sControlsInput.vLeftAxisTimer.x = TO_FLOAT(sDegenatronGamesData.iGameTimer)
|
|
sDegenatronGamesData.sControlsInput.iLeftAxisXTick = 1
|
|
EXIT
|
|
ENDIF
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_RIGHT)
|
|
sDegenatronGamesData.sControlsInput.vLeftAxisTimer.x = TO_FLOAT(sDegenatronGamesData.iGameTimer)
|
|
sDegenatronGamesData.sControlsInput.iLeftAxisXTick = -1
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_UP)
|
|
sDegenatronGamesData.sControlsInput.vLeftAxisTimer.y = TO_FLOAT(sDegenatronGamesData.iGameTimer)
|
|
sDegenatronGamesData.sControlsInput.iLeftAxisYTick = -1
|
|
EXIT
|
|
ENDIF
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_DOWN)
|
|
sDegenatronGamesData.sControlsInput.vLeftAxisTimer.y = TO_FLOAT(sDegenatronGamesData.iGameTimer)
|
|
sDegenatronGamesData.sControlsInput.iLeftAxisYTick = 1
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF GET_DISABLED_CONTROL_NORMAL(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_Y) < 0.0
|
|
OR IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_UP)
|
|
IF sDegenatronGamesData.sControlsInput.vLeftAxisTimer.y = 0
|
|
OR (sDegenatronGamesData.iGameTimer - sDegenatronGamesData.sControlsInput.vLeftAxisTimer.y) > ciDEGENATRON_GAMES_LEFT_AXIS_TICK_TIME
|
|
sDegenatronGamesData.sControlsInput.vLeftAxisTimer.y = TO_FLOAT(sDegenatronGamesData.iGameTimer)
|
|
sDegenatronGamesData.sControlsInput.iLeftAxisYTick = -1
|
|
ENDIF
|
|
ELIF GET_DISABLED_CONTROL_NORMAL(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_Y) > 0.0
|
|
OR IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_DOWN)
|
|
IF sDegenatronGamesData.sControlsInput.vLeftAxisTimer.y = 0
|
|
OR (sDegenatronGamesData.iGameTimer - sDegenatronGamesData.sControlsInput.vLeftAxisTimer.y) > ciDEGENATRON_GAMES_LEFT_AXIS_TICK_TIME
|
|
sDegenatronGamesData.sControlsInput.vLeftAxisTimer.y = TO_FLOAT(sDegenatronGamesData.iGameTimer)
|
|
sDegenatronGamesData.sControlsInput.iLeftAxisYTick = 1
|
|
ENDIF
|
|
ELSE
|
|
sDegenatronGamesData.sControlsInput.vLeftAxisTimer.y = 0
|
|
ENDIF
|
|
IF GET_DISABLED_CONTROL_NORMAL(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_X) < 0.0
|
|
OR IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_LEFT)
|
|
IF sDegenatronGamesData.sControlsInput.vLeftAxisTimer.x = 0
|
|
OR (sDegenatronGamesData.iGameTimer - sDegenatronGamesData.sControlsInput.vLeftAxisTimer.x) > ciDEGENATRON_GAMES_LEFT_AXIS_TICK_TIME
|
|
sDegenatronGamesData.sControlsInput.vLeftAxisTimer.x = TO_FLOAT(sDegenatronGamesData.iGameTimer)
|
|
sDegenatronGamesData.sControlsInput.iLeftAxisXTick = 1
|
|
ENDIF
|
|
ELIF GET_DISABLED_CONTROL_NORMAL(FRONTEND_CONTROL, INPUT_SCRIPT_LEFT_AXIS_X) > 0.0
|
|
OR IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_RIGHT)
|
|
IF sDegenatronGamesData.sControlsInput.vLeftAxisTimer.x = 0
|
|
OR (sDegenatronGamesData.iGameTimer - sDegenatronGamesData.sControlsInput.vLeftAxisTimer.x) > ciDEGENATRON_GAMES_LEFT_AXIS_TICK_TIME
|
|
sDegenatronGamesData.sControlsInput.vLeftAxisTimer.x = TO_FLOAT(sDegenatronGamesData.iGameTimer)
|
|
sDegenatronGamesData.sControlsInput.iLeftAxisXTick = -1
|
|
ENDIF
|
|
ELSE
|
|
sDegenatronGamesData.sControlsInput.vLeftAxisTimer.x = 0
|
|
ENDIF
|
|
////////////
|
|
|
|
// INPUT A/X
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
sDegenatronGamesData.sControlsInput.fAXTimer = TO_FLOAT(sDegenatronGamesData.iGameTimer)
|
|
sDegenatronGamesData.sControlsInput.bAXTick = TRUE
|
|
EXIT
|
|
ENDIF
|
|
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
IF sDegenatronGamesData.sControlsInput.fAXTimer = 0
|
|
OR (sDegenatronGamesData.iGameTimer - sDegenatronGamesData.sControlsInput.fAXTimer) > ciDEGENATRON_GAMES_LEFT_AXIS_TICK_TIME
|
|
sDegenatronGamesData.sControlsInput.fAXTimer = TO_FLOAT(sDegenatronGamesData.iGameTimer)
|
|
sDegenatronGamesData.sControlsInput.bAXTick = TRUE
|
|
ENDIF
|
|
ELSE
|
|
sDegenatronGamesData.sControlsInput.fAXTimer = 0
|
|
ENDIF
|
|
////////////
|
|
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_CLEAN_UP()
|
|
DG_CLEAN_UP_MOVIE(sDegenatronGamesData.bmIDDegenatronIntro)
|
|
ENDPROC
|
|
|
|
|
|
// DRAW //
|
|
FUNC STRING DEGENATRON_GAMES_GET_SPRITE_DICTIONARY(DEGENATRON_GAMES_TEXT_ITEM eTexture)
|
|
UNUSED_PARAMETER(eTexture)
|
|
SWITCH eTexture
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_0
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_1
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_2
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_3
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_4
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_5
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_6
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_7
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_8
|
|
CASE DEGENATRON_GAMES_TEXT_ITEM_NUMBER_9
|
|
RETURN "MPArcadeDegenatronCharacters"
|
|
ENDSWITCH
|
|
RETURN "MPArcadeDegenatron"
|
|
ENDFUNC
|
|
|
|
PROC DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE_RESCALED(DEGENATRON_GAMES_TEXT_ITEM eTexture, VECTOR_2D vCenter, VECTOR_2D vScale, FLOAT fRotation, RGBA_COLOUR_STRUCT rgba)
|
|
VECTOR_2D rescaledCenter
|
|
rescaledCenter.x = vCenter.x*DEGENATRON_GAMES_SCREEN_WIDTH_RATIO() + DEGENATRON_GAMES_GET_SCREEN_WIDTH()*((1-DEGENATRON_GAMES_SCREEN_WIDTH_RATIO())*0.5)
|
|
rescaledCenter.y = vCenter.y*DEGENATRON_GAMES_SCREEN_HEIGHT_RATIO() + DEGENATRON_GAMES_GET_SCREEN_HEIGHT()*((1-DEGENATRON_GAMES_SCREEN_HEIGHT_RATIO())*0.5)
|
|
|
|
VECTOR_2D rescaledSize
|
|
rescaledSize = INIT_VECTOR_2D(vScale.x*DEGENATRON_GAMES_SCREEN_WIDTH_RATIO(),vScale.y*DEGENATRON_GAMES_SCREEN_HEIGHT_RATIO())
|
|
#IF IS_DEBUG_BUILD
|
|
IF sDegenatronGamesData.bShowHelp
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE_RESCALED - --------------------------------------")
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE_RESCALED - Drawing sprite ",DEGENATRON_GAMES_GET_TEXT_STRING(eTexture))
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE_RESCALED - Original Center ",vCenter.x,",",vCenter.y)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE_RESCALED - Original Size ",vScale.x,",",vScale.y)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE_RESCALED - Rotation ",fRotation)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE_RESCALED - Rescaled Center ",rescaledCenter.x,",",rescaledCenter.y)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE_RESCALED - Rescaled Size ",rescaledSize.x,",",rescaledSize.y)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE_RESCALED - --------------------------------------")
|
|
ENDIF
|
|
#ENDIF
|
|
ARCADE_DRAW_PIXELSPACE_SPRITE(DEGENATRON_GAMES_GET_SPRITE_DICTIONARY(eTexture), DEGENATRON_GAMES_GET_TEXT_STRING(eTexture), rescaledCenter, rescaledSize, fRotation, rgba)
|
|
ENDPROC
|
|
|
|
FUNC FLOAT FRACT(FLOAT n)
|
|
RETURN n - FLOOR(n)
|
|
ENDFUNC
|
|
|
|
FUNC FLOAT RAND(FLOAT n, FLOAT fRepetition)
|
|
return FRACT(SIN(n) * fRepetition)
|
|
ENDFUNC
|
|
|
|
FUNC FLOAT MIX(FLOAT x, FLOAT y, FLOAT z)
|
|
RETURN x*(1-z)+y*z
|
|
ENDFUNC
|
|
|
|
FUNC FLOAT NOISE(FLOAT p)
|
|
FLOAT fl = TO_FLOAT( FLOOR(p) )
|
|
FLOAT fc = FRACT(p)
|
|
RETURN MIX(RAND(fl,sDegenatronGamesData.fNoise), RAND(fl + 1.0,sDegenatronGamesData.fNoise), fc)
|
|
ENDFUNC
|
|
|
|
FUNC FLOAT YBUG()
|
|
RETURN CLAMP(NOISE(sDegenatronGamesData.fYbugA+ sDegenatronGamesData.iGameTimer*sDegenatronGamesData.fYbugB)*sDegenatronGamesData.fYbugC,-1.0,1.0)
|
|
ENDFUNC
|
|
|
|
FUNC FLOAT MOD(FLOAT x, FLOAT y)
|
|
RETURN x - y * FLOOR(x/y)
|
|
ENDFUNC
|
|
|
|
PROC DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE(DEGENATRON_GAMES_TEXT_ITEM eTexture, VECTOR_2D vCenter, VECTOR_2D vScale, FLOAT fRotation, RGBA_COLOUR_STRUCT rgba, BOOL bAvoidAberrationFX = FALSE)
|
|
BOOL bAberration = (sDegenatronGamesData.iMachineBashed > 0 AND sDegenatronGamesData.iMachineBashed <= 3 ) AND NOT bAvoidAberrationFX
|
|
BOOL bGreenScale = sDegenatronGamesData.bShowFXGreenScale
|
|
|
|
RGBA_COLOUR_STRUCT color = rgba
|
|
RGBA_COLOUR_STRUCT colorCyan = sDegenatronGamesData.rgbaCyan
|
|
IF bGreenScale
|
|
color.iR = 0
|
|
color.iG = ROUND(rgba.iR*0.2999 + rgba.iG*0.587 + rgba.iB*0.114)
|
|
color.iB = 0
|
|
color.iA = rgba.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
|
|
|
|
IF NOT bAberration
|
|
DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE_RESCALED(eTexture,vCenter,vScale,fRotation,color)
|
|
ELSE
|
|
vCenter.y = MOD(vCenter.y+sDegenatronGamesData.yGlitch*cfBASE_SCREEN_HEIGHT,cfBASE_SCREEN_HEIGHT)
|
|
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 = rgba.iA/4*3
|
|
RGBA_COLOUR_STRUCT b = colorCyan
|
|
b.iA = colorCyan.iA/2
|
|
DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE_RESCALED(eTexture,ADD_VECTOR_2D(vCenter,INIT_VECTOR_2D(-sDegenatronGamesData.fAberrationSeparation*fRatio, sDegenatronGamesData.fAberrationSeparation*fRatioY)),vScale,fRotation,b)
|
|
DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE_RESCALED(eTexture,ADD_VECTOR_2D(vCenter,INIT_VECTOR_2D( sDegenatronGamesData.fAberrationSeparation*fRatio, 0.0)),vScale,fRotation,r)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_DRAW_PIXELSPACE_RECT_RESCALED(VECTOR_2D vCenter, VECTOR_2D vScale, RGBA_COLOUR_STRUCT rgba)
|
|
VECTOR_2D rescaledCenter
|
|
rescaledCenter.x = vCenter.x*DEGENATRON_GAMES_SCREEN_WIDTH_RATIO() + DEGENATRON_GAMES_GET_SCREEN_WIDTH()*((1-DEGENATRON_GAMES_SCREEN_WIDTH_RATIO())*0.5)
|
|
rescaledCenter.y = vCenter.y*DEGENATRON_GAMES_SCREEN_HEIGHT_RATIO() + DEGENATRON_GAMES_GET_SCREEN_HEIGHT()*((1-DEGENATRON_GAMES_SCREEN_HEIGHT_RATIO())*0.5)
|
|
|
|
VECTOR_2D rescaledSize
|
|
rescaledSize = INIT_VECTOR_2D(vScale.x*DEGENATRON_GAMES_SCREEN_WIDTH_RATIO(),vScale.y*DEGENATRON_GAMES_SCREEN_HEIGHT_RATIO())
|
|
#IF IS_DEBUG_BUILD
|
|
IF sDegenatronGamesData.bShowHelp
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_RECT_RESCALED - --------------------------------------")
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_RECT_RESCALED - Original Center ",vCenter.x,",",vCenter.y)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_RECT_RESCALED - Original Size ",vScale.x,",",vScale.y)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_RECT_RESCALED - Rescaled Center ",rescaledCenter.x,",",rescaledCenter.y)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_RECT_RESCALED - Rescaled Size ",rescaledSize.x,",",rescaledSize.y)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_RECT_RESCALED - --------------------------------------")
|
|
ENDIF
|
|
#ENDIF
|
|
ARCADE_DRAW_PIXELSPACE_RECT( rescaledCenter, rescaledSize, rgba)
|
|
ENDPROC
|
|
PROC DEGENATRON_GAMES_DRAW_PIXELSPACE_RECT(VECTOR_2D vCenter, VECTOR_2D vScale, RGBA_COLOUR_STRUCT rgba, BOOL bAvoidAberrationFX = FALSE)
|
|
BOOL bAberration = (sDegenatronGamesData.iMachineBashed > 0 AND sDegenatronGamesData.iMachineBashed <= 3) AND NOT bAvoidAberrationFX
|
|
BOOL bGreenScale = sDegenatronGamesData.bShowFXGreenScale
|
|
|
|
RGBA_COLOUR_STRUCT color = rgba
|
|
RGBA_COLOUR_STRUCT colorCyan = sDegenatronGamesData.rgbaCyan
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[DEGENATRON_GAMES] DEGENATRON_GAMES_DRAW_PIXELSPACE_RECT - bAberration ",BOOL_TO_INT(bAberration)," bGreenScale ",BOOL_TO_INT(bGreenScale))
|
|
IF bGreenScale
|
|
color.iR = 0
|
|
color.iG = ROUND(rgba.iR*0.2999 + rgba.iG*0.587 + rgba.iB*0.114)
|
|
color.iB = 0
|
|
color.iA = rgba.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
|
|
|
|
IF NOT bAberration
|
|
DEGENATRON_GAMES_DRAW_PIXELSPACE_RECT_RESCALED(vCenter,vScale,color)
|
|
ELSE
|
|
vCenter.y = MOD(vCenter.y+sDegenatronGamesData.yGlitch*cfBASE_SCREEN_HEIGHT,cfBASE_SCREEN_HEIGHT)
|
|
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 = rgba.iA/4*3
|
|
RGBA_COLOUR_STRUCT b = colorCyan
|
|
b.iA = colorCyan.iA/2
|
|
DEGENATRON_GAMES_DRAW_PIXELSPACE_RECT_RESCALED(ADD_VECTOR_2D(vCenter,INIT_VECTOR_2D(-sDegenatronGamesData.fAberrationSeparation*fRatio, 0.0)),vScale,b)
|
|
DEGENATRON_GAMES_DRAW_PIXELSPACE_RECT_RESCALED(ADD_VECTOR_2D(vCenter,INIT_VECTOR_2D( sDegenatronGamesData.fAberrationSeparation*fRatio, 0.0)),vScale,r)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_DRAW_INTEGER(INT iValue, INT iDigits, VECTOR_2D vCenter,RGBA_COLOUR_STRUCT rgba, BOOL bAlignRight = FALSE,BOOL bAlignLeft = FALSE)
|
|
VECTOR_2D vCharCenter = vCenter
|
|
VECTOR_2D vCharSize = INIT_VECTOR_2D(cfDEGENATRON_GAMES_TEXT_INT_WIDTH,cfDEGENATRON_GAMES_TEXT_INT_HEIGHT)
|
|
BOOL bZero = (iValue = 0)
|
|
INT iChar
|
|
IF iDigits = 0
|
|
INT currentValue
|
|
currentValue = iValue
|
|
IF iValue > 0
|
|
iDigits = FLOOR(LOG10(TO_FLOAT(iValue)))+1
|
|
ELIF iValue = 0
|
|
iDigits = 1
|
|
ENDIF
|
|
WHILE currentValue > 0 OR bZero
|
|
bZero = FALSE
|
|
IF bAlignRight
|
|
vCharCenter.x = vCenter.x - vCharSize.x * iChar
|
|
ELIF bAlignLeft
|
|
vCharCenter.x = vCenter.x + vCharSize.x * (iDigits-1) - vCharSize.x * iChar
|
|
ELSE
|
|
vCharCenter.x = vCenter.x + vCharSize.x * (iDigits-1)/2.0 - vCharSize.x * iChar
|
|
ENDIF
|
|
DEGENATRON_GAMES_TEXT_ITEM eTextureName
|
|
eTextureName = INT_TO_ENUM(DEGENATRON_GAMES_TEXT_ITEM, ENUM_TO_INT(DEGENATRON_GAMES_TEXT_ITEM_NUMBER_0)+currentValue % 10)
|
|
currentValue /= 10
|
|
DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE(eTextureName,vCharCenter,vCharSize,0.0, rgba)
|
|
iChar++
|
|
ENDWHILE
|
|
ELSE
|
|
REPEAT iDigits iChar
|
|
vCharCenter.x = vCenter.x + vCharSize.x * (iDigits-1)/2.0 - vCharSize.x * iChar
|
|
DEGENATRON_GAMES_TEXT_ITEM eTextureName
|
|
eTextureName = INT_TO_ENUM(DEGENATRON_GAMES_TEXT_ITEM, ENUM_TO_INT(DEGENATRON_GAMES_TEXT_ITEM_NUMBER_0)+(iValue / ROUND(POW(10.0,to_float(iChar)))) % 10)
|
|
DEGENATRON_GAMES_DRAW_PIXELSPACE_SPRITE(eTextureName,vCharCenter,vCharSize,0.0, rgba)
|
|
ENDREPEAT
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_INT_IN_SCREEN(INT iValue,VECTOR_2D vPosRate, RGBA_COLOUR_STRUCT rgba, eTextJustification justification)
|
|
TEXT_PLACEMENT textPlacement
|
|
textPlacement.x = vPosRate.x
|
|
textPlacement.y = vPosRate.y
|
|
TEXT_STYLE textStyle
|
|
SET_TITLE_SMALL_TEXT(textStyle)
|
|
textStyle.XScale = 1.0
|
|
textStyle.YScale = 1.0
|
|
|
|
TEXT_LABEL_63 output
|
|
output = " "
|
|
output += iValue
|
|
textStyle.r = rgba.iR
|
|
textStyle.g = rgba.iG
|
|
textStyle.b = rgba.iB
|
|
|
|
DRAW_TEXT_WITH_STRING(textPlacement, textStyle, "DBG_STRING",output,justification)
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_TEXT_IN_SCREEN(STRING sValue,VECTOR_2D vPosRate, RGBA_COLOUR_STRUCT rgba, eTextJustification justification, BOOL bAlignCentre, BOOL bAlignRight)
|
|
UNUSED_PARAMETER(justification)
|
|
TEXT_PLACEMENT textPlacement
|
|
textPlacement.x = vPosRate.x
|
|
textPlacement.y = vPosRate.y
|
|
TEXT_STYLE textStyle
|
|
SET_TITLE_SMALL_TEXT(textStyle)
|
|
textStyle.XScale = 1.0
|
|
textStyle.YScale = 1.0
|
|
|
|
textStyle.r = rgba.iR
|
|
textStyle.g = rgba.iG
|
|
textStyle.b = rgba.iB
|
|
|
|
IF NOT IS_STRING_EMPTY_HUD(sValue)
|
|
IF IS_SAFE_TO_DRAW_ON_SCREEN()
|
|
|
|
SET_TEXT_STYLE(textStyle)
|
|
SET_TEXT_RIGHT_JUSTIFY(bAlignRight)
|
|
SET_TEXT_CENTRE(bAlignCentre)
|
|
SET_TEXT_JUSTIFICATION(justification)
|
|
|
|
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("DBG_STRING")
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(sValue)
|
|
END_TEXT_COMMAND_DISPLAY_TEXT(ADJUST_SCREEN_X_POSITION(textPlacement.x), ADJUST_SCREEN_Y_POSITION(textPlacement.y))
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_DRAW_TEXT(STRING sValue, VECTOR_2D vPosRate, RGBA_COLOUR_STRUCT rgba, eTextJustification justification = FONT_LEFT, BOOL bAlignCentre = FALSE, BOOL bAlignRight = FALSE)
|
|
VECTOR_2D screenCenter = DEGENATRON_GAMES_GET_SCREEN_CENTER()
|
|
VECTOR_2D screenSize = DEGENATRON_GAMES_GET_SCREEN_SIZE()
|
|
VECTOR_2D vPos
|
|
vPos.x = ( screenCenter.x - screenSize.x/2.0*DEGENATRON_GAMES_SCALE_RATIO() + vPosRate.x*screenSize.x*DEGENATRON_GAMES_SCALE_RATIO() ) / screenSize.x
|
|
vPos.y = ( screenCenter.y - screenSize.y/2.0*DEGENATRON_GAMES_SCALE_RATIO() + vPosRate.y*screenSize.y*DEGENATRON_GAMES_SCALE_RATIO() ) / screenSize.y
|
|
DEGENATRON_GAMES_TEXT_IN_SCREEN(sValue,vPos,rgba,justification,bAlignCentre,bAlignRight)
|
|
ENDPROC
|
|
|
|
PROC DEGENATRON_GAMES_DRAW_SCORE_DATA(INT iValue, VECTOR_2D vPosRate, BOOL bSquare, RGBA_COLOUR_STRUCT rgba, eTextJustification justification = FONT_LEFT)
|
|
VECTOR_2D screenCenter = DEGENATRON_GAMES_GET_SCREEN_CENTER()
|
|
VECTOR_2D screenSize = DEGENATRON_GAMES_GET_SCREEN_SIZE()
|
|
VECTOR_2D scoreSquareSize = DEGENATRON_GAMES_DRAW_SCORE_GET_SQUARE_SIZE()
|
|
VECTOR_2D scoreSize = DEGENATRON_GAMES_GET_SCORE_SIZE()
|
|
VECTOR_2D vPos
|
|
vPos.x = ( screenCenter.x - screenSize.x/2.0*DEGENATRON_GAMES_SCALE_RATIO() + vPosRate.x*screenSize.x*DEGENATRON_GAMES_SCALE_RATIO() ) / screenSize.x
|
|
vPos.y = ( screenCenter.y - screenSize.y/2.0*DEGENATRON_GAMES_SCALE_RATIO() + vPosRate.y*screenSize.y*DEGENATRON_GAMES_SCALE_RATIO() ) / screenSize.y
|
|
DEGENATRON_GAMES_INT_IN_SCREEN(iValue,vPos,rgba,justification)
|
|
IF bSquare
|
|
vPos.x = ( screenCenter.x - screenSize.x/2.0*DEGENATRON_GAMES_SCALE_RATIO() + vPosRate.x*screenSize.x*DEGENATRON_GAMES_SCALE_RATIO()) - scoreSquareSize.x/2.0*DEGENATRON_GAMES_SCALE_RATIO()
|
|
vPos.y = ( screenCenter.y - screenSize.y/2.0*DEGENATRON_GAMES_SCALE_RATIO() ) + scoreSize.y/2.0*DEGENATRON_GAMES_SCALE_RATIO()
|
|
DEGENATRON_GAMES_DRAW_PIXELSPACE_RECT(vPos, MULTIPLY_VECTOR_2D(scoreSquareSize,DEGENATRON_GAMES_SCALE_RATIO()), rgba)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
#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, 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
|
|
|
|
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
|