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