Files
gtav-src/script/dev_ng/shared/include/public/gunslinger_arcade_levels.sch
T
2025-09-29 00:52:08 +02:00

2541 lines
136 KiB
XML
Executable File

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