USING "gunslinger_arcade_using.sch" PROC TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(VECTOR_2D vPos, VECTOR_2D vSize, STRING sSprite, INT iLane) sTLGData.sBackgroundData[sTLGData.iNumberOfBackgroundElements].bRendering = TRUE sTLGData.sBackgroundData[sTLGData.iNumberOfBackgroundElements].vSpritePos = vPos sTLGData.sBackgroundData[sTLGData.iNumberOfBackgroundElements].vSpriteSize = vSize sTLGData.sBackgroundData[sTLGData.iNumberOfBackgroundElements].sSprite = sSprite sTLGData.sBackgroundData[sTLGData.iNumberOfBackgroundElements].iLane = iLane sTLGData.sBackgroundData[sTLGData.iNumberOfBackgroundElements].bRendering = TRUE sTLGData.iNumberOfBackgroundElements++ ENDPROC PROC TLG_INIT_BACKGROUND(TLG_LEVELS level) sTLGData.iFade = 255 sTLGData.bFadingOut = FALSE FLOAT fXPos FLOAT fCloudSpace FLOAT fCaveBackgroundWall FLOAT fCaveBackgroundRocks FLOAT fGraveyardClouds FLOAT fGraveyardFence FLOAT fGraveyardTrees INT i = 0, j = 0 WHILE j < ciTLG_MAX_BACKGROUND_TILES sTLGData.sBackgroundTilesData[j].vSpritePos.X = TO_FLOAT(i) i += 276 j ++ ENDWHILE SWITCH level CASE TLG_LEVEL_DESERT TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(50, 350), INIT_VECTOR_2D(cfTLG_CANYON_4_SPRITE_WIDTH, cfTLG_CANYON_4_SPRITE_HEIGHT), "canyon4", 0) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(300, 350), INIT_VECTOR_2D(cfTLG_CANYON_4_SPRITE_WIDTH, cfTLG_CANYON_4_SPRITE_HEIGHT), "canyon4", 0) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(700, 350), INIT_VECTOR_2D(cfTLG_CANYON_4_SPRITE_WIDTH, cfTLG_CANYON_4_SPRITE_HEIGHT), "canyon4", 0) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(960, 350), INIT_VECTOR_2D(cfTLG_CANYON_4_SPRITE_WIDTH, cfTLG_CANYON_4_SPRITE_HEIGHT), "canyon4", 0) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1100, 350), INIT_VECTOR_2D(cfTLG_CANYON_4_SPRITE_WIDTH, cfTLG_CANYON_4_SPRITE_HEIGHT), "canyon4", 0) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1300, 350), INIT_VECTOR_2D(cfTLG_CANYON_4_SPRITE_WIDTH, cfTLG_CANYON_4_SPRITE_HEIGHT), "canyon4", 0) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1800, 350), INIT_VECTOR_2D(cfTLG_CANYON_4_SPRITE_WIDTH, cfTLG_CANYON_4_SPRITE_HEIGHT), "canyon4", 0) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(cfTLG_LEVEL1_CLOUD_X, cfTLG_LEVEL1_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL1_CLOUD_WIDTH, cfTLG_LEVEL1_CLOUD_HEIGHT), "LEVEL_01_DESERT_CLOUDS_TILE", 0) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(cfTLG_LEVEL1_CLOUD_X+cfTLG_LEVEL1_CLOUD_WIDTH, cfTLG_LEVEL1_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL1_CLOUD_WIDTH, cfTLG_LEVEL1_CLOUD_HEIGHT), "LEVEL_01_DESERT_CLOUDS_TILE", 0) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(cfTLG_LEVEL1_CLOUD_X+(cfTLG_LEVEL1_CLOUD_WIDTH*2.0), cfTLG_LEVEL1_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL1_CLOUD_WIDTH, cfTLG_LEVEL1_CLOUD_HEIGHT), "LEVEL_01_DESERT_CLOUDS_TILE", 0) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(200, 305), INIT_VECTOR_2D(cfTLG_CANYON_1_SPRITE_WIDTH, cfTLG_CANYON_1_SPRITE_HEIGHT), "canyon1", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(350, 305), INIT_VECTOR_2D(cfTLG_CANYON_1_SPRITE_WIDTH, cfTLG_CANYON_1_SPRITE_HEIGHT), "canyon2", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(700, 305), INIT_VECTOR_2D(cfTLG_CANYON_2_SPRITE_WIDTH, cfTLG_CANYON_2_SPRITE_HEIGHT), "canyon3", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(900, 305), INIT_VECTOR_2D(cfTLG_CANYON_1_SPRITE_WIDTH, cfTLG_CANYON_1_SPRITE_HEIGHT), "canyon1", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1200, 305), INIT_VECTOR_2D(cfTLG_CANYON_1_SPRITE_WIDTH, cfTLG_CANYON_1_SPRITE_HEIGHT), "canyon2", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1450, 305), INIT_VECTOR_2D(cfTLG_CANYON_2_SPRITE_WIDTH, cfTLG_CANYON_2_SPRITE_HEIGHT), "canyon3", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1750, 305), INIT_VECTOR_2D(cfTLG_CANYON_1_SPRITE_WIDTH, cfTLG_CANYON_1_SPRITE_HEIGHT), "canyon1", 1) BREAK CASE TLG_LEVEL_TOWN fXPos = cfTLG_LEVEL2_CLOUD_X fCloudSpace = cfTLG_LEVEL2_CLOUD_GAP TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL2_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL2_CLOUD1_WIDTH, cfTLG_LEVEL2_CLOUD1_HEIGHT), "LEVEL_02_TOWN_BACKGROUND_CLOUDS_01", 0) fXPos += (cfTLG_LEVEL2_CLOUD1_WIDTH/2.0) + (cfTLG_LEVEL2_CLOUD2_WIDTH/2.0) + fCloudSpace TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL2_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL2_CLOUD2_WIDTH, cfTLG_LEVEL2_CLOUD2_HEIGHT), "LEVEL_02_TOWN_BACKGROUND_CLOUDS_02", 0) fXPos += (cfTLG_LEVEL2_CLOUD2_WIDTH / 2.0) + (cfTLG_LEVEL2_CLOUD3_WIDTH / 2.0) + fCloudSpace TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL2_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL2_CLOUD3_WIDTH, cfTLG_LEVEL2_CLOUD3_HEIGHT), "LEVEL_02_TOWN_BACKGROUND_CLOUDS_03", 0) fXPos += (cfTLG_LEVEL2_CLOUD3_WIDTH / 2.0) + (cfTLG_LEVEL2_CLOUD4_WIDTH / 2.0) + fCloudSpace TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL2_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL2_CLOUD4_WIDTH, cfTLG_LEVEL2_CLOUD4_HEIGHT), "LEVEL_02_TOWN_BACKGROUND_CLOUDS_04", 0) fXPos += (cfTLG_LEVEL2_CLOUD4_WIDTH / 2.0) + (cfTLG_LEVEL2_CLOUD5_WIDTH / 2.0) + fCloudSpace TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL2_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL2_CLOUD5_WIDTH, cfTLG_LEVEL2_CLOUD5_HEIGHT), "LEVEL_02_TOWN_BACKGROUND_CLOUDS_05", 0) fXPos += (cfTLG_LEVEL2_CLOUD5_WIDTH / 2.0) + (cfTLG_LEVEL2_CLOUD6_WIDTH / 2.0) + fCloudSpace TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL2_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL2_CLOUD6_WIDTH, cfTLG_LEVEL2_CLOUD6_HEIGHT), "LEVEL_02_TOWN_BACKGROUND_CLOUDS_06", 0) fXPos += (cfTLG_LEVEL2_CLOUD6_WIDTH / 2.0) + (cfTLG_LEVEL2_CLOUD7_WIDTH / 2.0) + fCloudSpace TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL2_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL2_CLOUD7_WIDTH, cfTLG_LEVEL2_CLOUD7_HEIGHT), "LEVEL_02_TOWN_BACKGROUND_CLOUDS_07", 0) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(cfTLG_MOUNTAIN_1_SPRITE_X, cfTLG_MOUNTAIN_1_SPRITE_Y), INIT_VECTOR_2D(cfTLG_MOUNTAIN_1_SPRITE_WIDTH, cfTLG_MOUNTAIN_1_SPRITE_HEIGHT), "mountains", 0) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(cfTLG_MOUNTAIN_1_SPRITE_X+cfTLG_MOUNTAIN_1_SPRITE_WIDTH, cfTLG_MOUNTAIN_1_SPRITE_Y), INIT_VECTOR_2D(cfTLG_MOUNTAIN_1_SPRITE_WIDTH, cfTLG_MOUNTAIN_1_SPRITE_HEIGHT), "mountains", 0) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(cfTLG_MOUNTAIN_1_SPRITE_X+( 2 * cfTLG_MOUNTAIN_1_SPRITE_WIDTH), cfTLG_MOUNTAIN_1_SPRITE_Y), INIT_VECTOR_2D(cfTLG_MOUNTAIN_1_SPRITE_WIDTH, cfTLG_MOUNTAIN_1_SPRITE_HEIGHT), "mountains", 0) // 7 small mountains TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(200, 320), INIT_VECTOR_2D(cfTLG_MOUNTAIN_2_SPRITE_WIDTH, cfTLG_MOUNTAIN_2_SPRITE_HEIGHT), "mountain-small1", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(350, 320), INIT_VECTOR_2D(cfTLG_MOUNTAIN_2_SPRITE_WIDTH, cfTLG_MOUNTAIN_2_SPRITE_HEIGHT), "mountain-small1", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(700, 320), INIT_VECTOR_2D(cfTLG_MOUNTAIN_2_SPRITE_WIDTH, cfTLG_MOUNTAIN_2_SPRITE_HEIGHT), "mountain-small2", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(900, 320), INIT_VECTOR_2D(cfTLG_MOUNTAIN_2_SPRITE_WIDTH, cfTLG_MOUNTAIN_2_SPRITE_HEIGHT), "mountain-small1", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1200, 320), INIT_VECTOR_2D(cfTLG_MOUNTAIN_2_SPRITE_WIDTH, cfTLG_MOUNTAIN_2_SPRITE_HEIGHT), "mountain-small2", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1450, 320), INIT_VECTOR_2D(cfTLG_MOUNTAIN_2_SPRITE_WIDTH, cfTLG_MOUNTAIN_2_SPRITE_HEIGHT), "mountain-small1", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1750, 320), INIT_VECTOR_2D(cfTLG_MOUNTAIN_2_SPRITE_WIDTH, cfTLG_MOUNTAIN_2_SPRITE_HEIGHT), "mountain-small2", 1) // Small fences FLOAT fFirstFenceX fFirstFenceX = 184 VECTOR_2D v2Pos FOR i = 0 TO 20 // 21 across 7 background tiles v2Pos = INIT_VECTOR_2D(fFirstFenceX + (i * cfTLG_FENCE_SMALL_SPRITE_WIDTH), 415) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(v2Pos, INIT_VECTOR_2D(cfTLG_FENCE_SMALL_SPRITE_WIDTH, cfTLG_FENCE_SMALL_SPRITE_HEIGHT), "fence-small", 1) ENDFOR // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(292, 415), INIT_VECTOR_2D(cfTLG_FENCE_SMALL_SPRITE_WIDTH, cfTLG_FENCE_SMALL_SPRITE_HEIGHT), "fence-small", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(384, 415), INIT_VECTOR_2D(cfTLG_FENCE_SMALL_SPRITE_WIDTH, cfTLG_FENCE_SMALL_SPRITE_HEIGHT), "fence-small", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(476, 415), INIT_VECTOR_2D(cfTLG_FENCE_SMALL_SPRITE_WIDTH, cfTLG_FENCE_SMALL_SPRITE_HEIGHT), "fence-small", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(568, 415), INIT_VECTOR_2D(cfTLG_FENCE_SMALL_SPRITE_WIDTH, cfTLG_FENCE_SMALL_SPRITE_HEIGHT), "fence-small", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(660, 415), INIT_VECTOR_2D(cfTLG_FENCE_SMALL_SPRITE_WIDTH, cfTLG_FENCE_SMALL_SPRITE_HEIGHT), "fence-small", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(752, 415), INIT_VECTOR_2D(cfTLG_FENCE_SMALL_SPRITE_WIDTH, cfTLG_FENCE_SMALL_SPRITE_HEIGHT), "fence-small", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(844, 415), INIT_VECTOR_2D(cfTLG_FENCE_SMALL_SPRITE_WIDTH, cfTLG_FENCE_SMALL_SPRITE_HEIGHT), "fence-small", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(936, 415), INIT_VECTOR_2D(cfTLG_FENCE_SMALL_SPRITE_WIDTH, cfTLG_FENCE_SMALL_SPRITE_HEIGHT), "fence-small", 1) // Rocks TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(700, 675), INIT_VECTOR_2D(cfTLG_ROCKS_SPRITE_WIDTH, cfTLG_ROCKS_SPRITE_HEIGHT), "rocks", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(800, 755), INIT_VECTOR_2D(cfTLG_ROCKS_SPRITE_WIDTH, cfTLG_ROCKS_SPRITE_HEIGHT), "rocks", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1000, 895), INIT_VECTOR_2D(cfTLG_ROCKS_SPRITE_WIDTH, cfTLG_ROCKS_SPRITE_HEIGHT), "rocks", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1300, 1000), INIT_VECTOR_2D(cfTLG_ROCKS_SPRITE_WIDTH, cfTLG_ROCKS_SPRITE_HEIGHT), "rocks", 1) BREAK CASE TLG_LEVEL_FOREST fXPos = cfTLG_LEVEL3_CLOUD_X fCloudSpace = cfTLG_LEVEL3_CLOUD_GAP TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL3_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL3_CLOUD1_WIDTH, cfTLG_LEVEL3_CLOUD1_HEIGHT), "LEVEL_03_FOREST_BACKGROUND_CLOUDS_01", 0) fXPos += (cfTLG_LEVEL3_CLOUD1_WIDTH/2.0) + (cfTLG_LEVEL3_CLOUD2_WIDTH/2.0) + fCloudSpace TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL3_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL3_CLOUD2_WIDTH, cfTLG_LEVEL3_CLOUD2_HEIGHT), "LEVEL_03_FOREST_BACKGROUND_CLOUDS_02", 0) fXPos += (cfTLG_LEVEL3_CLOUD2_WIDTH / 2.0) + (cfTLG_LEVEL3_CLOUD3_WIDTH / 2.0) + fCloudSpace TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL3_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL3_CLOUD3_WIDTH, cfTLG_LEVEL3_CLOUD3_HEIGHT), "LEVEL_03_FOREST_BACKGROUND_CLOUDS_03", 0) fXPos += (cfTLG_LEVEL3_CLOUD3_WIDTH / 2.0) + (cfTLG_LEVEL3_CLOUD4_WIDTH / 2.0) + fCloudSpace TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL3_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL3_CLOUD4_WIDTH, cfTLG_LEVEL3_CLOUD4_HEIGHT), "LEVEL_03_FOREST_BACKGROUND_CLOUDS_04", 0) fXPos += (cfTLG_LEVEL3_CLOUD4_WIDTH / 2.0) + (cfTLG_LEVEL3_CLOUD5_WIDTH / 2.0) + fCloudSpace TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL3_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL3_CLOUD5_WIDTH, cfTLG_LEVEL3_CLOUD5_HEIGHT), "LEVEL_03_FOREST_BACKGROUND_CLOUDS_05", 0) fXPos += (cfTLG_LEVEL3_CLOUD5_WIDTH / 2.0) + (cfTLG_LEVEL3_CLOUD6_WIDTH / 2.0) + fCloudSpace TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL3_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL3_CLOUD6_WIDTH, cfTLG_LEVEL3_CLOUD6_HEIGHT), "LEVEL_03_FOREST_BACKGROUND_CLOUDS_06", 0) fXPos += (cfTLG_LEVEL3_CLOUD6_WIDTH / 2.0) + (cfTLG_LEVEL3_CLOUD7_WIDTH / 2.0) + fCloudSpace TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(fXPos, cfTLG_LEVEL3_CLOUD_Y), INIT_VECTOR_2D(cfTLG_LEVEL3_CLOUD7_WIDTH, cfTLG_LEVEL3_CLOUD7_HEIGHT), "LEVEL_03_FOREST_BACKGROUND_CLOUDS_07", 0) FLOAT fFirstBackgroundTrees fFirstBackgroundTrees = cfTLG_LEVEL3_BACKGROUND_TREES_X VECTOR_2D v2Trees FOR i = 0 TO 6 v2Trees = INIT_VECTOR_2D(fFirstBackgroundTrees + (i * cfTLG_LEVEL3_BACKGROUND_TREES_WIDTH), cfTLG_LEVEL3_BACKGROUND_TREES_Y) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(v2Trees, INIT_VECTOR_2D(cfTLG_LEVEL3_BACKGROUND_TREES_WIDTH, cfTLG_LEVEL3_BACKGROUND_TREES_HEIGHT), "LEVEL_03_FOREST_BACKGROUND_TREES", 0) ENDFOR // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1288.125, 696.625), INIT_VECTOR_2D(cfTLG_FOREST_GRASS_SPRITE_WIDTH, cfTLG_FOREST_GRASS_SPRITE_HEIGHT), "FOREST_FLOOR_GRASS", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(665.750, 851.250), INIT_VECTOR_2D(cfTLG_FOREST_GRASS_SPRITE_WIDTH, cfTLG_FOREST_GRASS_SPRITE_HEIGHT), "FOREST_FLOOR_GRASS", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(855.000, 660.000), INIT_VECTOR_2D(cfTLG_FOREST_ROCKS_SPRITE_WIDTH, cfTLG_FOREST_ROCKS_SPRITE_HEIGHT), "LEVEL_03_FOREST_ROCKS", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1275.000, 905), INIT_VECTOR_2D(cfTLG_FOREST_ROCKS_SPRITE_WIDTH, cfTLG_FOREST_ROCKS_SPRITE_HEIGHT), "LEVEL_03_FOREST_ROCKS", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1110.000, 485), INIT_VECTOR_2D(cfTLG_FOREST_ROCKS_SPRITE_WIDTH, cfTLG_FOREST_ROCKS_SPRITE_HEIGHT), "LEVEL_03_FOREST_ROCKS", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1000, 895), INIT_VECTOR_2D(cfTLG_FOREST_GRASS_SPRITE_WIDTH, cfTLG_FOREST_GRASS_SPRITE_HEIGHT), "FOREST_FLOOR_GRASS", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1300, 1000), INIT_VECTOR_2D(cfTLG_FOREST_GRASS_SPRITE_WIDTH, cfTLG_FOREST_GRASS_SPRITE_HEIGHT), "FOREST_FLOOR_GRASS", 1) BREAK CASE TLG_LEVEL_MINE fCaveBackgroundWall = cfTLG_LEVEL4_BACKGROUND_SURFACE_X fCaveBackgroundRocks = cfTLG_LEVEL4_BACKGROUND_ROCKS_X VECTOR_2D v2Cave FOR i = 0 TO 6 v2Cave = INIT_VECTOR_2D(fCaveBackgroundWall + (i * cfTLG_LEVEL4_BACKGROUND_SURFACE_WIDTH), cfTLG_LEVEL4_BACKGROUND_SURFACE_Y) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(v2Cave, INIT_VECTOR_2D(cfTLG_LEVEL4_BACKGROUND_SURFACE_WIDTH, cfTLG_LEVEL4_BACKGROUND_SURFACE_HEIGHT), "LEVEL_04_GOLDMINE_CAVE_BACKGROUND_CAVE", 0) ENDFOR FOR i = 0 TO 6 v2Cave = INIT_VECTOR_2D(fCaveBackgroundRocks + (i * cfTLG_LEVEL4_BACKGROUND_ROCKS_WIDTH), cfTLG_LEVEL4_BACKGROUND_ROCKS_Y) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(v2Cave, INIT_VECTOR_2D(cfTLG_LEVEL4_BACKGROUND_ROCKS_WIDTH, cfTLG_LEVEL4_BACKGROUND_ROCKS_HEIGHT), "LEVEL_04_GOLDMINE_CAVE_TILE_02", 0) ENDFOR // Cave roof fCaveBackgroundRocks = cfTLG_ROCK_TOP_SPRITE_WIDTH FOR i = 0 TO 6 v2Cave = INIT_VECTOR_2D(fCaveBackgroundRocks + (i * cfTLG_ROCK_TOP_SPRITE_WIDTH), 100) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(v2Cave, INIT_VECTOR_2D(cfTLG_ROCK_TOP_SPRITE_WIDTH, cfTLG_ROCK_TOP_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_CAVE_TILE", 1) ENDFOR // Railway fCaveBackgroundRocks = cfTLG_RAILWAY_SPRITE_WIDTH FOR i = 0 TO 6 v2Cave = INIT_VECTOR_2D(fCaveBackgroundRocks + (i * cfTLG_RAILWAY_SPRITE_WIDTH), 410) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(v2Cave, INIT_VECTOR_2D(cfTLG_RAILWAY_SPRITE_WIDTH, cfTLG_RAILWAY_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_ASSETS_10", 1) ENDFOR //-- Railway // Wooden structures TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(500, 220), INIT_VECTOR_2D(cfTLG_WOODENSTRUCTURE_SPRITE_WIDTH, cfTLG_WOODENSTRUCTURE_SPRITE_HEIGHT), "WOODENSTRUCTURE", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1000, 220), INIT_VECTOR_2D(cfTLG_WOODENSTRUCTURE_SPRITE_WIDTH, cfTLG_WOODENSTRUCTURE_SPRITE_HEIGHT), "WOODENSTRUCTURE", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1500, 220), INIT_VECTOR_2D(cfTLG_WOODENSTRUCTURE_SPRITE_WIDTH, cfTLG_WOODENSTRUCTURE_SPRITE_HEIGHT), "WOODENSTRUCTURE", 1) // CAVE ROOF // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(142, 100), INIT_VECTOR_2D(cfTLG_ROCK_TOP_SPRITE_WIDTH, cfTLG_ROCK_TOP_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_CAVE_TILE", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(426, 100), INIT_VECTOR_2D(cfTLG_ROCK_TOP_SPRITE_WIDTH, cfTLG_ROCK_TOP_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_CAVE_TILE", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(710, 100), INIT_VECTOR_2D(cfTLG_ROCK_TOP_SPRITE_WIDTH, cfTLG_ROCK_TOP_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_CAVE_TILE", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(994, 100), INIT_VECTOR_2D(cfTLG_ROCK_TOP_SPRITE_WIDTH, cfTLG_ROCK_TOP_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_CAVE_TILE", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1278, 100), INIT_VECTOR_2D(cfTLG_ROCK_TOP_SPRITE_WIDTH, cfTLG_ROCK_TOP_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_CAVE_TILE", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1562, 100), INIT_VECTOR_2D(cfTLG_ROCK_TOP_SPRITE_WIDTH, cfTLG_ROCK_TOP_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_CAVE_TILE", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1846, 100), INIT_VECTOR_2D(cfTLG_ROCK_TOP_SPRITE_WIDTH, cfTLG_ROCK_TOP_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_CAVE_TILE", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(2130, 100), INIT_VECTOR_2D(cfTLG_ROCK_TOP_SPRITE_WIDTH, cfTLG_ROCK_TOP_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_CAVE_TILE", 1) // RAILWAY // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(142, 410), INIT_VECTOR_2D(cfTLG_RAILWAY_SPRITE_WIDTH, cfTLG_RAILWAY_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_ASSETS_10", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(426, 410), INIT_VECTOR_2D(cfTLG_RAILWAY_SPRITE_WIDTH, cfTLG_RAILWAY_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_ASSETS_10", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(710, 410), INIT_VECTOR_2D(cfTLG_RAILWAY_SPRITE_WIDTH, cfTLG_RAILWAY_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_ASSETS_10", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(994, 410), INIT_VECTOR_2D(cfTLG_RAILWAY_SPRITE_WIDTH, cfTLG_RAILWAY_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_ASSETS_10", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1278, 410), INIT_VECTOR_2D(cfTLG_RAILWAY_SPRITE_WIDTH, cfTLG_RAILWAY_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_ASSETS_10", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1562, 410), INIT_VECTOR_2D(cfTLG_RAILWAY_SPRITE_WIDTH, cfTLG_RAILWAY_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_ASSETS_10", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1846, 410), INIT_VECTOR_2D(cfTLG_RAILWAY_SPRITE_WIDTH, cfTLG_RAILWAY_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_ASSETS_10", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(2130, 410), INIT_VECTOR_2D(cfTLG_RAILWAY_SPRITE_WIDTH, cfTLG_RAILWAY_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_ASSETS_10", 1) //-- Surface Rocks TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(700, 675), INIT_VECTOR_2D(cfTLG_ROCKS_SPRITE_WIDTH, cfTLG_ROCKS_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_ROCK", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1020.0, 785), INIT_VECTOR_2D(cfTLG_ROCKS_SPRITE_WIDTH, cfTLG_ROCKS_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_ROCK", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1365.0, 545.0), INIT_VECTOR_2D(cfTLG_ROCKS_SPRITE_WIDTH, cfTLG_ROCKS_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_ROCK", 1) // TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1300, 1000), INIT_VECTOR_2D(cfTLG_ROCKS_SPRITE_WIDTH, cfTLG_ROCKS_SPRITE_HEIGHT), "LEVEL_04_GOLDMINE_ROCK", 1) BREAK CASE TLG_LEVEL_GRAVEYARD fGraveyardClouds = cfTLG_LEVEL5_BACKGROUND_CLOUDS_X fGraveyardFence = cfTLG_LEVEL5_BACKGROUND_FENCE_X fGraveyardTrees = cfTLG_LEVEL5_BACKGROUND_TREES_X VECTOR_2D v2Graveyard FOR i = 0 TO 6 v2Graveyard = INIT_VECTOR_2D(fGraveyardClouds + (i * cfTLG_LEVEL5_BACKGROUND_CLOUDS_WIDTH), cfTLG_LEVEL5_BACKGROUND_CLOUDS_Y) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(v2Graveyard, INIT_VECTOR_2D(cfTLG_LEVEL5_BACKGROUND_CLOUDS_WIDTH, cfTLG_LEVEL5_BACKGROUND_CLOUDS_HEIGHT), "LEVEL_05_GRAVEYARD_BACKGROUND_CLOUDS", 0) ENDFOR FOR i = 0 TO 6 v2Graveyard = INIT_VECTOR_2D(fGraveyardTrees + (i * cfTLG_LEVEL5_BACKGROUND_TREES_WIDTH), cfTLG_LEVEL5_BACKGROUND_TREES_Y) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(v2Graveyard, INIT_VECTOR_2D(cfTLG_LEVEL5_BACKGROUND_TREES_WIDTH, cfTLG_LEVEL5_BACKGROUND_TREES_HEIGHT), "LEVEL_05_GRAVEYARD_BACKGROUND_TILE_TREES", 0) ENDFOR FOR i = 0 TO 6 v2Graveyard = INIT_VECTOR_2D(fGraveyardFence + (i * cfTLG_LEVEL5_BACKGROUND_FENCE_WIDTH), cfTLG_LEVEL5_BACKGROUND_FENCE_Y) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(v2Graveyard, INIT_VECTOR_2D(cfTLG_LEVEL5_BACKGROUND_FENCE_WIDTH, cfTLG_LEVEL5_BACKGROUND_FENCE_HEIGHT), "LEVEL_05_GRAVEYARD_BACKGROUND_TILE_GATE", 0) ENDFOR // Trees TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(500, 260), INIT_VECTOR_2D(cfTLG_GRAVEYARD_TREE_1_SPRITE_WIDTH, cfTLG_GRAVEYARD_TREE_1_SPRITE_HEIGHT), "LEVEL_05_GRAVEYARD_TREE_01", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1000, 260), INIT_VECTOR_2D(cfTLG_GRAVEYARD_TREE_2_SPRITE_WIDTH, cfTLG_GRAVEYARD_TREE_2_SPRITE_HEIGHT), "LEVEL_05_GRAVEYARD_TREE_02", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1500, 260), INIT_VECTOR_2D(cfTLG_GRAVEYARD_TREE_3_SPRITE_WIDTH, cfTLG_GRAVEYARD_TREE_3_SPRITE_HEIGHT), "LEVEL_05_GRAVEYARD_TREE_03", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(700, 400), INIT_VECTOR_2D(cfTLG_BACKGROUND_TOMBS_SPRITE_WIDTH, cfTLG_BACKGROUND_TOMBS_SPRITE_HEIGHT), "TOMBSTONES_1", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(300, 450), INIT_VECTOR_2D(cfTLG_BACKGROUND_TOMBS_SPRITE_WIDTH, cfTLG_BACKGROUND_TOMBS_SPRITE_HEIGHT), "TOMBSTONES_2", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1300, 420), INIT_VECTOR_2D(cfTLG_BACKGROUND_TOMBS_SPRITE_WIDTH, cfTLG_BACKGROUND_TOMBS_SPRITE_HEIGHT), "TOMBSTONES_2", 1) TLG_ADD_BACKGROUND_ELEMENT_TO_LIST(INIT_VECTOR_2D(1700, 450), INIT_VECTOR_2D(cfTLG_BACKGROUND_TOMBS_SPRITE_WIDTH, cfTLG_BACKGROUND_TOMBS_SPRITE_HEIGHT), "TOMBSTONES_1", 1) BREAK ENDSWITCH #IF IS_DEBUG_BUILD FOR i = 0 TO ciTLG_MAX_BACKGROUND_ELEMS - 1 CDEBUG1LN(DEBUG_MINIGAME, "[TLG_INIT_BACKGROUND] Element ", i, " Type: ", sTLGData.sBackgroundData[i].sSprite) ENDFOR #ENDIF ENDPROC FUNC INT TLG_GET_FREE_SLOT_FOR_ITEM() INT i REPEAT ciTLG_MAX_ITEMS i IF sTLGData.sItemData[i].bRendering = FALSE AND sTLGData.sItemData[i].iRenderAfterWarpCount = 0 AND sTLGData.sItemData[i].iMinActiveStage = 0 CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_ITEM_TO_LIST] Using slot ", i) RETURN i ENDIF ENDREPEAT RETURN -1 ENDFUNC // Items PROC TLG_ADD_ITEM_TO_LIST(VECTOR_2D vPos, TLG_COLLECTIBLE_TYPES eType, INT iLane, INT iRenderAfterWarpCount = 0, FLOAT fForceScale = 1.0, INT iMinStageActive = 0) INT iSlotToUse = TLG_GET_FREE_SLOT_FOR_ITEM() IF iSlotToUse = -1 #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_ITEM_TO_LIST] Not adding item type ", TLG_GET_COLLECTIBLE_TYPE_AS_STRING(eType), " as ran out of slots") #ENDIF EXIT ENDIF #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_ITEM_TO_LIST] Add item type ", TLG_GET_COLLECTIBLE_TYPE_AS_STRING(eType), " Lane: ", iLane, " Pos: ", vPos.x, ", ", vPos.y, " iRenderAfterWarpCount: ", iRenderAfterWarpCount, " fForceScale: ", fForceScale, " Num so far (inc this): ", sTLGData.iNumberOfItems + 1) CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_ITEM_TO_LIST] Slot to use: ", iSlotToUse, " iMinActiveStage: ", iMinStageActive) DEBUG_PRINTCALLSTACK() #ENDIF IF iRenderAfterWarpCount = 0 AND iMinStageActive = 0 sTLGData.sItemData[iSlotToUse].bRendering = TRUE ENDIF sTLGData.sItemData[iSlotToUse].iMinActiveStage = iMinStageActive sTLGData.sItemData[iSlotToUse].bShot = FALSE sTLGData.sItemData[iSlotToUse].vSpritePos = vPos sTLGData.sItemData[iSlotToUse].eItemType = eType sTLGData.sItemData[iSlotToUse].iLane = iLane sTLGData.sItemData[iSlotToUse].iRenderAfterWarpCount = iRenderAfterWarpCount sTLGData.sItemData[iSlotToUse].iWarpCount = 0 SWITCH (sTLGData.sItemData[iSlotToUse].eItemType) CASE TLG_MACHINE_GUN_AMMO sTLGData.sItemData[iSlotToUse].vSize = INIT_VECTOR_2D(cfTLG_SPRITE_HUD_AMMO_WIDTH, cfTLG_SPRITE_HUD_AMMO_HEIGHT) BREAK CASE TLG_REVOLVER_AMMO sTLGData.sItemData[iSlotToUse].vSize = INIT_VECTOR_2D(cfTLG_SPRITE_HUD_PISTOL_AMMO_CLIP_WIDTH, cfTLG_SPRITE_HUD_PISTOL_AMMO_CLIP_HEIGHT) BREAK CASE TLG_HEALTH sTLGData.sItemData[iSlotToUse].vSize = INIT_VECTOR_2D(cfTLG_ITEM_HEALTH_WIDTH, cfTLG_ITEM_HEALTH_HEIGHT) BREAK CASE TLG_SHOTGUN_AMMO sTLGData.sItemData[iSlotToUse].vSize = INIT_VECTOR_2D(cfTLG_SPRITE_HUD_SHOTGUN_AMMO_CLIP_WIDTH, cfTLG_SPRITE_HUD_SHOTGUN_AMMO_CLIP_HEIGHT) BREAK CASE TLG_SNAKE_OIL sTLGData.sItemData[iSlotToUse].vSize = INIT_VECTOR_2D(cfTLG_ITEM_SNAKE_OIL_WIDTH, cfTLG_ITEM_SNAKE_OIL_HEIGHT) BREAK CASE TLG_SHERIFF sTLGData.sItemData[iSlotToUse].vSize = INIT_VECTOR_2D(cfTLG_ITEM_SHERIFF_WIDTH, cfTLG_ITEM_SHERIFF_HEIGHT) BREAK CASE TLG_RIFLE_AMMO sTLGData.sItemData[iSlotToUse].vSize = INIT_VECTOR_2D(cfTLG_SPRITE_HUD_RIFLE_AMMO_CLIP_WIDTH, cfTLG_SPRITE_HUD_RIFLE_AMMO_CLIP_HEIGHT) BREAK ENDSWITCH sTLGData.sItemData[iSlotToUse].vSize.x *= fForceScale sTLGData.sItemData[iSlotToUse].vSize.y *= fForceScale sTLGData.iNumberOfItems ++ ENDPROC FUNC BOOL TLG_CAN_SHOOT_THROUGH_COVER_TYPE(TLG_ASSET_TYPES eType) IF TLG_GET_CURRENT_LEVEL() = TLG_LEVEL_FOREST // OR TLG_GET_CURRENT_LEVEL() = TLG_LEVEL_MINE // OR TLG_GET_CURRENT_LEVEL() = TLG_LEVEL_GRAVEYARD RETURN TRUE ENDIF SWITCH eType CASE TLG_ASSET_CACTUS_1 CASE TLG_ASSET_CACTUS_2 CASE TLG_ASSET_CACTUS_3 CASE TLG_ASSET_CACTUS_4 CASE TLG_ASSET_CACTUS_6 CASE TLG_ASSET_CACTUS_9 CASE TLG_ASSET_CACTUS_10 CASE TLG_ASSET_WATER_TOWER CASE TLG_ASSET_FENCE RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL TLG_CAN_SHOOT_THROUGH_COVER(INT iCover) IF sTLGData.sCoverData[iCover].eType = TLG_ASSET_COFFIN AND sTLGData.sCoverData[iCover].bNeverRender RETURN FALSE ENDIF RETURN TLG_CAN_SHOOT_THROUGH_COVER_TYPE(sTLGData.sCoverData[iCover].eType) ENDFUNC FUNC FLOAT TLG_GET_COVER_SIZE_MODIFIER_FOR_COLLISION_CHECK(TLG_ASSET_TYPES eType) UNUSED_PARAMETER(eType) IF TLG_IS_COVER_ASSET_TYPE_BUILDING(eType) RETURN 0.6 ENDIF IF eType = TLG_ASSET_BARRELS RETURN 0.8 ENDIF IF eType = TLG_ASSET_TOMBSTONE_5 OR eType = TLG_ASSET_TOMBSTONE_1 OR eType = TLG_ASSET_TOMBSTONE_2 OR eType = TLG_ASSET_TOMBSTONE_3 RETURN 0.7 ENDIF RETURN 1.0 ENDFUNC PROC TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_COLLECTIBLE_TYPES eType, INT iScreen, VECTOR_2D &vPos, VECTOR_2D &vOffset) SWITCH TLG_GET_CURRENT_LEVEL() CASE TLG_LEVEL_TOWN SWITCH eType CASE TLG_HEALTH CASE TLG_SNAKE_OIL CASE TLG_SHERIFF SWITCH iScreen // vOffset is the offset of the pickup form the large building at base coords (1200, 440) CASE 1 vPos = INIT_VECTOR_2D(1063.875, 822.5) vOffset = INIT_VECTOR_2D(-136.125, 382.5) BREAK CASE 2 vPos = INIT_VECTOR_2D(789.375, 822.5) vOffset = INIT_VECTOR_2D(-410.625, 382.5) BREAK CASE 3 vPos = INIT_VECTOR_2D(993.75, 822.5) vOffset = INIT_VECTOR_2D(-206.25, 382.5) BREAK CASE 4 vPos = INIT_VECTOR_2D(1299.375, 822.5) vOffset = INIT_VECTOR_2D(99.375, 382.5) BREAK ENDSWITCH BREAK CASE TLG_REVOLVER_AMMO SWITCH iScreen CASE 1 vPos = INIT_VECTOR_2D(872.125, 817.125) vOffset = INIT_VECTOR_2D(-327.875, 327.875) BREAK CASE 2 vPos = INIT_VECTOR_2D(1418.625, 870.625) vOffset = INIT_VECTOR_2D(218.625, 870.625) BREAK CASE 3 vPos = INIT_VECTOR_2D(776.0, 817.125) vOffset = INIT_VECTOR_2D(-424.0, 327.875) BREAK CASE 4 vPos = INIT_VECTOR_2D(776.0, 817.125) vOffset = INIT_VECTOR_2D(-424.0, 327.875) BREAK ENDSWITCH BREAK CASE TLG_SHOTGUN_AMMO CASE TLG_RIFLE_AMMO SWITCH iScreen CASE 1 vPos = INIT_VECTOR_2D(872.125, 817.125) vOffset = INIT_VECTOR_2D(-327.875, 327.875) BREAK CASE 2 vPos = INIT_VECTOR_2D(1418.625, 870.625)vOffset = INIT_VECTOR_2D(218.625, 870.625) BREAK CASE 3 vPos = INIT_VECTOR_2D(776.0, 817.125) vOffset = INIT_VECTOR_2D(-424.0, 327.875) BREAK CASE 4 vPos = INIT_VECTOR_2D(776.0, 817.125) vOffset = INIT_VECTOR_2D(-424.0, 327.875) BREAK ENDSWITCH BREAK ENDSWITCH BREAK CASE TLG_LEVEL_FOREST SWITCH eType /* SCREEN 1 Base: (1404.125, 870) SCREEN 2 Base: (1576.1250 , 870.250) SCREEN 3 Base: (1472.25, 474.625) SCREEN 4 Base: (1415.750, 562.375) */ CASE TLG_HEALTH CASE TLG_SNAKE_OIL CASE TLG_SHERIFF SWITCH iScreen CASE 1 vPos = INIT_VECTOR_2D(1218.625, 832.75) vOffset = INIT_VECTOR_2D(-185.5, -37.25) BREAK CASE 2 vPos = INIT_VECTOR_2D(1111.75, 832.75) vOffset = INIT_VECTOR_2D(-464.375, -37.5) BREAK CASE 3 vPos = INIT_VECTOR_2D(1001.375,871.625) vOffset = INIT_VECTOR_2D(-470.875, 397.0) BREAK CASE 4 vPos = INIT_VECTOR_2D(717.875, 577.125) vOffset = INIT_VECTOR_2D(-697.875, 14.75) BREAK ENDSWITCH BREAK // CASE TLG_RIFLE_AMMO SWITCH iScreen CASE 1 vPos = INIT_VECTOR_2D(979.625, 510.500) vOffset = INIT_VECTOR_2D(-424.5,-359.5) BREAK CASE 2 vPos = INIT_VECTOR_2D(1026.250, 510.500) vOffset = INIT_VECTOR_2D(-549.875, -359.75) BREAK CASE 3 vPos = INIT_VECTOR_2D(1083.250, 588.750) vOffset = INIT_VECTOR_2D(-389.0, 114.125) BREAK CASE 4 vPos = INIT_VECTOR_2D(1156.875, 872.750) vOffset = INIT_VECTOR_2D(-258.875, 310.375) BREAK ENDSWITCH BREAK CASE TLG_REVOLVER_AMMO CASE TLG_SHOTGUN_AMMO SWITCH iScreen CASE 1 vPos = INIT_VECTOR_2D(704.625, 842.375) vOffset = INIT_VECTOR_2D(-699.5 ,-27.625) BREAK CASE 2 vPos = INIT_VECTOR_2D(648.625, 870.625) vOffset = INIT_VECTOR_2D(-927.5, 0.375) BREAK CASE 3 vPos = INIT_VECTOR_2D(1316.500, 870.625 ) vOffset = INIT_VECTOR_2D(-155.75, 396.0) BREAK CASE 4 vPos = INIT_VECTOR_2D(762.000, 908.500) vOffset = INIT_VECTOR_2D(-653.75, 346.125) BREAK ENDSWITCH BREAK // ENDSWITCH BREAK CASE TLG_LEVEL_MINE SWITCH eType CASE TLG_HEALTH CASE TLG_SNAKE_OIL CASE TLG_SHERIFF SWITCH iScreen CASE 1 vPos = INIT_VECTOR_2D(835.375, 558.625) vOffset = INIT_VECTOR_2D(-584.25, -187.0) BREAK CASE 2 vPos = INIT_VECTOR_2D(1222.5, 825.375) vOffset = INIT_VECTOR_2D(-172.75, -8.625) BREAK CASE 3 vPos = INIT_VECTOR_2D(1441.25, 886.25) vOffset = INIT_VECTOR_2D(67.25, 347.625) BREAK CASE 4 vPos = INIT_VECTOR_2D(1310.75, 929.125) vOffset = INIT_VECTOR_2D(-44.25, 392.75) BREAK ENDSWITCH BREAK CASE TLG_REVOLVER_AMMO CASE TLG_MACHINE_GUN_AMMO SWITCH iScreen CASE 1 vPos = INIT_VECTOR_2D(778.75, 811.25) vOffset = INIT_VECTOR_2D(-641.25, 65.625) BREAK CASE 2 vPos = INIT_VECTOR_2D(641.0, 799.25) vOffset = INIT_VECTOR_2D(-754.25, -34.75) BREAK CASE 3 vPos = INIT_VECTOR_2D(641.0, 819.875) vOffset = INIT_VECTOR_2D(-733.0, 281.25) BREAK CASE 4 vPos = INIT_VECTOR_2D(589.0, 825.75) vOffset = INIT_VECTOR_2D(-766.0, 289.375) BREAK ENDSWITCH BREAK CASE TLG_SHOTGUN_AMMO CASE TLG_RIFLE_AMMO SWITCH iScreen CASE 1 vPos = INIT_VECTOR_2D(1220.75, 560.75) vOffset = INIT_VECTOR_2D(-199.25, -184.875) BREAK CASE 2 vPos = INIT_VECTOR_2D(1479.375, 560.75) vOffset = INIT_VECTOR_2D(84.125, -273.25) BREAK CASE 3 vPos = INIT_VECTOR_2D(1169.25, 560.75) vOffset = INIT_VECTOR_2D(-204.75, 22.125) BREAK CASE 4 vPos = INIT_VECTOR_2D(679.5, 560.75) vOffset = INIT_VECTOR_2D(-675.5, 536.375) BREAK ENDSWITCH BREAK ENDSWITCH BREAK CASE TLG_LEVEL_GRAVEYARD /* Base coords are: Screen 1: 1700, 850 Screen 2: 1505.500, 857.000 Screen 3: 1521.625, 845.625 Screen 4: 1535.250, 871.375 */ SWITCH eType CASE TLG_SHOTGUN_AMMO CASE TLG_RIFLE_AMMO SWITCH iScreen CASE 1 vPos = INIT_VECTOR_2D(822.875, 874.125) vOffset = INIT_VECTOR_2D(-877.125, 24.125) BREAK CASE 2 vPos = INIT_VECTOR_2D(1001.125, 575.25) vOffset = INIT_VECTOR_2D(-504.375, -281.75) BREAK CASE 3 vPos = INIT_VECTOR_2D(1409.875, 575.25) vOffset = INIT_VECTOR_2D(-111.75, -270.375) BREAK CASE 4 vPos = INIT_VECTOR_2D(1082.875, 552.625) vOffset = INIT_VECTOR_2D(-452.375, -318.75) BREAK ENDSWITCH BREAK CASE TLG_HEALTH CASE TLG_SNAKE_OIL CASE TLG_SHERIFF SWITCH iScreen CASE 1 vPos = INIT_VECTOR_2D(1416.875, 572.0) vOffset = INIT_VECTOR_2D(-283.125, -278) BREAK CASE 2 vPos = INIT_VECTOR_2D(1429.125, 842.875) vOffset = INIT_VECTOR_2D(-76.375, -14.125) BREAK CASE 3 vPos = INIT_VECTOR_2D(984.375, 868.25) vOffset = INIT_VECTOR_2D(-537.25, 22.625) BREAK CASE 4 vPos = INIT_VECTOR_2D(858.5, 868.25) vOffset = INIT_VECTOR_2D(-676.75, -3.125) BREAK ENDSWITCH BREAK CASE TLG_REVOLVER_AMMO CASE TLG_MACHINE_GUN_AMMO SWITCH iScreen CASE 1 vPos = INIT_VECTOR_2D(525.75, 591.875) vOffset = INIT_VECTOR_2D(-1174.25, -258.125) BREAK CASE 2 vPos = INIT_VECTOR_2D(1251.0, 578.875) vOffset = INIT_VECTOR_2D(-254.5, -278.125) BREAK CASE 3 vPos = INIT_VECTOR_2D(564.875, 578.875) vOffset = INIT_VECTOR_2D(-956.75, -266.75) BREAK CASE 4 vPos = INIT_VECTOR_2D(1405.375, 549.375) vOffset = INIT_VECTOR_2D(-129.875, -322.0) BREAK ENDSWITCH BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC TLG_ADD_ITEM_TO_LIST_FOR_SCREEN(TLG_COLLECTIBLE_TYPES eType, INT iLane, INT iScreen) #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_ITEM_TO_LIST_FOR_SCREEN] Called type: ", TLG_GET_COLLECTIBLE_TYPE_AS_STRING(eType), " Screen: ", iScreen, " lane: ", iLane) #ENDIF VECTOR_2D vInitialPos VECTOR_2D vOffset VECTOR_2D vBase INT iProp = -1 INT i SWITCH sTLGData.eCurrentLevel CASE TLG_LEVEL_TOWN //-- Large building shifts (1200, 440) -> 1342.000, 440) (x + 142) TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(eType, iScreen, vInitialPos, vOffset) REPEAT ciTLG_MAX_COVER i IF iProp = -1 IF sTLGData.sCoverData[i].iScreen = iScreen IF TLG_IS_COVER_TYPE_LARGE_BUILDING(sTLGData.sCoverData[i].eType) iProp = i CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_ITEM_TO_LIST_FOR_SCREEN] Found prop: ", i, " pos: ", sTLGData.sCoverData[i].vSpritePos.x) ENDIF ENDIF ENDIF ENDREPEAT IF iProp != -1 vBase = sTLGData.sCoverData[iProp].vSpritePos vInitialPos.x = vBase.x + vOffset.x #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_ITEM_TO_LIST_FOR_SCREEN] vInitialPos: ", vInitialPos.x, " ",vInitialPos.y , " vOffset: ",vOffset.x, " ", vOffset.y) #ENDIF TLG_ADD_ITEM_TO_LIST(vInitialPos, eType, iLane) ENDIF BREAK CASE TLG_LEVEL_FOREST TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(eType, iScreen, vInitialPos, vOffset) REPEAT ciTLG_MAX_COVER i IF iProp = -1 IF sTLGData.sCoverData[i].iScreen = iScreen IF sTLGData.iPropToStopOn[iScreen] = i iProp = i CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_ITEM_TO_LIST_FOR_SCREEN] Found prop: ", i, " pos: ", sTLGData.sCoverData[i].vSpritePos.x) ENDIF ENDIF ENDIF ENDREPEAT IF iProp != -1 vBase = sTLGData.sCoverData[iProp].vSpritePos vInitialPos.x = vBase.x + vOffset.x #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_ITEM_TO_LIST_FOR_SCREEN] vInitialPos: ", vInitialPos.x, " ",vInitialPos.y , " vOffset: ",vOffset.x, " ", vOffset.y) #ENDIF TLG_ADD_ITEM_TO_LIST(vInitialPos, eType, iLane) ENDIF BREAK CASE TLG_LEVEL_MINE TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(eType, iScreen, vInitialPos, vOffset) REPEAT ciTLG_MAX_COVER i IF iProp = -1 IF sTLGData.sCoverData[i].iScreen = iScreen IF sTLGData.iPropToStopOn[iScreen] = i iProp = i CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_ITEM_TO_LIST_FOR_SCREEN] Found prop: ", i, " pos: ", sTLGData.sCoverData[i].vSpritePos.x) ENDIF ENDIF ENDIF ENDREPEAT IF iProp != -1 vBase = sTLGData.sCoverData[iProp].vSpritePos vInitialPos.x = vBase.x + vOffset.x #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_ITEM_TO_LIST_FOR_SCREEN] vInitialPos: ", vInitialPos.x, " ",vInitialPos.y , " vOffset: ",vOffset.x, " ", vOffset.y) #ENDIF TLG_ADD_ITEM_TO_LIST(vInitialPos, eType, iLane) ENDIF BREAK CASE TLG_LEVEL_GRAVEYARD TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(eType, iScreen, vInitialPos, vOffset) REPEAT ciTLG_MAX_COVER i IF iProp = -1 IF sTLGData.sCoverData[i].iScreen = iScreen IF sTLGData.iPropToStopOn[iScreen] = i iProp = i CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_ITEM_TO_LIST_FOR_SCREEN] Found prop: ", i, " pos: ", sTLGData.sCoverData[i].vSpritePos.x) ENDIF ENDIF ENDIF ENDREPEAT IF iProp != -1 vBase = sTLGData.sCoverData[iProp].vSpritePos vInitialPos.x = vBase.x + vOffset.x #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_ITEM_TO_LIST_FOR_SCREEN] vInitialPos: ", vInitialPos.x, " ",vInitialPos.y , " vOffset: ",vOffset.x, " ", vOffset.y) #ENDIF TLG_ADD_ITEM_TO_LIST(vInitialPos, eType, iLane) ENDIF BREAK ENDSWITCH ENDPROC PROC TLG_RESET_ITEM(INT iItem) sTLGData.sItemData[iItem].bRendering = FALSE sTLGData.sItemData[iItem].iMinActiveStage = 0 sTLGData.sItemData[iItem].iRenderAfterWarpCount = 0 sTLGData.sItemData[iItem].iWarpCount = 0 sTLGData.sItemData[iItem].bShot = FALSE ENDPROC PROC TLG_RESET_ALL_COLLECTIBLE_ITEMS_NOT_ON_SCREEN() #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_RESET_ALL_COLLECTIBLE_ITEMS_NOT_ON_SCREEN] Called") #ENDIF INT i FOR i = 0 TO ciTLG_MAX_ITEMS - 1 IF sTLGData.sItemData[i].bRendering IF NOT TLG_IS_POSITION_ON_SCREEN(sTLGData.sItemData[i].vSpritePos) CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_RESET_ALL_COLLECTIBLE_ITEMS_NOT_ON_SCREEN] Resetting item ", i, " Type: ", TLG_GET_COLLECTIBLE_TYPE_AS_STRING(sTLGData.sItemData[i].eItemType)) TLG_RESET_ITEM(i) ELSE CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_RESET_ALL_COLLECTIBLE_ITEMS_NOT_ON_SCREEN] NOT Resetting item ", i, " Type: ", TLG_GET_COLLECTIBLE_TYPE_AS_STRING(sTLGData.sItemData[i].eItemType), " as on screen coords ", sTLGData.sItemData[i].vSpritePos.x, ", ", sTLGData.sItemData[i].vSpritePos.y) ENDIF ELSE CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_RESET_ALL_COLLECTIBLE_ITEMS_NOT_ON_SCREEN] NOT Resetting item ", i, " Type: ", TLG_GET_COLLECTIBLE_TYPE_AS_STRING(sTLGData.sItemData[i].eItemType), " as not rendering") ENDIF ENDFOR ENDPROC PROC TLG_INIT_COLLECTIBLE_POINTS() FLOAT fOffset VECTOR_2D vPos, vOffset SWITCH sTLGData.eCurrentLevel CASE TLG_LEVEL_DESERT //-- Ammo and Health TLG_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(5000, 500), TLG_HEALTH, 1) TLG_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(8800, 504.375), TLG_HEALTH, 1) TLG_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(10000, 500), TLG_REVOLVER_AMMO, 1) // TLG_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(19000, 500), TLG_REVOLVER_AMMO, 1) // TLG_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(22000, 500), TLG_REVOLVER_AMMO, 1) // TLG_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(27000, 500), TLG_HEALTH, 1) BREAK CASE TLG_LEVEL_TOWN //-- SHerriff, ammo, health, shotgun //-- SHotgun + health on stationary stages /* SCREEN HEALTH 1 1063.875, 822.5 2 789.375 + fOffset, 822.5 3 993.75 + fOffset, 822.5 4 1299.375+ fOffset, 822.5 */ TLG_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(928.0 + cfBASE_SCREEN_WIDTH, 812.0), TLG_SHERIFF, ciTLG_LANE_MIDDLE) //2 fOffset = cfBASE_SCREEN_WIDTH / 2.0 TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_HEALTH, 2, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_HEALTH, ciTLG_LANE_MIDDLE, 1) TLG_ADD_ITEM_TO_LIST(vPos, TLG_REVOLVER_AMMO, ciTLG_LANE_MIDDLE, DEFAULT, DEFAULT, ciTLG_STAGE_2) //3 fOffset = cfBASE_SCREEN_WIDTH + cfBASE_SCREEN_WIDTH / 2.0 TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_REVOLVER_AMMO, 3, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_REVOLVER_AMMO, ciTLG_LANE_MIDDLE, 1) //4 fOffset = cfBASE_SCREEN_WIDTH + cfBASE_SCREEN_WIDTH / 2.0 TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_HEALTH, 4, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_HEALTH, ciTLG_LANE_MIDDLE) TLG_ADD_ITEM_TO_LIST(vPos, TLG_HEALTH, ciTLG_LANE_MIDDLE, DEFAULT, DEFAULT, ciTLG_STAGE_2) BREAK CASE TLG_LEVEL_FOREST /* SCREEN HEALTH 1 1218.625, 832.75 2 1111.75 + fOffset, 832.75 3 1001.375 + fOffset, 871.625 4 717.875+ fOffset, 577.125 */ //-- SHerriff, ammo, health, shotgun, RIFLE, Snake Oil //1 //-- Revolver ammo TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_REVOLVER_AMMO, 1, vPos, vOffset) TLG_ADD_ITEM_TO_LIST(vPos, TLG_REVOLVER_AMMO, ciTLG_LANE_MIDDLE, 2) //-- Snake oil TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_SNAKE_OIL, 1, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_SNAKE_OIL, ciTLG_LANE_MIDDLE, 3) //2 //-- Rifle ammo fOffset = cfBASE_SCREEN_WIDTH / 2.0 TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_RIFLE_AMMO, 2, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_RIFLE_AMMO, ciTLG_LANE_MIDDLE) //-- Health TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_HEALTH, 2, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_HEALTH, ciTLG_LANE_MIDDLE) //3 //-- Snake oil fOffset = cfBASE_SCREEN_WIDTH + cfBASE_SCREEN_WIDTH / 2.0 TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_SNAKE_OIL, 3, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_SNAKE_OIL, ciTLG_LANE_MIDDLE) //4 //-- Health fOffset = cfBASE_SCREEN_WIDTH + cfBASE_SCREEN_WIDTH / 2.0 TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_HEALTH, 4, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_HEALTH, ciTLG_LANE_MIDDLE) BREAK CASE TLG_LEVEL_MINE //1 //-- Rifle TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_RIFLE_AMMO, 1, vPos, vOffset) TLG_ADD_ITEM_TO_LIST(vPos, TLG_RIFLE_AMMO, ciTLG_LANE_MIDDLE) //-- Health TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_HEALTH, 1, vPos, vOffset) TLG_ADD_ITEM_TO_LIST(vPos, TLG_HEALTH, ciTLG_LANE_MIDDLE, 2) //2 // Sheriff fOffset = cfBASE_SCREEN_WIDTH / 2.0 TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_SHERIFF, 2, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_SHERIFF, ciTLG_LANE_MIDDLE, 1) // Rifle TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_RIFLE_AMMO, 2, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_RIFLE_AMMO, ciTLG_LANE_MIDDLE, 2) //3 // Snake oil fOffset = cfBASE_SCREEN_WIDTH TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_SNAKE_OIL, 3, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_SNAKE_OIL, ciTLG_LANE_MIDDLE, 2) //4 fOffset = cfBASE_SCREEN_WIDTH + cfBASE_SCREEN_WIDTH / 2.0 //-- Health TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_HEALTH, 4, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_HEALTH, ciTLG_LANE_MIDDLE) // Shotgun TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_SHOTGUN_AMMO, 4, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_SHOTGUN_AMMO, ciTLG_LANE_MIDDLE, 1) BREAK CASE TLG_LEVEL_GRAVEYARD //1 //-- Rifle TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_RIFLE_AMMO, 1, vPos, vOffset) TLG_ADD_ITEM_TO_LIST(vPos, TLG_RIFLE_AMMO, ciTLG_LANE_MIDDLE) //-- Snake oil TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_SNAKE_OIL, 1, vPos, vOffset) TLG_ADD_ITEM_TO_LIST(vPos, TLG_SNAKE_OIL, ciTLG_LANE_MIDDLE) //2 fOffset = cfBASE_SCREEN_WIDTH / 2.0 //-- Sheriff TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_SHERIFF, 2, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_SHERIFF, ciTLG_LANE_MIDDLE, 1) //3 fOffset = cfBASE_SCREEN_WIDTH //-- Shotgun ammo TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_SHOTGUN_AMMO, 3, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_SHOTGUN_AMMO, ciTLG_LANE_MIDDLE, 1) //4 //-- Health fOffset = cfBASE_SCREEN_WIDTH + cfBASE_SCREEN_WIDTH / 2.0 TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_HEALTH, 4, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_HEALTH, ciTLG_LANE_MIDDLE, 1) //-- Rifle TLG_GET_ITEM_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_RIFLE_AMMO, 4, vPos, vOffset) vPos.x += fOffset TLG_ADD_ITEM_TO_LIST(vPos, TLG_RIFLE_AMMO, ciTLG_LANE_MIDDLE, 1) BREAK ENDSWITCH ENDPROC PROC TLG_RESET_COVER(INT iCover) sTLGData.sCoverData[iCover].bRendering = FALSE sTLGData.sCoverData[iCover].bIsSpecialCover = FALSE sTLGData.sCoverData[iCover].iHitCount = 0 sTLGData.sCoverData[iCover].iActiveInStage = 0 sTLGData.sCoverData[iCover].iScreen = 0 sTLGData.sCoverData[iCover].bIsAnimated = FALSE sTLGData.sCoverData[iCover].bNeverRender = FALSE sTLGData.sCoverData[iCover].bSpawnedPickup = FALSE sTLGData.sCoverData[iCover].iWarpCount = 0 sTLGData.sCoverData[iCover].iRenderAfterWarpCount = 0 ENDPROC FUNC BOOL TLG_IS_ANIMATED_COVER(TLG_ASSET_TYPES eType) SWITCH eType CASE TLG_ASSET_CRATE_1 CASE TLG_ASSET_OUTHOUSE CASE TLG_ASSET_COFFIN RETURN TRUE BREAK ENDSWITCH RETURN FALSE ENDFUNC // Cover and props PROC TLG_ADD_COVER_TO_LIST(VECTOR_2D vPos, TLG_ASSET_TYPES eType, INT iLane, INT iActiveInStage = 0, INT iScreen = 0, BOOL bStopScrollingOnThisProp = FALSE, INT iRenderAfterWarp = 0, BOOL bNeverRender = FALSE) IF sTLGData.iNumberOfProps >= ciTLG_MAX_COVER #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [TLG_ADD_COVER_TO_LIST] Not adding TYpe: ", TLG_GET_ASSET_TYPE_AS_STRING(eType), " as array full") #ENDIF EXIT ENDIF #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [TLG_ADD_COVER_TO_LIST]") CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [TLG_ADD_COVER_TO_LIST] TYpe: ", TLG_GET_ASSET_TYPE_AS_STRING(eType), " Index: ", sTLGData.iNumberOfProps, " Lane: ", iLane, " Stage: ", iActiveInStage, " Screen: ", iScreen, " Stop scrolling? ",bStopScrollingOnThisProp, " iRenderAfterWarp ", iRenderAfterWarp) CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [TLG_ADD_COVER_TO_LIST] bNeverRender? ",bNeverRender, " Total (inc this): ", sTLGData.iNumberOfProps +1) DEBUG_PRINTCALLSTACK() #ENDIF IF iRenderAfterWarp = 0 AND NOT bNeverRender sTLGData.sCoverData[sTLGData.iNumberOfProps].bRendering = TRUE ENDIF sTLGData.sCoverData[sTLGData.iNumberOfProps].vSpritePos = vPos sTLGData.sCoverData[sTLGData.iNumberOfProps].vSpriteInitialPos = vPos sTLGData.sCoverData[sTLGData.iNumberOfProps].eType = eType sTLGData.sCoverData[sTLGData.iNumberOfProps].iCoverLane = iLane sTLGData.sCoverData[sTLGData.iNumberOfProps].iScreen = iScreen sTLGData.sCoverData[sTLGData.iNumberOfProps].iActiveInStage = iActiveInStage sTLGData.sCoverData[sTLGData.iNumberOfProps].iRenderAfterWarpCount = iRenderAfterWarp sTLGData.sCoverData[sTLGData.iNumberOfProps].bNeverRender = bNeverRender IF bStopScrollingOnThisProp IF sTLGData.iPropToStopOn[iScreen] = -1 sTLGData.iPropToStopOn[iScreen] = sTLGData.iNumberOfProps #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [TLG_ADD_COVER_TO_LIST] Screen ", iScreen, " WIll use prop ", sTLGData.iNumberOfProps, " To decide when to stop. Prop TYpe: ", TLG_GET_ASSET_TYPE_AS_STRING(eType)) #ENDIF ELSE CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [TLG_ADD_COVER_TO_LIST] Not using prop ", sTLGData.iNumberOfProps, " as stopping prop as already set for screen ", iScreen, " Value: ", sTLGData.iPropToStopOn[iScreen]) ENDIF ENDIF IF TLG_IS_ANIMATED_COVER(eType) sTLGData.sCoverData[sTLGData.iNumberOfProps].bIsAnimated = TRUE ENDIF SWITCH (sTLGData.sCoverData[sTLGData.iNumberOfProps].eType) CASE TLG_ASSET_OUTHOUSE sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_OUTHOUSE_1_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_OUTHOUSE_1_SPRITE_HEIGHT BREAK CASE TLG_ASSET_CACTUS_1 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_CACTUS_1_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_CACTUS_1_SPRITE_HEIGHT BREAK CASE TLG_ASSET_CACTUS_2 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_CACTUS_2_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_CACTUS_2_SPRITE_HEIGHT BREAK CASE TLG_ASSET_CACTUS_3 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_CACTUS_3_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_CACTUS_3_SPRITE_HEIGHT BREAK CASE TLG_ASSET_CACTUS_4 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_CACTUS_4_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_CACTUS_4_SPRITE_HEIGHT BREAK CASE TLG_ASSET_CRATE_1 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_CRATE_1_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_CRATE_1_SPRITE_HEIGHT BREAK CASE TLG_ASSET_BUILDING_1 // LEVEL_02_TOWN_PROP_03 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_BUILDING_1_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_BUILDING_1_SPRITE_HEIGHT BREAK CASE TLG_ASSET_BUILDING_2 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_BUILDING_1_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_BUILDING_1_SPRITE_HEIGHT BREAK CASE TLG_ASSET_BUILDING_3 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_BUILDING_1_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_BUILDING_1_SPRITE_HEIGHT BREAK CASE TLG_ASSET_BUILDING_4 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_BUILDING_1_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_BUILDING_1_SPRITE_HEIGHT BREAK CASE TLG_ASSET_BUILDING_5 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_BUILDING_2_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_BUILDING_2_SPRITE_HEIGHT BREAK CASE TLG_ASSET_BUILDING_6 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_BUILDING_2_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_BUILDING_2_SPRITE_HEIGHT BREAK CASE TLG_ASSET_BUILDING_7 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_BUILDING_2_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_BUILDING_2_SPRITE_HEIGHT BREAK CASE TLG_ASSET_BUILDING_8 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_BUILDING_2_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_BUILDING_2_SPRITE_HEIGHT BREAK CASE TLG_ASSET_FENCE sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_FENCE_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_FENCE_SPRITE_HEIGHT BREAK CASE TLG_ASSET_FENCE_SMALL sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_FENCE_SMALL_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_FENCE_SMALL_SPRITE_HEIGHT BREAK CASE TLG_ASSET_CACTUS_5 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_CACTUS_5_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_CACTUS_5_SPRITE_HEIGHT BREAK CASE TLG_ASSET_CACTUS_6 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_CACTUS_6_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_CACTUS_6_SPRITE_HEIGHT BREAK CASE TLG_ASSET_CACTUS_7 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_CACTUS_7_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_CACTUS_7_SPRITE_HEIGHT BREAK CASE TLG_ASSET_CACTUS_8 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_CACTUS_8_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_CACTUS_8_SPRITE_HEIGHT BREAK CASE TLG_ASSET_CACTUS_9 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_CACTUS_9_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_CACTUS_9_SPRITE_HEIGHT BREAK CASE TLG_ASSET_CACTUS_10 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_CACTUS_10_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_CACTUS_10_SPRITE_HEIGHT BREAK CASE TLG_ASSET_CACTUS_11 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_CACTUS_11_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_CACTUS_11_SPRITE_HEIGHT BREAK CASE TLG_ASSET_FOREST_TREE_1 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_FOREST_TREE_1_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_FOREST_TREE_1_SPRITE_HEIGHT BREAK CASE TLG_ASSET_FOREST_TREE_2 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_FOREST_TREE_2_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_FOREST_TREE_2_SPRITE_HEIGHT BREAK CASE TLG_ASSET_GRASS sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_FOREST_GRASS_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_FOREST_GRASS_SPRITE_HEIGHT BREAK CASE TLG_ASSET_BUSH_1 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_FOREST_BUSH_SM_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_FOREST_BUSH_SM_SPRITE_HEIGHT BREAK CASE TLG_ASSET_BUSH_2 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_FOREST_BUSH_LG_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_FOREST_BUSH_LG_SPRITE_HEIGHT BREAK CASE TLG_ASSET_ROCK_SMALL sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_ROCK_SMALL_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_ROCK_SMALL_SPRITE_HEIGHT BREAK CASE TLG_ASSET_ROCK_LARGE sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_ROCK_LARGE_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_ROCK_LARGE_SPRITE_HEIGHT BREAK CASE TLG_ASSET_STACKED_CRATES_1 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_STACKED_CRATES_1_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_STACKED_CRATES_1_SPRITE_HEIGHT BREAK CASE TLG_ASSET_STACKED_CRATES_2 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_STACKED_CRATES_2_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_STACKED_CRATES_2_SPRITE_HEIGHT BREAK CASE TLG_ASSET_BARRELS sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_BARRELS_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_BARRELS_SPRITE_HEIGHT BREAK CASE TLG_ASSET_BIG_TOMB sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_GRAVEYARD_TOMB_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_GRAVEYARD_TOMB_SPRITE_HEIGHT BREAK CASE TLG_ASSET_TOMBSTONE_1 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_GRAVEYARD_STONE_1_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_GRAVEYARD_STONE_1_SPRITE_HEIGHT BREAK CASE TLG_ASSET_TOMBSTONE_2 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_GRAVEYARD_STONE_2_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_GRAVEYARD_STONE_2_SPRITE_HEIGHT BREAK CASE TLG_ASSET_TOMBSTONE_3 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_GRAVEYARD_STONE_3_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_GRAVEYARD_STONE_3_SPRITE_HEIGHT BREAK CASE TLG_ASSET_TOMBSTONE_4 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_GRAVEYARD_STONE_4_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_GRAVEYARD_STONE_4_SPRITE_HEIGHT BREAK CASE TLG_ASSET_TOMBSTONE_5 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_GRAVEYARD_STONE_5_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_GRAVEYARD_STONE_5_SPRITE_HEIGHT BREAK CASE TLG_ASSET_COFFIN sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_GRAVEYARD_COFFIN_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_GRAVEYARD_COFFIN_SPRITE_HEIGHT BREAK CASE TLG_ASSET_WATER_TOWER sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_WATER_TOWER_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_WATER_TOWER_SPRITE_HEIGHT BREAK CASE TLG_ASSET_SPECIAL_TNT_CRATE sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_TNT_CRATE_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_TNT_CRATE_SPRITE_HEIGHT sTLGData.sCoverData[sTLGData.iNumberOfProps].bIsSpecialCover = TRUE BREAK CASE TLG_ASSET_SPECIAL_TNT_BARREL_1 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_TNT_BARREL_1_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_TNT_BARREL_1_SPRITE_HEIGHT sTLGData.sCoverData[sTLGData.iNumberOfProps].bIsSpecialCover = TRUE BREAK CASE TLG_ASSET_SPECIAL_TNT_BARREL_2 sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_TNT_BARREL_2_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_TNT_BARREL_2_SPRITE_HEIGHT sTLGData.sCoverData[sTLGData.iNumberOfProps].bIsSpecialCover = TRUE BREAK CASE TLG_ASSET_SPECIAL_OUTHOUSE_HOST sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverWidth = cfTLG_OUTHOUSE_SPECIAL_SPRITE_WIDTH sTLGData.sCoverData[sTLGData.iNumberOfProps].fCoverHeight = cfTLG_OUTHOUSE_SPECIAL_SPRITE_HEIGHT sTLGData.sCoverData[sTLGData.iNumberOfProps].bIsSpecialCover = TRUE BREAK ENDSWITCH sTLGData.iNumberOfProps++ ENDPROC PROC TLG_INIT_COVER_POINTS(TLG_LEVELS level) FLOAT fOffset SWITCH level CASE TLG_LEVEL_DESERT // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(500, 420), TLG_ASSET_OUTHOUSE , 0) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1400, 450), TLG_ASSET_CACTUS_1, ciTLG_LANE_BACKGROUND) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(240, 450), TLG_ASSET_CACTUS_9, ciTLG_LANE_BACKGROUND) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(870, 470), TLG_ASSET_CACTUS_10, ciTLG_LANE_BACKGROUND) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(600, 830), TLG_ASSET_CACTUS_4, ciTLG_LANE_MIDDLE) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1300, 830), TLG_ASSET_CACTUS_6, ciTLG_LANE_MIDDLE) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1600, 770), TLG_ASSET_OUTHOUSE, ciTLG_LANE_MIDDLE) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(2200, 850), TLG_ASSET_CRATE_1, ciTLG_LANE_MIDDLE) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1800, 850), TLG_ASSET_CACTUS_3, ciTLG_LANE_FOREGROUND) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(4400, 850), TLG_ASSET_CACTUS_1, ciTLG_LANE_FOREGROUND) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(cfRIGHT_SCREEN_LIMIT + cfTLG_CACTUS_9_SPRITE_WIDTH, 450), TLG_ASSET_CACTUS_9, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(cfRIGHT_SCREEN_LIMIT + (cfTLG_CACTUS_9_SPRITE_WIDTH/2.0) + 300, 830), TLG_ASSET_CACTUS_4, ciTLG_LANE_MIDDLE, ciTLG_STAGE_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(cfRIGHT_SCREEN_LIMIT + (cfTLG_CACTUS_9_SPRITE_WIDTH/2.0) + 800, 450), TLG_ASSET_CACTUS_1, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_1) BREAK CASE TLG_LEVEL_TOWN //-- Stage 0 //-- Screen 1 TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1200, 440), TLG_ASSET_BUILDING_1, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_1) // USED FOR SCREEN STOPPING POS TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1343.250, 490), TLG_ASSET_BUILDING_5, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(621.000, 424.125), TLG_ASSET_WATER_TOWER, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(360, 540), TLG_ASSET_CACTUS_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(706.000, 800.625), TLG_ASSET_BARRELS, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(600, 857.375), TLG_ASSET_CACTUS_5, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1550, 770), TLG_ASSET_CACTUS_1, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(879.875, 611.875), TLG_ASSET_CRATE_1, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(879.875, 611.875), TLG_ASSET_CRATE_1, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(700, 870), TLG_ASSET_CACTUS_6, 1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1800, 688.125), TLG_ASSET_CACTUS_3, ciTLG_LANE_FOREGROUND, DEFAULT, ciTLG_SCREEN_1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(4400, 850), TLG_ASSET_CACTUS_1, 2) //-- Screen 2 fOffset = cfBASE_SCREEN_WIDTH / 2.0 TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1200 +fOffset, 440), TLG_ASSET_BUILDING_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1343.250 +fOffset, 490), TLG_ASSET_BUILDING_6, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1627.750 , 509.875), TLG_ASSET_BARRELS, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(743.000 +fOffset, 542.375), TLG_ASSET_CACTUS_5, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1100 + fOffset, 830), TLG_ASSET_FENCE, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1529.625 + fOffset, 786.625), TLG_ASSET_CACTUS_9, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_2) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(360 +fOffset, 770), TLG_ASSET_CACTUS_1, ciTLG_LANE_MIDDLE) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(360 +fOffset, 540), TLG_ASSET_CACTUS_2, 0) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(620 +fOffset, 600), TLG_ASSET_BARRELS, 0) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(620 +fOffset, 830), TLG_ASSET_FENCE, ciTLG_LANE_MIDDLE) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(600 +fOffset, 830), TLG_ASSET_CACTUS_5, 1) //-- Screen 3 fOffset = cfBASE_SCREEN_WIDTH TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1200 +fOffset, 440), TLG_ASSET_BUILDING_3, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1343.250 +fOffset, 490), TLG_ASSET_BUILDING_7, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(695.500 +fOffset, 523.000), TLG_ASSET_FENCE, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1185.0 +fOffset, 777.125), TLG_ASSET_CACTUS_2, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_3) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1464.625 +fOffset, 845.75), TLG_ASSET_CACTUS_5, ciTLG_LANE_MIDDLE) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1564.625 +fOffset, 845.75), TLG_ASSET_CACTUS_2, ciTLG_LANE_MIDDLE) //-- Screen 4 fOffset = cfBASE_SCREEN_WIDTH + (cfBASE_SCREEN_WIDTH / 2.0) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1200 +fOffset, 440), TLG_ASSET_BUILDING_4, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(cfTLG_TOWN_LEVEL_RIGHTMOST_ENTITY_X +fOffset, 490), TLG_ASSET_BUILDING_8, ciTLG_LANE_BACKGROUND,DEFAULT, ciTLG_SCREEN_4) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(879.875 +fOffset, 611.875), TLG_ASSET_CRATE_1, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_4, FALSE, 1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(735.000 +fOffset, 413.750), TLG_ASSET_WATER_TOWER, ciTLG_LANE_BACKGROUND,DEFAULT, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(961.125 +fOffset, 803.125), TLG_ASSET_BARRELS, ciTLG_LANE_MIDDLE,DEFAULT, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1084.750 +fOffset, 842.500), TLG_ASSET_CACTUS_5, ciTLG_LANE_MIDDLE,DEFAULT, ciTLG_SCREEN_4) //-- Stage 1 // fOffset = cfBASE_SCREEN_WIDTH / 2.0 // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1200 +fOffset, 440), TLG_ASSET_BUILDING_3, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1343.250 +fOffset, 490), TLG_ASSET_BUILDING_7, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(695.500 +fOffset, 523.000), TLG_ASSET_FENCE, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1185.0 +fOffset, 777.125), TLG_ASSET_CACTUS_2, ciTLG_LANE_MIDDLE, ciTLG_STAGE_1) BREAK CASE TLG_LEVEL_FOREST //-- Screen 1 TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(385.000, 498.625), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(781.75, 340), TLG_ASSET_FOREST_TREE_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(668.125, 360), TLG_ASSET_FOREST_TREE_1, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(528.0, 450), TLG_ASSET_FOREST_TREE_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1400, 360), TLG_ASSET_FOREST_TREE_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1149.0, 498.5), TLG_ASSET_BUSH_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1110.875, 635.750), TLG_ASSET_GRASS, ciTLG_LANE_BACKGROUND) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1000, 830), TLG_ASSET_ROCK_LARGE, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(500, 830), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1404.125, 870), TLG_ASSET_BUSH_2, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_1, TRUE) //-- Screen2 fOffset = cfBASE_SCREEN_WIDTH / 2.0 TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(740.0 + fOffset , 390), TLG_ASSET_FOREST_TREE_1, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(858.125 + fOffset, 466.000), TLG_ASSET_FOREST_TREE_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1482.375 + fOffset, 427.000), TLG_ASSET_FOREST_TREE_1, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1149.375+ fOffset, 498.625), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(516.625 + fOffset, 676.875), TLG_ASSET_BUSH_1, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1327.750+fOffset , 870.250), TLG_ASSET_BUSH_2, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1576.1250+fOffset , 870.250), TLG_ASSET_BUSH_2, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_2, TRUE) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(940.0 + fOffset, 770), TLG_ASSET_BUSH_1, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(840 + fOffset, 870), TLG_ASSET_ROCK_LARGE, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_2) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH, 830), TLG_ASSET_ROCK_LARGE, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_2) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(4400, 850), TLG_ASSET_BUSH_1, 1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(400, 850), TLG_ASSET_BUSH_1, 1) //-- Screen 3 fOffset = cfBASE_SCREEN_WIDTH TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1187.375 + fOffset, 336.625), TLG_ASSET_FOREST_TREE_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1336.26 + fOffset, 372.375), TLG_ASSET_FOREST_TREE_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1472.25 + fOffset, 474.625), TLG_ASSET_FOREST_TREE_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_3, TRUE) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(855.75+fOffset , 515.62), TLG_ASSET_BUSH_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1064.125+ fOffset, 649.125), TLG_ASSET_GRASS, ciTLG_LANE_BACKGROUND) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(873.0+ fOffset, 742.875), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1193.75+ fOffset, 850.375), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_3) //-- Screen 4 fOffset = cfBASE_SCREEN_WIDTH + cfBASE_SCREEN_WIDTH / 2.0 TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1163.250+ fOffset, 447.25), TLG_ASSET_FOREST_TREE_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1291.750+ fOffset, 505.625), TLG_ASSET_FOREST_TREE_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1026.51 + fOffset, 503.25), TLG_ASSET_FOREST_TREE_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(880.25 + fOffset, 570.5), TLG_ASSET_FOREST_TREE_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1415.750+ fOffset, 562.375), TLG_ASSET_FOREST_TREE_2, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_4, TRUE) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(718.125+ fOffset, 498.625), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_4) //TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1568.25+ fOffset, 498.625), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(564.75 + fOffset, 870), TLG_ASSET_ROCK_LARGE, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_4) BREAK CASE TLG_LEVEL_MINE //-- Screen 1 TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1040, 500), TLG_ASSET_BARRELS, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(545.875, 534.625), TLG_ASSET_STACKED_CRATES_1, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1151.375, 875.875), TLG_ASSET_SPECIAL_TNT_CRATE, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(932.500, 832.500), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(782.875, 898.750), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(553.375, 810.875), TLG_ASSET_BARRELS, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1420, 745.625), TLG_ASSET_STACKED_CRATES_2, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_1, TRUE) //-- Screen 2 fOffset = cfBASE_SCREEN_WIDTH / 2.0 TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1366.375 + fOffset, 591.125), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(729.875+ fOffset, 501.375), TLG_ASSET_ROCK_LARGE, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1395.250+ fOffset, 834.000), TLG_ASSET_BARRELS, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_2, TRUE) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1003.750+ fOffset, 745.625), TLG_ASSET_STACKED_CRATES_2, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(754.375+ fOffset, 804.000), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_2) //-- Screen 3 fOffset = cfBASE_SCREEN_WIDTH TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(763.625 + fOffset, 501.375), TLG_ASSET_ROCK_LARGE, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(853.000+ fOffset, 525.500), TLG_ASSET_SPECIAL_TNT_BARREL_1, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1374.000 + fOffset, 538.625), TLG_ASSET_STACKED_CRATES_1, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_3, TRUE) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1131.875 + fOffset, 804.000), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1234.500 + fOffset,805.500), TLG_ASSET_SPECIAL_TNT_BARREL_1, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(819.750 + fOffset, 835.125), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_3) //-- Screen 4 fOffset = cfBASE_SCREEN_WIDTH + cfBASE_SCREEN_WIDTH / 2.0 TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1178.875+ fOffset, 600.0), TLG_ASSET_SPECIAL_TNT_CRATE, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1355.000 + fOffset, 536.375), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_4, TRUE) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(856.125 + fOffset, 533.500), TLG_ASSET_BARRELS, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(993.750 + fOffset, 533.500), TLG_ASSET_BARRELS, ciTLG_LANE_BACKGROUND, DEFAULT, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(786.875 + fOffset, 850.125), TLG_ASSET_ROCK_LARGE, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1297.875 + fOffset, 804.000), TLG_ASSET_ROCK_LARGE, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1141.875 + fOffset, 932.125), TLG_ASSET_ROCK_SMALL, ciTLG_LANE_MIDDLE, DEFAULT, ciTLG_SCREEN_4) BREAK CASE TLG_LEVEL_GRAVEYARD //-- Screen 1 // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(400.0, 540.0), TLG_ASSET_BUSH_2, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(650.0, 540.0), TLG_ASSET_BUSH_2, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1600.0, 540.0), TLG_ASSET_BUSH_2, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1006.375, 478.500), TLG_ASSET_BIG_TOMB, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1300.0, 770.0), TLG_ASSET_TOMBSTONE_2, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1600.0, 780.0), TLG_ASSET_TOMBSTONE_1, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(360, 780), TLG_ASSET_TOMBSTONE_2, 1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(500, 790), TLG_ASSET_TOMBSTONE_4, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(700, 800), TLG_ASSET_TOMBSTONE_2, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(900, 810), TLG_ASSET_TOMBSTONE_3, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1000, 830), TLG_ASSET_TOMBSTONE_5, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_1) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1700, 850), TLG_ASSET_TOMBSTONE_4, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_1, TRUE) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1200, 870), TLG_ASSET_TOMBSTONE_3, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_1) //-- Screen 2 fOffset = cfBASE_SCREEN_WIDTH / 2.0 TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(910.125 + fOffset, 553.125), TLG_ASSET_BUSH_1, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(994.625 + fOffset, 553.125), TLG_ASSET_BUSH_1, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1163.625 + fOffset, 553.125), TLG_ASSET_BUSH_1, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1248.375 + fOffset, 553.125), TLG_ASSET_BUSH_1, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1410.750 + fOffset, 553.125), TLG_ASSET_BUSH_1, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1497.875 + fOffset, 553.125), TLG_ASSET_BUSH_1, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(926.125 + fOffset, 454.625), TLG_ASSET_COFFIN, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1174.750 + fOffset, 454.625), TLG_ASSET_COFFIN, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_2,FALSE, DEFAULT, TRUE) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1426.000 + fOffset, 454.625), TLG_ASSET_COFFIN, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(888.250 + fOffset, 884.750), TLG_ASSET_TOMBSTONE_3, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1030.625 + fOffset, 851.750), TLG_ASSET_TOMBSTONE_5, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1171.750 + fOffset, 877.625), TLG_ASSET_TOMBSTONE_4, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1335.750 + fOffset, 796.875), TLG_ASSET_TOMBSTONE_2, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_2) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1505.500 + fOffset, 857.000), TLG_ASSET_TOMBSTONE_3, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_2, TRUE) //-- Screen 3 fOffset = cfBASE_SCREEN_WIDTH TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1114.500 + fOffset, 405.875), TLG_ASSET_BIG_TOMB, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(717.375 + fOffset, 686.375), TLG_ASSET_TOMBSTONE_1, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(877.625 + fOffset, 805.250), TLG_ASSET_TOMBSTONE_2, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1071.500 + fOffset, 868.875), TLG_ASSET_TOMBSTONE_4, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1214.250 + fOffset, 847.250), TLG_ASSET_TOMBSTONE_3, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1389.875 + fOffset, 810.625), TLG_ASSET_TOMBSTONE_2, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_3) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1521.625 + fOffset, 845.625), TLG_ASSET_TOMBSTONE_5, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_3, TRUE) //-- Screen 4 fOffset = cfBASE_SCREEN_WIDTH + cfBASE_SCREEN_WIDTH / 2.0 TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(587.875 + fOffset, 540), TLG_ASSET_BUSH_2, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(916.875 + fOffset, 540), TLG_ASSET_BUSH_1, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1005.750 + fOffset, 540), TLG_ASSET_BUSH_1, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1190.625 + fOffset, 540), TLG_ASSET_BUSH_1, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1277.125 + fOffset, 540), TLG_ASSET_BUSH_1, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(929.125 + fOffset, 442.500), TLG_ASSET_COFFIN, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_4) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1206.000 + fOffset, 442.500), TLG_ASSET_COFFIN, ciTLG_LANE_BACKGROUND, ciTLG_STAGE_0, ciTLG_SCREEN_4,FALSE, DEFAULT, TRUE) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(762.375 + fOffset, 754.125), TLG_ASSET_TOMBSTONE_1, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(931.000 + fOffset, 874.000), TLG_ASSET_TOMBSTONE_5, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1069.625 + fOffset, 852.625), TLG_ASSET_TOMBSTONE_3, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1224.000 + fOffset, 885.125), TLG_ASSET_TOMBSTONE_4, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1381.375 + fOffset, 779.000), TLG_ASSET_TOMBSTONE_2, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_4) TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1535.250 + fOffset, 871.375), TLG_ASSET_TOMBSTONE_3, ciTLG_LANE_MIDDLE, ciTLG_STAGE_0, ciTLG_SCREEN_4, TRUE) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1000 + fOffset, 500), TLG_ASSET_TOMBSTONE_1, 1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1000 + fOffset, 500), TLG_ASSET_TOMBSTONE_2, 1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1000 + fOffset, 500), TLG_ASSET_TOMBSTONE_4, 1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1000 + fOffset, 500), TLG_ASSET_TOMBSTONE_3, 1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1000 + fOffset, 500), TLG_ASSET_TOMBSTONE_2, 1) // TLG_ADD_COVER_TO_LIST(INIT_VECTOR_2D(1000 + fOffset, 500), TLG_ASSET_TOMBSTONE_5, 1) BREAK ENDSWITCH ENDPROC PROC TLG_GET_COVER_INITIAL_POS_AND_OFFSET_FOR_SCREEN(TLG_ASSET_TYPES eType, INT iScreen, INT &iLane, VECTOR_2D &vPos, VECTOR_2D &vOffset) SWITCH TLG_GET_CURRENT_LEVEL() CASE TLG_LEVEL_TOWN SWITCH eType CASE TLG_ASSET_CRATE_1 SWITCH iScreen // vOffset is the offset of the cover form the large building at base coords (1200, 440) CASE 1 vPos = INIT_VECTOR_2D(851.625, 534.25) vOffset = INIT_VECTOR_2D(-348.375, 94.25) iLane = 0 BREAK CASE 2 vPos = INIT_VECTOR_2D(867.375, 604.5) vOffset = INIT_VECTOR_2D(-332.625, 164.5) iLane = 0 BREAK CASE 3 vPos = INIT_VECTOR_2D(917.125, 664.675) vOffset = INIT_VECTOR_2D(-282.875, 224.675) iLane = 0 BREAK CASE 4 vPos = INIT_VECTOR_2D(850.375, 612.75) vOffset = INIT_VECTOR_2D(-349.625, 172.75) iLane = 0 BREAK ENDSWITCH BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC PROC TLG_ADD_COVER_TO_LIST_FOR_SCREEN(TLG_ASSET_TYPES eType, INT iScreen) #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_COVER_TO_LIST_FOR_SCREEN] Called type: ", TLG_GET_ASSET_TYPE_AS_STRING(eType), " Screen: ", iScreen) #ENDIF VECTOR_2D vInitialPos VECTOR_2D vOffset VECTOR_2D vBase INT iProp = -1 INT i INT iCoverLane SWITCH sTLGData.eCurrentLevel CASE TLG_LEVEL_TOWN //-- Large building shifts (1200, 440) -> 1342.000, 440) (x + 142) TLG_GET_COVER_INITIAL_POS_AND_OFFSET_FOR_SCREEN(eType, iScreen, iCoverLane, vInitialPos, vOffset) REPEAT ciTLG_MAX_COVER i IF iProp = -1 IF sTLGData.sCoverData[i].iScreen = iScreen IF TLG_IS_COVER_TYPE_LARGE_BUILDING(sTLGData.sCoverData[i].eType) iProp = i CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_COVER_TO_LIST_FOR_SCREEN] Found prop: ", i, " pos: ", sTLGData.sCoverData[i].vSpritePos.x) ENDIF ENDIF ENDIF ENDREPEAT IF iProp != -1 vBase = sTLGData.sCoverData[iProp].vSpritePos vInitialPos.x = vBase.x + vOffset.x #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_ADD_COVER_TO_LIST_FOR_SCREEN] vInitialPos: ", vInitialPos.x, " ",vInitialPos.y , " vOffset: ",vOffset.x, " ", vOffset.y) #ENDIF TLG_ADD_COVER_TO_LIST(vInitialPos, eType, iCoverLane, ciTLG_STAGE_0, iScreen) // TLG_ADD_ITEM_TO_LIST(vInitialPos, eType, iLane) ENDIF BREAK ENDSWITCH ENDPROC PROC RESET_ENEMY(INT iEnemy) sTLGData.sEnemyData[iEnemy].eState = TLG_INACTIVE sTLGData.sEnemyData[iEnemy].iLevelStage = 0 sTLGData.sEnemyData[iEnemy].iHealth = 10 sTLGData.sEnemyData[iEnemy].bWaitUntilLevelStationary = FALSE sTLGData.sEnemyData[iEnemy].bOuthouseAudio = FALSE sTLGData.sEnemyData[iEnemy].bAppearedOnscreen = FALSE sTLGData.sEnemyData[iEnemy].vSpritePos.x = 0.0 sTLGData.sEnemyData[iEnemy].vSpritePos.y = 0.0 sTLGData.sEnemyData[iEnemy].vSize.x = 0.0 sTLGData.sEnemyData[iEnemy].vSize.y = 0.0 sTLGData.sEnemyData[iEnemy].fStoppingX = 0.0 sTLGData.sEnemyData[iEnemy].iEnemyType = TLG_ENEMY_1 sTLGData.sEnemyData[iEnemy].iEnemyLane = 0 sTLGData.sEnemyData[iEnemy].bReverse = FALSE sTLGData.sEnemyData[iEnemy].bIsPopup = FALSE sTLGData.sEnemyData[iEnemy].iJumpDistance = 0 sTLGData.sEnemyData[iEnemy].bPlayedAimAudio = FALSE sTLGData.sEnemyData[iEnemy].bThrownProjectile = FALSE sTLGData.sEnemyData[iEnemy].bPlayedCriticalWarningAudio = FALSE sTLGData.sEnemyData[iEnemy].bShotAtLeastOnce = FALSE sTLGData.sEnemyData[iEnemy].iSpriteAnimFrame = 0 sTLGData.sEnemyData[iEnemy].iWarpedForMovingLevelCount = 0 sTLGData.sEnemyData[iEnemy].iRenderAfterWarpedCount = 0 sTLGData.sEnemyData[iEnemy].iOnScreenTime = 0 sTLGData.sEnemyData[iEnemy].iPopUpTime = 0 ENDPROC PROC TLG_RESET_ENEMY_THROWN_PROJECTILE(INT iThrown) sTLGData.sEnemyProjectiles[iThrown].eState = TLG_ENEMY_PROJECTILE_STATE_INACTIVE sTLGData.sEnemyProjectiles[iThrown].iSpriteAnimFrame = 0 ENDPROC FUNC INT TLG_GET_FREE_SLOT_FOR_ENEMY() INT iCurrentStage = TLG_GET_CURRENT_LEVEL_STAGE() INT i CDEBUG1LN(DEBUG_MINIGAME, "[TLG_GET_FREE_SLOT_FOR_ENEMY] iCurrentStage: ", iCurrentStage) REPEAT ciTLG_MAX_ENEMIES i IF iCurrentStage = 0 IF sTLGData.sEnemyData[i].vSize.x = 0.0 RETURN i ELSE CDEBUG1LN(DEBUG_MINIGAME, "[TLG_GET_FREE_SLOT_FOR_ENEMY] sTLGData.sEnemyData[i].vSize.x : ", sTLGData.sEnemyData[i].vSize.x ) ENDIF ELSE IF sTLGData.sEnemyData[i].iLevelStage < iCurrentStage IF sTLGData.sEnemyData[i].eState = TLG_INACTIVE RESET_ENEMY(i) RETURN i ENDIF ENDIF ENDIF ENDREPEAT CDEBUG1LN(DEBUG_MINIGAME, "[TLG_GET_FREE_SLOT_FOR_ENEMY] {DSW} Failed to find slot") RETURN -1 ENDFUNC FUNC INT TLG_GET_ENEMY_START_HEALTH_FOR_TYPE(TLG_ENEMY_TYPES eType) SWITCH eType CASE TLG_CART_1 RETURN 30 BREAK ENDSWITCH RETURN 10 ENDFUNC // Enemies PROC TLG_ADD_ENEMY_TO_LIST(FLOAT fPosX = 1000.0, FLOAT fPosY = 900.0, FLOAT fStoppingPos = 500.0, INT iLane = 0, BOOL bFromLeft = FALSE, TLG_ENEMY_TYPES iType = TLG_ENEMY_1, INT stage = 0, BOOL bWaitUntilScreenStationary = FALSE, BOOL bIsPopup = FALSE, INT iRenderAfterWarpedCount = 0) INT iSlotToUse = TLG_GET_FREE_SLOT_FOR_ENEMY() IF iSlotToUse > -1 sTLGData.sEnemyData[iSlotToUse].eState = TLG_WAITING sTLGData.sEnemyData[iSlotToUse].vSpritePos.x = fPosX sTLGData.sEnemyData[iSlotToUse].vSpritePos.y = fPosY sTLGData.sEnemyData[iSlotToUse].vStartPos = sTLGData.sEnemyData[iSlotToUse].vSpritePos sTLGData.sEnemyData[iSlotToUse].fStoppingX = fStoppingPos sTLGData.sEnemyData[iSlotToUse].iEnemyType = iType sTLGData.sEnemyData[iSlotToUse].iEnemyLane = iLane sTLGData.sEnemyData[iSlotToUse].bReverse = bFromLeft sTLGData.sEnemyData[iSlotToUse].bIsPopup = bIsPopup sTLGData.sEnemyData[iSlotToUse].iJumpDistance = 0 sTLGData.sEnemyData[iSlotToUse].bPlayedAimAudio = FALSE sTLGData.sEnemyData[iSlotToUse].bPlayedCriticalWarningAudio = FALSE sTLGData.sEnemyData[iSlotToUse].iLevelStage = stage sTLGData.sEnemyData[iSlotToUse].bWaitUntilLevelStationary = bWaitUntilScreenStationary sTLGData.sEnemyData[iSlotToUse].iRenderAfterWarpedCount = iRenderAfterWarpedCount sTLGData.sEnemyData[iSlotToUse].iWarpedForMovingLevelCount = 0 sTLGData.sEnemyData[iSlotToUse].iSpriteAnimFrame = 0 sTLGData.sEnemyData[iSlotToUse].iEnemyFlashTimer = 0 sTLGData.sEnemyData[iSlotToUse].bShotAtLeastOnce = FALSE IF sTLGData.sEnemyData[iSlotToUse].iEnemyLane != 2 SWITCH sTLGData.sEnemyData[iSlotToUse].iEnemyType CASE TLG_ENEMY_1 CASE TLG_ENEMY_2 CASE TLG_ENEMY_3 CASE TLG_ENEMY_4 CASE TLG_ENEMY_5 sTLGData.sEnemyData[iSlotToUse].vSize.x = cfTLG_ENEMY_SPRITE_WIDTH sTLGData.sEnemyData[iSlotToUse].vSize.y = cfTLG_ENEMY_SPRITE_HEIGHT BREAK CASE TLG_CART_1 sTLGData.sEnemyData[iSlotToUse].vSize.x = cfTLG_ENEMY_CART_SPRITE_WIDTH sTLGData.sEnemyData[iSlotToUse].vSize.y = cfTLG_ENEMY_CART_SPRITE_HEIGHT BREAK CASE TLG_THROWING_ENEMY_1 sTLGData.sEnemyData[iSlotToUse].vSize.x = cfTLG_ENEMY_THROWING_SPRITE_WIDTH sTLGData.sEnemyData[iSlotToUse].vSize.y = cfTLG_ENEMY_THROWING_SPRITE_HEIGHT BREAK CASE TLG_OUTHOUSE_ENEMY sTLGData.sEnemyData[iSlotToUse].vSize.x = cfTLG_OUTHOUSE_SPECIAL_SPRITE_WIDTH sTLGData.sEnemyData[iSlotToUse].vSize.y = cfTLG_OUTHOUSE_SPECIAL_SPRITE_HEIGHT BREAK CASE TLG_COFFIN_ENEMY sTLGData.sEnemyData[iSlotToUse].vSize.x = cfTLG_COFFIN_ENEMY_SPRITE_WIDTH sTLGData.sEnemyData[iSlotToUse].vSize.y = cfTLG_COFFIN_ENEMY_SPRITE_HEIGHT BREAK ENDSWITCH ELSE SWITCH sTLGData.sEnemyData[iSlotToUse].iEnemyType CASE TLG_FOREGROUND_ENEMY_BEAR sTLGData.sEnemyData[iSlotToUse].vSize.x = cfTLG_ENEMY_BEAR_SPRITE_WIDTH sTLGData.sEnemyData[iSlotToUse].vSize.y = cfTLG_ENEMY_BEAR_SPRITE_HEIGHT BREAK DEFAULT sTLGData.sEnemyData[iSlotToUse].vSize.x = cfTLG_ENEMY_FOREGROUND_SPRITE_WIDTH sTLGData.sEnemyData[iSlotToUse].vSize.y = cfTLG_ENEMY_FOREGROUND_SPRITE_HEIGHT BREAK ENDSWITCH ENDIF sTLGData.sEnemyData[iSlotToUse].iHealth = TLG_GET_ENEMY_START_HEALTH_FOR_TYPE(sTLGData.sEnemyData[iSlotToUse].iEnemyType) sTLGData.iNumberOfEnemies++ ELSE #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "[TLG_ADD_ENEMY_TO_LIST] Failed to add enemy of type ", TLG_GET_ENEMY_TYPE_AS_STRING(iType)) #ENDIF ENDIF ENDPROC PROC TLG_INIT_ENEMIES(INT iStage = 0) CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_INIT_ENEMIES] Called. Stage: ", iStage) FLOAT fOffset SWITCH sTLGData.eCurrentLevel CASE TLG_LEVEL_DESERT IF iStage = 0 #IF IS_DEBUG_BUILD IF GET_COMMANDLINE_PARAM_EXISTS("sc_BadlandsQuickLevel1") TLG_ADD_ENEMY_TO_LIST(-500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T1_1) EXIT ENDIF #ENDIF // Foreground TLG_ADD_ENEMY_TO_LIST(-500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T1_1) TLG_ADD_ENEMY_TO_LIST(-8500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T1_2) TLG_ADD_ENEMY_TO_LIST(2500, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T1_3) TLG_ADD_ENEMY_TO_LIST(2500, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T1_4) // Midground TLG_ADD_ENEMY_TO_LIST(cfBASE_SCREEN_WIDTH + 668.5, 561.75, 1100, ciTLG_LANE_MIDDLE, FALSE, TLG_OUTHOUSE_ENEMY) TLG_ADD_ENEMY_TO_LIST(2500, 700, 1100, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(-500, 700, 1300, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 700, 1180, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 700, 1100, ciTLG_LANE_MIDDLE, FALSE, TLG_THROWING_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 700, 1100, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 700, 700, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 700, 900, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-1500, 700, 1000, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(2500, 700, 1300, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 700, 1400, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 650, 1500, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 700, 1500, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(-500, 700, 900, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 700, 900, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2) // Background TLG_ADD_ENEMY_TO_LIST(2500, 430, 1600, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(-500, 430, 800, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1100, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1700, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 330, 2200, ciTLG_LANE_BACKGROUND, FALSE, TLG_CART_1) TLG_ADD_ENEMY_TO_LIST(-500, 430, 860, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1400, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1200, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 430, 900, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(2500, 330, 2200, ciTLG_LANE_BACKGROUND, FALSE, TLG_CART_1) TLG_ADD_ENEMY_TO_LIST(-500, 430, 800, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1100, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 430, 1700, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_1) // ELIF iStage = 1 #IF IS_DEBUG_BUILD IF GET_COMMANDLINE_PARAM_EXISTS("sc_BadlandsQuickLevel1") TLG_ADD_ENEMY_TO_LIST(cfRIGHT_SCREEN_LIMIT + cfTLG_CACTUS_9_SPRITE_WIDTH + 1008, 330, cfRIGHT_SCREEN_LIMIT + cfTLG_CACTUS_9_SPRITE_WIDTH + 1008, ciTLG_LANE_BACKGROUND, FALSE, TLG_CART_1, ciTLG_STAGE_1) EXIT ENDIF #ENDIF // TLG_ADD_ENEMY_TO_LIST(cfRIGHT_SCREEN_LIMIT + cfTLG_CACTUS_9_SPRITE_WIDTH + 1008, 330, cfRIGHT_SCREEN_LIMIT + cfTLG_CACTUS_9_SPRITE_WIDTH + 1008, ciTLG_LANE_BACKGROUND, FALSE, TLG_CART_1, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1200, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_3, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(-500, 430, 700, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_3, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(cfRIGHT_SCREEN_LIMIT + cfTLG_CACTUS_9_SPRITE_WIDTH + 554.25, 561.75, cfRIGHT_SCREEN_LIMIT + cfTLG_CACTUS_9_SPRITE_WIDTH + 500, ciTLG_LANE_MIDDLE, FALSE, TLG_OUTHOUSE_ENEMY, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(2500, 700, 1100, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_1, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(-500, 700, 900, ciTLG_LANE_MIDDLE, TRUE, TLG_THROWING_ENEMY_1, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(-500, 700, 1300, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_2, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(2500, 700, 1180, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_1, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(-500, 700, 1300, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_2, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(2500, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T1_3, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(0, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T1_2, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T1_3, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(0, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T1_2, ciTLG_STAGE_1, TRUE) ENDIF BREAK CASE TLG_LEVEL_TOWN IF iStage = 0 // Pop up TLG_ADD_ENEMY_TO_LIST(1256.625 + (cfBASE_SCREEN_WIDTH / 2.0), 446.875, 357.875, ciTLG_LANE_POPUP_RHS, FALSE, TLG_ENEMY_2, ciTLG_STAGE_0, FALSE, TRUE) TLG_ADD_ENEMY_TO_LIST(1256.625 + (cfBASE_SCREEN_WIDTH *1.5), 446.875, 357.875, ciTLG_LANE_POPUP_RHS, FALSE, TLG_ENEMY_2, ciTLG_STAGE_0, FALSE, TRUE) // Foreground TLG_ADD_ENEMY_TO_LIST(-500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T2_2) TLG_ADD_ENEMY_TO_LIST(-1500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T2_4) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T2_1) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T2_3) // // // Midground TLG_ADD_ENEMY_TO_LIST(2500, 720, 1100, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 720, 900, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 1360, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 720, 600, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 720, 700, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 720, 900, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(-1500, 720, 1000, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 900, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 800, 1360, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(-500, 650, 1360, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 720, 400, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 720, 900, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(2500, 720, 900, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_1) // // // Background TLG_ADD_ENEMY_TO_LIST(2500, 430, 1500, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 430, 800, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1300, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1300, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1200, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_4) //// TLG_ADD_ENEMY_TO_LIST(-500, 430, 860, ciTLG_LANE_BACKGROUND, TRUE , TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1500, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 430, 900, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 430, 900, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1200, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2) // TLG_ADD_ENEMY_TO_LIST(-500, 430, 1200, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_1) ELIF iStage = 1 TLG_ADD_ENEMY_TO_LIST(2500, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T1_3, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(0, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T1_2, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T1_3, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 720, 1360, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(-500, 720, 900, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 720, 1360, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(-500, 700, 900, ciTLG_LANE_MIDDLE, TRUE, TLG_THROWING_ENEMY_1, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 600, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(-500, 720, 700, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_3, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(-500, 430, 860, ciTLG_LANE_BACKGROUND, TRUE , TLG_ENEMY_1, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1500, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 430, 900, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_3, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(-500, 430, 900, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_4, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 430, 900, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(1398.0, 446.875, 357.875, ciTLG_LANE_POPUP_RHS, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE, TRUE) TLG_ADD_ENEMY_TO_LIST(1398.0, 446.875, 357.875, ciTLG_LANE_POPUP_RHS, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE, TRUE) ELIF iStage = 2 //-- Stationary screen Offset from init start pos is + 142.0 fOffset = 142.0 IF sTLGData.iLastScreenToStopOn = 4 // Offset screen 4 -> screen 1 is larger due to screen warp offset fOffset += 142.0 + (cfRIGHT_SCREEN_LIMIT - cfTLG_TOWN_LEVEL_RIGHTMOST_ENTITY_X) ENDIF CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_INIT_ENEMIES] fOffset: ",fOffset, " sTLGData.iScreenToStopOn: ",sTLGData.iScreenToStopOn) TLG_ADD_ENEMY_TO_LIST(1256.625 + fOffset + (cfBASE_SCREEN_WIDTH / 2.0), 446.875, 357.875, ciTLG_LANE_POPUP_RHS, FALSE, TLG_ENEMY_2, ciTLG_STAGE_0, FALSE, TRUE) TLG_ADD_ENEMY_TO_LIST(1256.625 + fOffset + (cfBASE_SCREEN_WIDTH *1.5), 446.875, 357.875, ciTLG_LANE_POPUP_RHS, FALSE, TLG_ENEMY_2, ciTLG_STAGE_0, FALSE, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1500, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2, ciTLG_STAGE_2) TLG_ADD_ENEMY_TO_LIST(-500, 430, 800, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_1, ciTLG_STAGE_2) TLG_ADD_ENEMY_TO_LIST(2500, 430, 900, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_3, ciTLG_STAGE_2) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1300, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2, ciTLG_STAGE_2) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1300, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_4, ciTLG_STAGE_2) TLG_ADD_ENEMY_TO_LIST(2500, 720, 1100, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3, ciTLG_STAGE_2) TLG_ADD_ENEMY_TO_LIST(-500, 720, 900, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1, ciTLG_STAGE_2) TLG_ADD_ENEMY_TO_LIST(2500, 720, 1360, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2, ciTLG_STAGE_2) TLG_ADD_ENEMY_TO_LIST(2500, 720, 600, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2, ciTLG_STAGE_2) TLG_ADD_ENEMY_TO_LIST(-500, 720, 700, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_3, ciTLG_STAGE_2) TLG_ADD_ENEMY_TO_LIST(2500, 720, 900, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_4, ciTLG_STAGE_2) TLG_ADD_ENEMY_TO_LIST(-1500, 720, 1000, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1, ciTLG_STAGE_2) ELIF iStage = 3 TLG_ADD_ENEMY_TO_LIST(2500, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T1_3, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(0, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T1_2, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T1_3, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 720, 1360, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(-500, 720, 900, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 720, 1360, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(-500, 700, 900, ciTLG_LANE_MIDDLE, TRUE, TLG_THROWING_ENEMY_1, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 600, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(-500, 720, 700, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_3, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(-500, 430, 860, ciTLG_LANE_BACKGROUND, TRUE , TLG_ENEMY_1, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1500, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 430, 900, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_3, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(-500, 430, 900, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_4, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 430, 900, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(1398.0, 446.875, 357.875, ciTLG_LANE_POPUP_RHS, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE, TRUE) TLG_ADD_ENEMY_TO_LIST(1398.0, 446.875, 357.875, ciTLG_LANE_POPUP_RHS, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE, TRUE) ENDIF BREAK CASE TLG_LEVEL_FOREST IF iStage = 0 // Foreground TLG_ADD_ENEMY_TO_LIST(-500, 950, 560, 2, TRUE, TLG_FOREGROUND_ENEMY_BEAR) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, 2, FALSE, TLG_FOREGROUND_ENEMY_T2_1) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, 2, FALSE, TLG_FOREGROUND_ENEMY_T2_3) TLG_ADD_ENEMY_TO_LIST(-1500, 950, 560, 2, TRUE, TLG_FOREGROUND_ENEMY_BEAR) TLG_ADD_ENEMY_TO_LIST(2600, 950, 560, 2, FALSE, TLG_FOREGROUND_ENEMY_T2_1) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, 2, FALSE, TLG_FOREGROUND_ENEMY_T2_3) // Midground TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, 1, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, 1, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, 1, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, 1, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, 1, TRUE, TLG_THROWING_ENEMY_1) // TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, 1, TRUE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, 1, FALSE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(-1500, 720, cfBASE_SCREEN_WIDTH, 1, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, 1, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, 1, FALSE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, 1, TRUE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, 1, FALSE, TLG_THROWING_ENEMY_1) // TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, 1, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, 1, TRUE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, 1, FALSE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, 1, FALSE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, 1, TRUE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, 1, FALSE, TLG_THROWING_ENEMY_1) // TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, 1, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, 1, TRUE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, 1, FALSE, TLG_ENEMY_1) // Background TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, 0, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 430, cfBASE_SCREEN_WIDTH, 0, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, 0, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, 0, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, 0, FALSE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(-500, 430, cfBASE_SCREEN_WIDTH, 0, TRUE ,TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, 0, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, 0, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 430, cfBASE_SCREEN_WIDTH, 0, TRUE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, 0, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 430, cfBASE_SCREEN_WIDTH, 0, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, 0, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 430, cfBASE_SCREEN_WIDTH, 0, TRUE, TLG_ENEMY_3) ELIF iStage = 1 TLG_ADD_ENEMY_TO_LIST(-500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_BEAR, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T2_1, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(-1500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_BEAR, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T2_1, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(2000, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(2200, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_THROWING_ENEMY_1, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(2000, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(2200, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_THROWING_ENEMY_1, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_3, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(0, 430, cfBASE_SCREEN_WIDTH, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_4, ciTLG_STAGE_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_3, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(0, 430, cfBASE_SCREEN_WIDTH, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_4, ciTLG_STAGE_1, TRUE) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2, ciTLG_STAGE_1, TRUE) ENDIF BREAK CASE TLG_LEVEL_MINE IF iStage = 0 // Foreground TLG_ADD_ENEMY_TO_LIST(-500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T2_2) TLG_ADD_ENEMY_TO_LIST(-1500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T2_4) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T2_1) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T2_3) TLG_ADD_ENEMY_TO_LIST(-500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T2_2) TLG_ADD_ENEMY_TO_LIST(-1500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T2_4) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T2_1) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T2_3) // Midground TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_THROWING_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(-1500, 720, cfBASE_SCREEN_WIDTH, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_THROWING_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(-500, 760, cfBASE_SCREEN_WIDTH, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_THROWING_ENEMY_1) // Background // TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(1380.0 + cfBASE_SCREEN_WIDTH / 2.0, 430.0, 1380.0 + cfBASE_SCREEN_WIDTH / 2.0, ciTLG_LANE_BACKGROUND, FALSE, TLG_CART_1) TLG_ADD_ENEMY_TO_LIST(1380.0 + (cfBASE_SCREEN_WIDTH + cfBASE_SCREEN_WIDTH / 2.0) ,330.0, 1380.0 + (cfBASE_SCREEN_WIDTH + cfBASE_SCREEN_WIDTH / 2.0), ciTLG_LANE_BACKGROUND, FALSE, TLG_CART_1) TLG_ADD_ENEMY_TO_LIST(-500, 430, cfBASE_SCREEN_WIDTH * 2.0, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(-500, 430, cfBASE_SCREEN_WIDTH * 2.0, ciTLG_LANE_BACKGROUND, TRUE ,TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 430, cfBASE_SCREEN_WIDTH * 2.0, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(2500, 430, ciTLG_LANE_BACKGROUND, 0, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 430, cfBASE_SCREEN_WIDTH * 2.0, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 430, cfBASE_SCREEN_WIDTH * 2.0, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_3) ELIF iStage = 1 TLG_ADD_ENEMY_TO_LIST(-500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T2_2) TLG_ADD_ENEMY_TO_LIST(-1500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T2_4) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T2_1) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, ciTLG_LANE_FOREGROUND, FALSE, TLG_FOREGROUND_ENEMY_T2_3) TLG_ADD_ENEMY_TO_LIST(-500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T2_2) TLG_ADD_ENEMY_TO_LIST(-1500, 950, 560, ciTLG_LANE_FOREGROUND, TRUE, TLG_FOREGROUND_ENEMY_T2_4) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_THROWING_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(-500, 720, cfBASE_SCREEN_WIDTH, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(-1500, 720, cfBASE_SCREEN_WIDTH, ciTLG_LANE_MIDDLE, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 720, 0, ciTLG_LANE_MIDDLE, FALSE, TLG_THROWING_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(-500, 430, cfBASE_SCREEN_WIDTH * 2.0, ciTLG_LANE_BACKGROUND, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(-500, 430, cfBASE_SCREEN_WIDTH * 2.0, ciTLG_LANE_BACKGROUND, TRUE ,TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 0, ciTLG_LANE_BACKGROUND, FALSE, TLG_ENEMY_2) ENDIF BREAK CASE TLG_LEVEL_GRAVEYARD IF iStage = 0 // Foreground TLG_ADD_ENEMY_TO_LIST(-500, 950, 560, 2, TRUE, TLG_FOREGROUND_ENEMY_T2_2) TLG_ADD_ENEMY_TO_LIST(-1500, 950, 560, 2, TRUE, TLG_FOREGROUND_ENEMY_T2_4) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, 2, FALSE, TLG_FOREGROUND_ENEMY_T2_1) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, 2, FALSE, TLG_FOREGROUND_ENEMY_T2_3) TLG_ADD_ENEMY_TO_LIST(-500, 950, 560, 2, TRUE, TLG_FOREGROUND_ENEMY_T2_2) TLG_ADD_ENEMY_TO_LIST(-1500, 950, 560, 2, TRUE, TLG_FOREGROUND_ENEMY_T2_4) TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, 2, FALSE, TLG_FOREGROUND_ENEMY_T2_1) // TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, 2, FALSE, TLG_FOREGROUND_ENEMY_T2_3) // Midground TLG_ADD_ENEMY_TO_LIST(1174.750 + (cfBASE_SCREEN_WIDTH / 2.0), 454.625, 1174.750+ (cfBASE_SCREEN_WIDTH / 2.0), 1, FALSE, TLG_COFFIN_ENEMY) fOffset = cfBASE_SCREEN_WIDTH + cfBASE_SCREEN_WIDTH / 2.0 // TLG_ADD_ENEMY_TO_LIST(929.125 + fOffset, 442.500, 929.125 + fOffset, 1, FALSE, TLG_COFFIN_ENEMY) TLG_ADD_ENEMY_TO_LIST(1206.000 + fOffset, 442.500, 1206.000 + fOffset, 1, FALSE, TLG_COFFIN_ENEMY) TLG_ADD_ENEMY_TO_LIST(2500, 720, 1100, 1, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 720, 900, 1, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 1300, 1, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 720, 650, 1, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 720, 700, 1, TRUE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 679.375, 1000, 1, TRUE, TLG_THROWING_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 900, 1, FALSE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(-1500, 720, 1000, 1, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 900, 1, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 720, 1400, 1, FALSE, TLG_ENEMY_1) // TLG_ADD_ENEMY_TO_LIST(-500, 650, 1500, 1, TRUE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 679.375, 800, ciTLG_LANE_MIDDLE, FALSE, TLG_THROWING_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 720, 450, 1, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 720, 900, 1, TRUE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(2500, 720, 900, 1, FALSE, TLG_ENEMY_1) // [16] // Background TLG_ADD_ENEMY_TO_LIST(2500, 430, 1500, 0, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 430, 800, 0, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1400, 0, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1500, 0, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 430, 600, 0, FALSE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(-500, 430, 860, 0, TRUE ,TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1500, 0, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(2500, 430, 900, 0, FALSE, TLG_ENEMY_3) TLG_ADD_ENEMY_TO_LIST(-500, 430, 900, 0, TRUE, TLG_ENEMY_4) TLG_ADD_ENEMY_TO_LIST(2500, 430, 500, 0, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 430, 700, 0, TRUE, TLG_ENEMY_1) TLG_ADD_ENEMY_TO_LIST(2500, 430, 1500, 0, FALSE, TLG_ENEMY_2) TLG_ADD_ENEMY_TO_LIST(-500, 430, 400, 0, TRUE, TLG_ENEMY_3) ELIF iStage = 1 TLG_ADD_ENEMY_TO_LIST(0, 950, 560, 2, TRUE, TLG_FOREGROUND_ENEMY_T2_2, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(2000, 950, 560, 2, FALSE, TLG_FOREGROUND_ENEMY_T2_1, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(0, 950, 560, 2, TRUE, TLG_FOREGROUND_ENEMY_T2_4, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(2000, 950, 560, 2, FALSE, TLG_FOREGROUND_ENEMY_T2_3, DEFAULT, TRUE) // TLG_ADD_ENEMY_TO_LIST(-1500, 950, 560, 2, TRUE, TLG_FOREGROUND_ENEMY_T2_4) // TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, 2, FALSE, TLG_FOREGROUND_ENEMY_T2_1) // TLG_ADD_ENEMY_TO_LIST(2200, 950, 560, 2, FALSE, TLG_FOREGROUND_ENEMY_T2_3) TLG_ADD_ENEMY_TO_LIST(cfBASE_SCREEN_WIDTH, 720, 1100, 1, FALSE, TLG_ENEMY_3, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(-2000, 720, 900, 1, TRUE, TLG_ENEMY_1, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(cfBASE_SCREEN_WIDTH, 720, 1300, 1, FALSE, TLG_ENEMY_2, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(cfBASE_SCREEN_WIDTH, 720, 650, 1, FALSE, TLG_ENEMY_2, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(-200, 720, 700, 1, TRUE, TLG_ENEMY_3, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(cfBASE_SCREEN_WIDTH, 720, 900, 1, FALSE, TLG_ENEMY_4, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(-200, 720, 1000, 1, TRUE, TLG_ENEMY_1, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(cfBASE_SCREEN_WIDTH, 720, 900, 1, FALSE, TLG_ENEMY_3, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(cfBASE_SCREEN_WIDTH, 430, 1500, 0, FALSE, TLG_ENEMY_2, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(cfBASE_SCREEN_WIDTH, 430, 900, 0, FALSE, TLG_ENEMY_3, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(-500, 430, 900, 0, TRUE, TLG_ENEMY_4, DEFAULT, TRUE) TLG_ADD_ENEMY_TO_LIST(cfBASE_SCREEN_WIDTH, 430, 500, 0, FALSE, TLG_ENEMY_2, DEFAULT, TRUE) ENDIF BREAK ENDSWITCH ENDPROC FUNC FLOAT GET_PROP_X_POSITION_TO_STOP_AT_FOR_SCREEN(INT iScreen) SWITCH TLG_GET_CURRENT_LEVEL() CASE TLG_LEVEL_TOWN RETURN 1342.5 BREAK CASE TLG_LEVEL_FOREST //1420.000 SWITCH iScreen CASE 1 RETURN 1280.125 BREAK CASE 2 RETURN 1260.125 BREAK CASE 3 RETURN 1084.25 BREAK CASE 4 RETURN 1280.125 BREAK ENDSWITCH BREAK CASE TLG_LEVEL_MINE SWITCH iScreen CASE 1 RETURN 1420.000 BREAK CASE 2 RETURN 1459.250 BREAK CASE 3 RETURN 1030.000 BREAK CASE 4 RETURN 1437.000 BREAK ENDSWITCH BREAK CASE TLG_LEVEL_GRAVEYARD SWITCH iScreen CASE 1 RETURN 1548.000 BREAK CASE 2 RETURN 1353.500 BREAK CASE 3 RETURN 1329.625 BREAK CASE 4 RETURN 1351.250 BREAK ENDSWITCH BREAK ENDSWITCH RETURN 0.0 ENDFUNC /// Purpose: Figure out the size of the pixel 'interval' to use to check when the screen should stop moving. Slower frame rates /// will rquire larger intervals, as the props move further per update to compensate for the lower frame rate and the /// interval might be missed completely if the interval is too small. FUNC FLOAT TLG_GET_OFFSET_FOR_STOP_POSITION_CHECK(FLOAT fUpdate) IF fUpdate < 4.0 RETURN 4.0 ENDIF RETURN TO_FLOAT(CEIL(fUpdate)) ENDFUNC FUNC BOOL TLG_SHOULD_MOVING_LEVEL_STOP(INT iCoverToCheck) VECTOR_2D vPos FLOAT fStoppingX FLOAT fPropX INT iStoppingProp FLOAT fUpdate FLOAT fOffset SWITCH TLG_GET_CURRENT_LEVEL() CASE TLG_LEVEL_DESERT //-- Wait for the first bit of cover marked for the stationary stage to be at the left edge of the play area RETURN (sTLGData.sCoverData[iCoverToCheck].iActiveInStage = TLG_GET_CURRENT_LEVEL_STAGE() AND sTLGData.sCoverData[iCoverToCheck].vSpritePos.x - (sTLGData.sCoverData[iCoverToCheck].fCoverWidth/2.0) < 300.0) BREAK CASE TLG_LEVEL_TOWN // IF NOT TLG_IS_LEVEL_BIT_SET_FOR_CURRENT_LEVEL(TLG_LEVELS_BIT_TOWN_LARGE_BUILDING_PASSED_BY1) IF sTLGData.iScreenToStopOn = -1 TLG_SET_SCREEN_TO_STOP_ON(sTLGData.iCurrentScreen + 1) TLG_INCREASE_CURRENT_LEVEL_STAGE() TLG_RESET_ALL_COLLECTIBLE_ITEMS_NOT_ON_SCREEN() IF TLG_GET_CURRENT_LEVEL_STAGE() = 1 TLG_ADD_ITEM_TO_LIST_FOR_SCREEN(TLG_HEALTH, ciTLG_LANE_MIDDLE, sTLGData.iScreenToStopOn) TLG_ADD_ITEM_TO_LIST_FOR_SCREEN(TLG_SHOTGUN_AMMO, ciTLG_LANE_MIDDLE, sTLGData.iScreenToStopOn) ELIF TLG_GET_CURRENT_LEVEL_STAGE() = 3 TLG_ADD_ITEM_TO_LIST_FOR_SCREEN(TLG_HEALTH, ciTLG_LANE_MIDDLE, sTLGData.iScreenToStopOn) TLG_ADD_ITEM_TO_LIST_FOR_SCREEN(TLG_SHOTGUN_AMMO, ciTLG_LANE_MIDDLE, sTLGData.iScreenToStopOn) ENDIF TLG_INIT_ENEMIES(TLG_GET_CURRENT_LEVEL_STAGE()) CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_SHOULD_MOVING_LEVEL_STOP] TLG_LEVEL_TOWN Will stop on screen ", sTLGData.iScreenToStopOn ) ELSE IF sTLGData.sCoverData[iCoverToCheck].iScreen = sTLGData.iScreenToStopOn IF TLG_IS_COVER_TYPE_LARGE_BUILDING(sTLGData.sCoverData[iCoverToCheck].eType) vPos = sTLGData.sCoverData[iCoverToCheck].vSpritePos fUpdate = TLG_GET_COVER_UPDATE() fStoppingX = GET_PROP_X_POSITION_TO_STOP_AT_FOR_SCREEN(sTLGData.iScreenToStopOn) fOffset = TLG_GET_OFFSET_FOR_STOP_POSITION_CHECK(fUpdate) CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_SHOULD_MOVING_LEVEL_STOP] TLG_LEVEL_TOWN vPos.x: ", vPos.x, ",fStoppingX: ", fStoppingX, " Cover update: ", fUpdate, " using offset: ", fOffset) IF vPos.x >= fStoppingX - (fOffset / 2.0) AND vPos.x <= fStoppingX + (fOffset / 2.0) RETURN TRUE ENDIF ENDIF ENDIF ENDIF BREAK CASE TLG_LEVEL_FOREST IF sTLGData.iScreenToStopOn = -1 TLG_SET_SCREEN_TO_STOP_ON(sTLGData.iCurrentScreen + 1) TLG_INCREASE_CURRENT_LEVEL_STAGE() TLG_RESET_ALL_COLLECTIBLE_ITEMS_NOT_ON_SCREEN() TLG_ADD_ITEM_TO_LIST_FOR_SCREEN(TLG_HEALTH, ciTLG_LANE_MIDDLE, sTLGData.iScreenToStopOn) TLG_ADD_ITEM_TO_LIST_FOR_SCREEN(TLG_SHOTGUN_AMMO, ciTLG_LANE_MIDDLE, sTLGData.iScreenToStopOn) TLG_ADD_ITEM_TO_LIST_FOR_SCREEN(TLG_RIFLE_AMMO, ciTLG_LANE_MIDDLE, sTLGData.iScreenToStopOn) TLG_INIT_ENEMIES(TLG_GET_CURRENT_LEVEL_STAGE()) CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_SHOULD_MOVING_LEVEL_STOP] TLG_LEVEL_FOREST Will stop on screen ", sTLGData.iScreenToStopOn ) ELSE iStoppingProp = sTLGData.iPropToStopOn[sTLGData.iScreenToStopOn] //CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_SHOULD_MOVING_LEVEL_STOP] Stop Screen: ", sTLGData.iScreenToStopOn, " iStoppingProp: ", iStoppingProp) IF iStoppingProp > -1 fStoppingX = GET_PROP_X_POSITION_TO_STOP_AT_FOR_SCREEN(sTLGData.iScreenToStopOn) fPropX = sTLGData.sCoverData[iStoppingProp].vSpritePos.x fUpdate = TLG_GET_COVER_UPDATE() fOffset = TLG_GET_OFFSET_FOR_STOP_POSITION_CHECK(fUpdate) CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_SHOULD_MOVING_LEVEL_STOP] TLG_LEVEL_FOREST vPos.x: ", fPropX, " fStoppingX: ", fStoppingX, " Cover update: ", fUpdate, " using offset: ", fOffset) IF fPropX >= fStoppingX - (fOffset / 2.0) AND fPropX <= fStoppingX + (fOffset / 2.0) RETURN TRUE ENDIF ENDIF ENDIF BREAK CASE TLG_LEVEL_MINE IF sTLGData.iScreenToStopOn = -1 TLG_SET_SCREEN_TO_STOP_ON(sTLGData.iCurrentScreen + 1) TLG_INCREASE_CURRENT_LEVEL_STAGE() TLG_RESET_ALL_COLLECTIBLE_ITEMS_NOT_ON_SCREEN() TLG_ADD_ITEM_TO_LIST_FOR_SCREEN(TLG_HEALTH, ciTLG_LANE_MIDDLE, sTLGData.iScreenToStopOn) TLG_ADD_ITEM_TO_LIST_FOR_SCREEN(TLG_MACHINE_GUN_AMMO, ciTLG_LANE_MIDDLE, sTLGData.iScreenToStopOn) TLG_INIT_ENEMIES(TLG_GET_CURRENT_LEVEL_STAGE()) // CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_SHOULD_MOVING_LEVEL_STOP] TLG_LEVEL_FOREST Will stop on screen ", sTLGData.iScreenToStopOn ) ELSE iStoppingProp = sTLGData.iPropToStopOn[sTLGData.iScreenToStopOn] CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_SHOULD_MOVING_LEVEL_STOP] Stop Screen: ", sTLGData.iScreenToStopOn, " iStoppingProp: ", iStoppingProp) IF iStoppingProp > -1 fStoppingX = GET_PROP_X_POSITION_TO_STOP_AT_FOR_SCREEN(sTLGData.iScreenToStopOn) fPropX = sTLGData.sCoverData[iStoppingProp].vSpritePos.x fUpdate = TLG_GET_COVER_UPDATE() fOffset = TLG_GET_OFFSET_FOR_STOP_POSITION_CHECK(fUpdate) CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_SHOULD_MOVING_LEVEL_STOP] TLG_LEVEL_MINE vPos.x: ", fPropX, " fStoppingX: ", fStoppingX, " Cover update: ", fUpdate, " using offset: ", fOffset) IF fPropX >= fStoppingX - (fOffset / 2.0) AND fPropX <= fStoppingX + (fOffset / 2.0) RETURN TRUE ENDIF ENDIF ENDIF BREAK CASE TLG_LEVEL_GRAVEYARD IF sTLGData.iScreenToStopOn = -1 TLG_SET_SCREEN_TO_STOP_ON(sTLGData.iCurrentScreen + 1) TLG_INCREASE_CURRENT_LEVEL_STAGE() TLG_RESET_ALL_COLLECTIBLE_ITEMS_NOT_ON_SCREEN() IF TLG_GET_SCREEN_TO_STOP_ON() != 2 // If 2 or 4, placed in coffins (handled by TLG_HANDLE_PLAYER_BULLET_COLLISION_WITH_COVER) AND TLG_GET_SCREEN_TO_STOP_ON() != 4 TLG_ADD_ITEM_TO_LIST_FOR_SCREEN(TLG_MACHINE_GUN_AMMO, ciTLG_LANE_MIDDLE, sTLGData.iScreenToStopOn) ENDIF TLG_ADD_ITEM_TO_LIST_FOR_SCREEN(TLG_HEALTH, ciTLG_LANE_MIDDLE, sTLGData.iScreenToStopOn) TLG_INIT_ENEMIES(TLG_GET_CURRENT_LEVEL_STAGE()) // CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_SHOULD_MOVING_LEVEL_STOP] TLG_LEVEL_FOREST Will stop on screen ", sTLGData.iScreenToStopOn ) ELSE iStoppingProp = sTLGData.iPropToStopOn[sTLGData.iScreenToStopOn] CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_SHOULD_MOVING_LEVEL_STOP] Stop Screen: ", sTLGData.iScreenToStopOn, " iStoppingProp: ", iStoppingProp) IF iStoppingProp > -1 fStoppingX = GET_PROP_X_POSITION_TO_STOP_AT_FOR_SCREEN(sTLGData.iScreenToStopOn) fPropX = sTLGData.sCoverData[iStoppingProp].vSpritePos.x fUpdate = TLG_GET_COVER_UPDATE() fOffset = TLG_GET_OFFSET_FOR_STOP_POSITION_CHECK(fUpdate) CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_SHOULD_MOVING_LEVEL_STOP] TLG_LEVEL_GRAVEYARD vPos.x: ", fPropX, " fStoppingX: ", fStoppingX, " Cover update: ", fUpdate, " using offset: ", fOffset) IF fPropX >= fStoppingX - (fOffset / 2.0) AND fPropX <= fStoppingX + (fOffset / 2.0) RETURN TRUE ENDIF ENDIF ENDIF BREAK ENDSWITCH RETURN FALSE ENDFUNC //FUNC BOOL TLG_SHOULD_STOPPED_LEVEL_START_MOVING() // SWITCH TLG_GET_CURRENT_LEVEL() // CASE TLG_LEVEL_TOWN // IF TLG_IS_LEVEL_BIT_SET_FOR_CURRENT_LEVEL(TLG_LEVELS_BIT_STOPPED) // IF TLG_GET_TOTAL_NUMBER_OF_ENEMIES_LEFT_ALIVE_FOR_CURRENT_STAGE() = 0 // TLG_CLEAR_LEVEL_BIT_FOR_LEVEL(TLG_LEVELS_BIT_SHOULD_STOP) // TLG_CLEAR_LEVEL_BIT_FOR_LEVEL(TLG_LEVELS_BIT_STOPPED) // TLG_INCREASE_CURRENT_LEVEL_STAGE() // RETURN TRUE // ENDIF // ENDIF // BREAK // ENDSWITCH // // RETURN FALSE //ENDFUNC // Hostages PROC TLG_RESET_HOSTAGE(INT iHostage) sTLGData.sHostageData[iHostage].bRendering = FALSE sTLGData.sHostageData[iHostage].iHealth = 0 sTLGData.sHostageData[iHostage].iBitset = 0 ENDPROC PROC TLG_RESET_HOSTAGES() INT i REPEAT ciTLG_MAX_HOSTAGES i TLG_RESET_HOSTAGE(i) ENDREPEAT sTLGData.iNumberOfHostages = 0 ENDPROC PROC TLG_ADD_HOSTAGE_TO_LIST(FLOAT fPosX = 1000.0, FLOAT fPosY = 900.0, FLOAT fStoppingPos = 500.0, INT iLane = 0, BOOL bFromLeft = FALSE, TLG_CIVILIAN_TYPES eType = TLG_GIRL) sTLGData.sHostageData[sTLGData.iNumberOfHostages].bRendering = TRUE sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSpritePos.x = fPosX sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSpritePos.y = fPosY sTLGData.sHostageData[sTLGData.iNumberOfHostages].fStoppingX = fStoppingPos sTLGData.sHostageData[sTLGData.iNumberOfHostages].eHostageType = eType sTLGData.sHostageData[sTLGData.iNumberOfHostages].iHostageLane = iLane sTLGData.sHostageData[sTLGData.iNumberOfHostages].bGoingBack = bFromLeft sTLGData.sHostageData[sTLGData.iNumberOfHostages].iHealth = 10 SWITCH sTLGData.sHostageData[sTLGData.iNumberOfHostages].eHostageType CASE TLG_GIRL sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.x = cfTLG_ENEMY_SPRITE_WIDTH sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.y = cfTLG_ENEMY_SPRITE_HEIGHT BREAK CASE TLG_GUY sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.x = cfTLG_HOSTAGE_M_SPRITE_WIDTH sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.y = cfTLG_HOSTAGE_M_SPRITE_HEIGHT BREAK CASE TLG_EAGLE sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.x = cfTLG_EAGLE_SPRITE_WIDTH sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.y = cfTLG_EAGLE_SPRITE_HEIGHT BREAK CASE TLG_VULTURE sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.x = cfTLG_VULTURE_SPRITE_WIDTH sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.y = cfTLG_VULTURE_SPRITE_HEIGHT BREAK CASE TLG_BAT sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.x = cfTLG_BAT_SPRITE_WIDTH sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.y = cfTLG_BAT_SPRITE_HEIGHT BREAK CASE TLG_SCORPION sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.x = cfTLG_SCORPION_SPRITE_WIDTH sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.y = cfTLG_SCORPION_SPRITE_HEIGHT BREAK CASE TLG_MOUSE sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.x = cfTLG_MOUSE_SPRITE_WIDTH sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.y = cfTLG_MOUSE_SPRITE_HEIGHT BREAK CASE TLG_PRISONER_1 CASE TLG_PRISONER_2 CASE TLG_PRISONER_3 sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.x = cfTLG_ENEMY_SPRITE_WIDTH sTLGData.sHostageData[sTLGData.iNumberOfHostages].vSize.y = cfTLG_ENEMY_SPRITE_HEIGHT BREAK ENDSWITCH sTLGData.iNumberOfHostages++ ENDPROC PROC TLG_INIT_HOSTAGES() SWITCH sTLGData.eCurrentLevel CASE TLG_LEVEL_DESERT TLG_ADD_HOSTAGE_TO_LIST(7200, 410, -200, 0, FALSE, TLG_GIRL) TLG_ADD_HOSTAGE_TO_LIST(10000, 931.125, -200, 2, FALSE, TLG_SCORPION) TLG_ADD_HOSTAGE_TO_LIST(12000, 730, 800, 1, FALSE, TLG_GUY) TLG_ADD_HOSTAGE_TO_LIST(20000, 610, 800, 1, FALSE, TLG_GIRL) TLG_ADD_HOSTAGE_TO_LIST(-1000, 170, 100, 0, TRUE, TLG_EAGLE) TLG_ADD_HOSTAGE_TO_LIST(-8000, 170, 100, 0, TRUE, TLG_EAGLE) TLG_ADD_HOSTAGE_TO_LIST(-14000, 170, 100, 0, TRUE, TLG_EAGLE) TLG_ADD_HOSTAGE_TO_LIST(25000, 410, 100, 0, FALSE, TLG_GIRL) BREAK CASE TLG_LEVEL_TOWN TLG_ADD_HOSTAGE_TO_LIST(7200, 410, -200, 0, FALSE, TLG_GIRL) TLG_ADD_HOSTAGE_TO_LIST(5000, 931.125, -200, 2, FALSE, TLG_MOUSE) TLG_ADD_HOSTAGE_TO_LIST(10000, 931.125, -200, 2, FALSE, TLG_SCORPION) TLG_ADD_HOSTAGE_TO_LIST(12000, 730, 800, 1, FALSE, TLG_GUY) TLG_ADD_HOSTAGE_TO_LIST(20000, 730, 800, 1, FALSE, TLG_GIRL) TLG_ADD_HOSTAGE_TO_LIST(-1000, 170, 100, 0, TRUE, TLG_EAGLE) TLG_ADD_HOSTAGE_TO_LIST(-8000, 170, 100, 0, TRUE, TLG_EAGLE) TLG_ADD_HOSTAGE_TO_LIST(25000, 410, 100, 0, FALSE, TLG_GIRL) BREAK CASE TLG_LEVEL_FOREST TLG_ADD_HOSTAGE_TO_LIST(7200, 410, -200, 0, FALSE, TLG_GIRL) TLG_ADD_HOSTAGE_TO_LIST(12000, 730, 800, 1, FALSE, TLG_GUY) TLG_ADD_HOSTAGE_TO_LIST(5000, 931.125, -200, 2, FALSE, TLG_MOUSE) TLG_ADD_HOSTAGE_TO_LIST(15000, 730, 800, 2, FALSE, TLG_GIRL) TLG_ADD_HOSTAGE_TO_LIST(-1000, 170, 100, 0, TRUE, TLG_VULTURE) TLG_ADD_HOSTAGE_TO_LIST(-8000, 170, 100, 0, TRUE, TLG_VULTURE) TLG_ADD_HOSTAGE_TO_LIST(-14000, 170, 100, 0, TRUE, TLG_VULTURE) TLG_ADD_HOSTAGE_TO_LIST(20000, 410, 100, 0, FALSE, TLG_GIRL) BREAK CASE TLG_LEVEL_MINE TLG_ADD_HOSTAGE_TO_LIST(5000, 931.125, -200, 2, FALSE, TLG_MOUSE) TLG_ADD_HOSTAGE_TO_LIST(7200, 410, -200, 0, FALSE, TLG_GIRL) TLG_ADD_HOSTAGE_TO_LIST(12000, 730, 800, 1, FALSE, TLG_GUY) TLG_ADD_HOSTAGE_TO_LIST(20000, 730, 800, 1, FALSE, TLG_GIRL) TLG_ADD_HOSTAGE_TO_LIST(2800, 200, 100, 0, FALSE, TLG_BAT) TLG_ADD_HOSTAGE_TO_LIST(8000, 300, 100, 0, FALSE, TLG_BAT) TLG_ADD_HOSTAGE_TO_LIST(14000, 170, 100, 0, FALSE, TLG_BAT) TLG_ADD_HOSTAGE_TO_LIST(25000, 410, 100, 0, FALSE, TLG_GIRL) BREAK CASE TLG_LEVEL_GRAVEYARD TLG_ADD_HOSTAGE_TO_LIST(5000, 931.125, -200, 2, FALSE, TLG_MOUSE) TLG_ADD_HOSTAGE_TO_LIST(7200, 410, -200, 0, FALSE, TLG_GIRL) TLG_ADD_HOSTAGE_TO_LIST(12000, 730, 800, 1, FALSE, TLG_GUY) TLG_ADD_HOSTAGE_TO_LIST(20000, 730, 800, 1, FALSE, TLG_GIRL) TLG_ADD_HOSTAGE_TO_LIST(-1000, 160, 100, 0, TRUE, TLG_VULTURE) TLG_ADD_HOSTAGE_TO_LIST(-8000, 170, 100, 0, TRUE, TLG_VULTURE) TLG_ADD_HOSTAGE_TO_LIST(-14000, 160, 100, 0, TRUE, TLG_VULTURE) TLG_ADD_HOSTAGE_TO_LIST(25000, 410, 100, 0, FALSE, TLG_GIRL) BREAK ENDSWITCH ENDPROC FUNC BOOL TLG_IS_HOSTAGE_BIT_SET(INT iHostage, TLG_HOSTAGE_BITSET eBit) RETURN IS_BIT_SET(sTLGData.sHostageData[iHostage].iBitset, ENUM_TO_INT(eBit)) ENDFUNC PROC TLG_SET_HOSTAGE_BIT(INT iHostage, TLG_HOSTAGE_BITSET eBit) IF NOT TLG_IS_HOSTAGE_BIT_SET(iHostage, eBit) SET_BIT(sTLGData.sHostageData[iHostage].iBitset, ENUM_TO_INT(eBit)) #IF IS_DEBUG_BUILD CDEBUG1LN(DEBUG_MINIGAME, "{DSW} [TLG_SET_HOSTAGE_BIT] Set hostage ", iHostage," bit, ", TLG_GET_HOSTAGE_BIT_AS_STRING(eBit)) #ENDIF ENDIF ENDPROC /// PURPOSE: /// If we want a prop or a pickup to loop round as the level scrolls, so it appears agan, need to work out how far /// to warp it so that it re-appears at a sensible location (i.e. not on top of another prop). /// Generally some multiple of the screen width + an offset. The offset is the difference between the x pos /// of the right-most element on the 'final' screen and the right hand screen limit /// RETURNS: /// FUNC FLOAT TLG_GET_OFFSET_FOR_ELEMENT_WARP_FOR_CURRENT_LEVEL() SWITCH TLG_GET_CURRENT_LEVEL() CASE TLG_LEVEL_TOWN RETURN (cfBASE_SCREEN_WIDTH * 2.0) + (cfRIGHT_SCREEN_LIMIT - cfTLG_TOWN_LEVEL_RIGHTMOST_ENTITY_X) BREAK CASE TLG_LEVEL_FOREST RETURN (cfBASE_SCREEN_WIDTH * 2.0) + (cfRIGHT_SCREEN_LIMIT - cfTLG_FOREST_LEVEL_RIGHTMOST_ENTITY_X) BREAK CASE TLG_LEVEL_MINE RETURN (cfBASE_SCREEN_WIDTH * 2.0) + (cfRIGHT_SCREEN_LIMIT - cfTLG_MINE_LEVEL_RIGHTMOST_ENTITY_X) BREAK CASE TLG_LEVEL_GRAVEYARD RETURN (cfBASE_SCREEN_WIDTH * 2.0) + (cfRIGHT_SCREEN_LIMIT - cfTLG_GRAVEYARD_LEVEL_RIGHTMOST_ENTITY_X) BREAK ENDSWITCH RETURN 0.0 ENDFUNC FUNC TEXT_LABEL_31 TLG_GET_TEXTURE_DICTIONARY_FOR_LEVEL(TLG_LEVELS eLevel) TEXT_LABEL_31 tl31Level SWITCH eLevel CASE TLG_LEVEL_DESERT tl31Level = sTLGData.tl31Level1TextDict BREAK CASE TLG_LEVEL_TOWN tl31Level = sTLGData.tl31Level2TextDict BREAK CASE TLG_LEVEL_FOREST tl31Level = sTLGData.tl31Level3TextDict BREAK CASE TLG_LEVEL_MINE tl31Level = sTLGData.tl31Level4TextDict BREAK CASE TLG_LEVEL_GRAVEYARD tl31Level = sTLGData.tl31Level5TextDict BREAK ENDSWITCH RETURN tl31Level ENDFUNC