5263 lines
190 KiB
XML
Executable File
5263 lines
190 KiB
XML
Executable File
USING "arcade_cabinet_minigame_common.sch"
|
|
USING "arcade_games_postfx.sch"
|
|
USING "arcade_games_sound.sch"
|
|
USING "arcade_games_leaderboard.sch"
|
|
USING "arcade_games_help_text.sch"
|
|
USING "arcade_games_help_text_flow.sch"
|
|
USING "degenatron_games_animation.sch"
|
|
|
|
CONST_FLOAT cfGAME_SCREEN_WIDTH 1300.0//1264.0
|
|
CONST_FLOAT cfGAME_SCREEN_HEIGHT 940.0
|
|
|
|
CONST_FLOAT cfTWS_DEFAULT_ANIM_FRAME_TIME 33.0 //30 FPS
|
|
CONST_FLOAT cfTWS_FAST_ANIM_FRAME_TIME 66.0 // 15 FPS
|
|
CONST_FLOAT cfTWS_SLOW_ANIM_FRAME_TIME 88.0 //10 FPS 109
|
|
|
|
CONST_FLOAT cfTWS_RESCALE_FACTOR 2.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_IDLE_WIDTH 128.0
|
|
CONST_FLOAT cfTWS_PLAYER_IDLE_HEIGHT 168.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_IDLE_WIDTH 136.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_IDLE_HEIGHT 196.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_IDLE_WIDTH 184.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_IDLE_HEIGHT 208.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_WALK_WIDTH 104.0
|
|
CONST_FLOAT cfTWS_PLAYER_WALK_HEIGHT 180.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_WALK_WIDTH 144.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_WALK_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_WALK_WIDTH 188.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_WALK_HEIGHT 208.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_JUMP_WIDTH 108.0
|
|
CONST_FLOAT cfTWS_PLAYER_JUMP_HEIGHT 208.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_JUMP_WIDTH 144.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_JUMP_HEIGHT 228.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_JUMP_WIDTH 184.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_JUMP_HEIGHT 232.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_JUMP_HOLE_WIDTH 132.0
|
|
CONST_FLOAT cfTWS_PLAYER_JUMP_HOLE_HEIGHT 184.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_ATTACK_WIDTH 232.0
|
|
CONST_FLOAT cfTWS_PLAYER_ATTACK_HEIGHT 168.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_ATTACK_WIDTH 224.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_ATTACK_HEIGHT 196.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_ATTACK_WIDTH 240.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_ATTACK_HEIGHT 252.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_ATTACK_LOW_WIDTH 132.0
|
|
CONST_FLOAT cfTWS_PLAYER_ATTACK_LOW_HEIGHT 176.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_ATTACK_LOW_WIDTH 184.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_ATTACK_LOW_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_ATTACK_LOW_WIDTH 168.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_ATTACK_LOW_HEIGHT 212.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_CHARGE_WIDTH 196.0
|
|
CONST_FLOAT cfTWS_PLAYER_CHARGE_HEIGHT 168.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_CHARGE_WIDTH 168.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_CHARGE_HEIGHT 184.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_CHARGE_WIDTH 212.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_CHARGE_HEIGHT 204.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_JUMP_ATTACK_WIDTH 140.0
|
|
CONST_FLOAT cfTWS_PLAYER_JUMP_ATTACK_HEIGHT 188.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_JUMP_ATTACK_WIDTH 176.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_JUMP_ATTACK_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_JUMP_ATTACK_WIDTH 204.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_JUMP_ATTACK_HEIGHT 268.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_HURT_FALL_1_WIDTH 172.0
|
|
CONST_FLOAT cfTWS_PLAYER_HURT_FALL_1_HEIGHT 172.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_HURT_FALL_1_WIDTH 204.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_HURT_FALL_1_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_HURT_FALL_1_WIDTH 228.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_HURT_FALL_1_HEIGHT 208.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_HURT_FALL_2_WIDTH 172.0
|
|
CONST_FLOAT cfTWS_PLAYER_HURT_FALL_2_HEIGHT 172.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_HURT_FALL_2_WIDTH 204.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_HURT_FALL_2_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_HURT_FALL_2_WIDTH 228.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_HURT_FALL_2_HEIGHT 208.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_HURT_FLAT_WIDTH 172.0
|
|
CONST_FLOAT cfTWS_PLAYER_HURT_FLAT_HEIGHT 172.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_HURT_FLAT_WIDTH 204.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_HURT_FLAT_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_HURT_FLAT_WIDTH 228.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_HURT_FLAT_HEIGHT 208.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_HURT_GETUP_1_WIDTH 172.0
|
|
CONST_FLOAT cfTWS_PLAYER_HURT_GETUP_1_HEIGHT 172.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_HURT_GETUP_1_WIDTH 204.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_HURT_GETUP_1_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_HURT_GETUP_1_WIDTH 228.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_HURT_GETUP_1_HEIGHT 208.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_HURT_GETUP_2_WIDTH 172.0
|
|
CONST_FLOAT cfTWS_PLAYER_HURT_GETUP_2_HEIGHT 172.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_HURT_GETUP_2_WIDTH 204.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_HURT_GETUP_2_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_HURT_GETUP_2_WIDTH 228.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_HURT_GETUP_2_HEIGHT 208.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_HURT_GETUP_3_WIDTH 172.0
|
|
CONST_FLOAT cfTWS_PLAYER_HURT_GETUP_3_HEIGHT 172.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_HURT_GETUP_3_WIDTH 204.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_HURT_GETUP_3_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_HURT_GETUP_3_WIDTH 228.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_HURT_GETUP_3_HEIGHT 208.0
|
|
|
|
CONST_FLOAT cfTWS_PLAYER_EVOLVING_WIDTH 124.0
|
|
CONST_FLOAT cfTWS_PLAYER_EVOLVING_HEIGHT 240.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_EVOLVING_WIDTH 144.0
|
|
CONST_FLOAT cfTWS_PLAYER_2_EVOLVING_HEIGHT 260.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_EVOLVING_WIDTH 204.0
|
|
CONST_FLOAT cfTWS_PLAYER_3_EVOLVING_HEIGHT 304.0
|
|
|
|
CONST_FLOAT cfTWS_BRUTE_IDLE_WIDTH 152.0
|
|
CONST_FLOAT cfTWS_BRUTE_IDLE_HEIGHT 264.0
|
|
CONST_FLOAT cfTWS_BRUTE_WALK_WIDTH 156.0
|
|
CONST_FLOAT cfTWS_BRUTE_WALK_HEIGHT 264.0
|
|
CONST_FLOAT cfTWS_BRUTE_ATTACK_WIDTH 304.0
|
|
CONST_FLOAT cfTWS_BRUTE_ATTACK_HEIGHT 264.0
|
|
CONST_FLOAT cfTWS_BRUTE_FALL_WIDTH 236.0
|
|
CONST_FLOAT cfTWS_BRUTE_FALL_HEIGHT 272.0
|
|
CONST_FLOAT cfTWS_BRUTE_FLAT_WIDTH 236.0
|
|
CONST_FLOAT cfTWS_BRUTE_FLAT_HEIGHT 272.0
|
|
CONST_FLOAT cfTWS_BRUTE_GETTINGUP1_WIDTH 236.0
|
|
CONST_FLOAT cfTWS_BRUTE_GETTINGUP1_HEIGHT 272.0
|
|
CONST_FLOAT cfTWS_BRUTE_GETTINGUP2_WIDTH 236.0
|
|
CONST_FLOAT cfTWS_BRUTE_GETTINGUP2_HEIGHT 272.0
|
|
CONST_FLOAT cfTWS_BRUTE_STUN_WIDTH 236.0
|
|
CONST_FLOAT cfTWS_BRUTE_STUN_HEIGHT 272.0
|
|
|
|
CONST_FLOAT cfTWS_BRUTE_AXE_IDLE_WIDTH 152.0
|
|
CONST_FLOAT cfTWS_BRUTE_AXE_IDLE_HEIGHT 216.0
|
|
CONST_FLOAT cfTWS_BRUTE_AXE_WALK_WIDTH 152.0
|
|
CONST_FLOAT cfTWS_BRUTE_AXE_WALK_HEIGHT 216.0
|
|
CONST_FLOAT cfTWS_BRUTE_AXE_ATTACK_WIDTH 304.0
|
|
CONST_FLOAT cfTWS_BRUTE_AXE_ATTACK_HEIGHT 264.0
|
|
CONST_FLOAT cfTWS_BRUTE_AXE_FALL_WIDTH 236.0
|
|
CONST_FLOAT cfTWS_BRUTE_AXE_FALL_HEIGHT 220.0
|
|
CONST_FLOAT cfTWS_BRUTE_AXE_STUN_WIDTH 236.0
|
|
CONST_FLOAT cfTWS_BRUTE_AXE_STUN_HEIGHT 220.0
|
|
|
|
CONST_FLOAT cfTWS_GRUNT_IDLE_WIDTH 100.0
|
|
CONST_FLOAT cfTWS_GRUNT_IDLE_HEIGHT 176.0
|
|
CONST_FLOAT cfTWS_GRUNT_WALK_WIDTH 124.0
|
|
CONST_FLOAT cfTWS_GRUNT_WALK_HEIGHT 212.0
|
|
CONST_FLOAT cfTWS_GRUNT_ATTACK_WIDTH 160.0
|
|
CONST_FLOAT cfTWS_GRUNT_ATTACK_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_GRUNT_FALL_WIDTH 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_FALL_HEIGHT 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_FLAT_WIDTH 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_FLAT_HEIGHT 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_GETTINGUP1_WIDTH 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_GETTINGUP1_HEIGHT 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_GETTINGUP2_WIDTH 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_GETTINGUP2_HEIGHT 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_STUN_WIDTH 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_STUN_HEIGHT 208.0
|
|
|
|
CONST_FLOAT cfTWS_GRUNT_SWORD_IDLE_WIDTH 152.0
|
|
CONST_FLOAT cfTWS_GRUNT_SWORD_IDLE_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_GRUNT_SWORD_WALK_WIDTH 152.0
|
|
CONST_FLOAT cfTWS_GRUNT_SWORD_WALK_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_GRUNT_SWORD_ATTACK_WIDTH 244.0
|
|
CONST_FLOAT cfTWS_GRUNT_SWORD_ATTACK_HEIGHT 248.0
|
|
CONST_FLOAT cfTWS_GRUNT_SWORD_FALL_WIDTH 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_SWORD_FALL_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_GRUNT_SWORD_STUN_WIDTH 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_SWORD_STUN_HEIGHT 192.0
|
|
|
|
CONST_FLOAT cfTWS_GRUNT_FIRESWORD_IDLE_WIDTH 152.0
|
|
CONST_FLOAT cfTWS_GRUNT_FIRESWORD_IDLE_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_GRUNT_FIRESWORD_WALK_WIDTH 152.0
|
|
CONST_FLOAT cfTWS_GRUNT_FIRESWORD_WALK_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_GRUNT_FIRESWORD_ATTACK_WIDTH 244.0
|
|
CONST_FLOAT cfTWS_GRUNT_FIRESWORD_ATTACK_HEIGHT 248.0
|
|
CONST_FLOAT cfTWS_GRUNT_FIRESWORD_FALL_WIDTH 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_FIRESWORD_FALL_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_GRUNT_FIRESWORD_STUN_WIDTH 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_FIRESWORD_STUN_HEIGHT 192.0
|
|
|
|
CONST_FLOAT cfTWS_GRUNT_SPEAR_IDLE_WIDTH 184.0
|
|
CONST_FLOAT cfTWS_GRUNT_SPEAR_IDLE_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_GRUNT_SPEAR_WALK_WIDTH 184.0
|
|
CONST_FLOAT cfTWS_GRUNT_SPEAR_WALK_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_GRUNT_SPEAR_ATTACK_WIDTH 252.0
|
|
CONST_FLOAT cfTWS_GRUNT_SPEAR_ATTACK_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_GRUNT_SPEAR_FALL_WIDTH 232.0
|
|
CONST_FLOAT cfTWS_GRUNT_SPEAR_FALL_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_GRUNT_SPEAR_STUN_WIDTH 232.0
|
|
CONST_FLOAT cfTWS_GRUNT_SPEAR_STUN_HEIGHT 192.0
|
|
|
|
CONST_FLOAT cfTWS_GRUNT_CROSSBOW_IDLE_WIDTH 160.0
|
|
CONST_FLOAT cfTWS_GRUNT_CROSSBOW_IDLE_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_GRUNT_CROSSBOW_WALK_WIDTH 168.0
|
|
CONST_FLOAT cfTWS_GRUNT_CROSSBOW_WALK_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_GRUNT_CROSSBOW_ATTACK_WIDTH 168.0
|
|
CONST_FLOAT cfTWS_GRUNT_CROSSBOW_ATTACK_HEIGHT 196.0
|
|
CONST_FLOAT cfTWS_GRUNT_CROSSBOW_FALL_WIDTH 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_CROSSBOW_FALL_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_GRUNT_CROSSBOW_STUN_WIDTH 208.0
|
|
CONST_FLOAT cfTWS_GRUNT_CROSSBOW_STUN_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_GRUNT_CROSSBOW_ARROW_WIDTH 72.0
|
|
CONST_FLOAT cfTWS_GRUNT_CROSSBOW_ARROW_HEIGHT 12.0
|
|
|
|
CONST_FLOAT cfTWS_GRUNT_CASTER_IDLE_WIDTH 88.0
|
|
CONST_FLOAT cfTWS_GRUNT_CASTER_IDLE_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_GRUNT_CASTER_WALK_WIDTH 88.0
|
|
CONST_FLOAT cfTWS_GRUNT_CASTER_WALK_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_GRUNT_CASTER_ATTACK_WIDTH 96.0
|
|
CONST_FLOAT cfTWS_GRUNT_CASTER_ATTACK_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_GRUNT_CASTER_DEATH_WIDTH 88.0
|
|
CONST_FLOAT cfTWS_GRUNT_CASTER_DEATH_HEIGHT 200.0
|
|
CONST_FLOAT cfTWS_GRUNT_CASTER_FIREBALL_WIDTH 88.0
|
|
CONST_FLOAT cfTWS_GRUNT_CASTER_FIREBALL_HEIGHT 32.0
|
|
|
|
CONST_FLOAT cfTWS_BOSS_SPIDER_IDLE_WIDTH 444.0
|
|
CONST_FLOAT cfTWS_BOSS_SPIDER_IDLE_HEIGHT 220.0
|
|
CONST_FLOAT cfTWS_BOSS_SPIDER_ATTACK_WIDTH 444.0
|
|
CONST_FLOAT cfTWS_BOSS_SPIDER_ATTACK_HEIGHT 276.0
|
|
CONST_FLOAT cfTWS_BOSS_SPIDER_SPIT_WIDTH 404.0
|
|
CONST_FLOAT cfTWS_BOSS_SPIDER_SPIT_HEIGHT 220.0
|
|
CONST_FLOAT cfTWS_BOSS_SPIDER_STUN_WIDTH 444.0
|
|
CONST_FLOAT cfTWS_BOSS_SPIDER_STUN_HEIGHT 312.0
|
|
CONST_FLOAT cfTWS_BOSS_SPIDER_DEAD_WIDTH 452.0
|
|
CONST_FLOAT cfTWS_BOSS_SPIDER_DEAD_HEIGHT 184.0
|
|
CONST_FLOAT cfTWS_BOSS_SPIDER_GLIDE_WIDTH 444.0
|
|
CONST_FLOAT cfTWS_BOSS_SPIDER_GLIDE_HEIGHT 312.0
|
|
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_IDLE_WIDTH 220.0
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_IDLE_HEIGHT 208.0
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_HURT_WIDTH 232.0
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_HURT_HEIGHT 212.0
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_ATTACK_WIDTH 308.0
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_ATTACK_HEIGHT 208.0
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_WALK_WIDTH 208.0
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_WALK_HEIGHT 232.0
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_ATTACK_JUMP_WIDTH 184.0
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_ATTACK_JUMP_HEIGHT 212.0
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_JUMP_WIDTH 220.0
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_JUMP_HEIGHT 248.0
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_JUMP_LAND_WIDTH 220.0
|
|
CONST_FLOAT cfTWS_BOSS_AMAZON_JUMP_LAND_HEIGHT 180.0
|
|
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_IDLE_WIDTH 124.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_IDLE_HEIGHT 280.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_1_WIDTH 124.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_1_HEIGHT 278.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_2_WIDTH 144.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_2_HEIGHT 224.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_3_WIDTH 120.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_3_HEIGHT 224.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_4_WIDTH 120.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_4_HEIGHT 208.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_5_WIDTH 116.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_5_HEIGHT 188.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_6_WIDTH 124.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_6_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_7_WIDTH 172.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_7_HEIGHT 172.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_8_WIDTH 192.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DYING_8_HEIGHT 132.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_HURT_WIDTH 144.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_HURT_HEIGHT 284.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_KNEE_WIDTH 152.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_KNEE_HEIGHT 280.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DEAD_WIDTH 192.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_DEAD_HEIGHT 108.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_SLAM_WIDTH 168.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_SLAM_HEIGHT 296.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_SLASH_WIDTH 248.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_SLASH_HEIGHT 336.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_WALK_WIDTH 128.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_WALK_HEIGHT 280.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_COD_WIDTH 200.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_COD_HEIGHT 140.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_SWORD_WIDTH 112.0
|
|
CONST_FLOAT cfTWS_BOSS_KNIGHT_SWORD_HEIGHT 136.0
|
|
|
|
CONST_FLOAT cfTWS_BAT_IDLE_WIDTH 36.0
|
|
CONST_FLOAT cfTWS_BAT_IDLE_HEIGHT 88.0
|
|
CONST_FLOAT cfTWS_BAT_FLY_WIDTH 100.0
|
|
CONST_FLOAT cfTWS_BAT_FLY_HEIGHT 144.0
|
|
CONST_FLOAT cfTWS_BAT_DIE_WIDTH 88.0
|
|
CONST_FLOAT cfTWS_BAT_DIE_HEIGHT 76.0
|
|
|
|
CONST_FLOAT cfTWS_BOULDER_WALK_WIDTH 68.0
|
|
CONST_FLOAT cfTWS_BOULDER_WALK_HEIGHT 132.0
|
|
|
|
CONST_FLOAT cfTWS_SLIME_IDLE_WIDTH 136.0
|
|
CONST_FLOAT cfTWS_SLIME_IDLE_HEIGHT 128.0
|
|
CONST_FLOAT cfTWS_SLIME_WALK_WIDTH 136.0
|
|
CONST_FLOAT cfTWS_SLIME_WALK_HEIGHT 128.0
|
|
CONST_FLOAT cfTWS_SLIME_STUN_WIDTH 112.0
|
|
CONST_FLOAT cfTWS_SLIME_STUN_HEIGHT 128.0
|
|
CONST_FLOAT cfTWS_SLIME_DIE_WIDTH 152.0
|
|
CONST_FLOAT cfTWS_SLIME_DIE_HEIGHT 128.0
|
|
|
|
CONST_FLOAT cfTWS_SNAKE_IDLE_WIDTH 292.0
|
|
CONST_FLOAT cfTWS_SNAKE_IDLE_HEIGHT 72.0
|
|
CONST_FLOAT cfTWS_SNAKE_DIE_WIDTH 292.0
|
|
CONST_FLOAT cfTWS_SNAKE_DIE_HEIGHT 92.0
|
|
|
|
CONST_FLOAT cfTWS_FAIRY_IDLE_WIDTH 80.0
|
|
CONST_FLOAT cfTWS_FAIRY_IDLE_HEIGHT 128.0
|
|
CONST_FLOAT cfTWS_FAIRY_ATTACK_WIDTH 108.0
|
|
CONST_FLOAT cfTWS_FAIRY_ATTACK_HEIGHT 128.0
|
|
CONST_FLOAT cfTWS_FAIRY_DIE_WIDTH 108.0
|
|
CONST_FLOAT cfTWS_FAIRY_DIE_HEIGHT 128.0
|
|
|
|
CONST_FLOAT cfTWS_SPIDER_IDLE_WIDTH 148.0
|
|
CONST_FLOAT cfTWS_SPIDER_IDLE_HEIGHT 136.0
|
|
CONST_FLOAT cfTWS_SPIDER_WALK_WIDTH 148.0
|
|
CONST_FLOAT cfTWS_SPIDER_WALK_HEIGHT 136.0
|
|
CONST_FLOAT cfTWS_SPIDER_STUN_DEAD_WIDTH 184.0
|
|
CONST_FLOAT cfTWS_SPIDER_STUN_DEAD_HEIGHT 136.0
|
|
CONST_FLOAT cfTWS_SPIDER_WEB_WIDTH 156.0
|
|
CONST_FLOAT cfTWS_SPIDER_WEB_HEIGHT 136.0
|
|
CONST_FLOAT cfTWS_WEB_WIDTH 8.0
|
|
CONST_FLOAT cfTWS_WEB_HEIGHT 16.0
|
|
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_IDLE_WIDTH 92.0
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_IDLE_HEIGHT 112.0
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_WALK_WIDTH 92.0
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_WALK_HEIGHT 168.0
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_HURT_WIDTH 100.0
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_HURT_HEIGHT 92.0
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_DEAD_WIDTH 80.0
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_DEAD_HEIGHT 88.0
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_SPAWN_WIDTH 92.0
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_SPAWN_HEIGHT 180.0
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_ATTACK_WIDTH 92.0
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_ATTACK_HEIGHT 240.0
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_COINS_WIDTH 180.0
|
|
CONST_FLOAT cfTWS_LEPRECHAUN_COINS_HEIGHT 164.0
|
|
|
|
CONST_FLOAT cfTWS_WIZARD_GEN_WIDTH 188.0
|
|
CONST_FLOAT cfTWS_WIZARD_GEN_HEIGHT 220.0
|
|
CONST_FLOAT cfTWS_WIZARD_DIE_WIDTH 252.0
|
|
CONST_FLOAT cfTWS_WIZARD_DIE_HEIGHT 272.0
|
|
CONST_FLOAT cfTWS_WIZARD_STUN_WIDTH 168.0
|
|
CONST_FLOAT cfTWS_WIZARD_STUN_HEIGHT 220.0
|
|
|
|
CONST_FLOAT cfTWS_NPC_TWINS_WIDTH 76.0
|
|
CONST_FLOAT cfTWS_NPC_TWINS_HEIGHT 264.0
|
|
CONST_FLOAT cfTWS_NPC_TWINS_X 400.0
|
|
CONST_FLOAT cfTWS_NPC_TWINS_Y 350.0
|
|
CONST_FLOAT cfTWS_NPC_VILLAGER_WIDTH 96.0
|
|
CONST_FLOAT cfTWS_NPC_VILLAGER_HEIGHT 184.0
|
|
|
|
CONST_FLOAT cfTWS_ITEM_HP_SMA_WIDTH 20.0
|
|
CONST_FLOAT cfTWS_ITEM_HP_SMA_HEIGHT 28.0
|
|
CONST_FLOAT cfTWS_ITEM_HP_MED_WIDTH 32.0
|
|
CONST_FLOAT cfTWS_ITEM_HP_MED_HEIGHT 48.0
|
|
CONST_FLOAT cfTWS_ITEM_HP_LAR_WIDTH 36.0
|
|
CONST_FLOAT cfTWS_ITEM_HP_LAR_HEIGHT 100.0
|
|
|
|
CONST_FLOAT cfTWS_ITEM_GOLD_1_WIDTH 48.0
|
|
CONST_FLOAT cfTWS_ITEM_GOLD_1_HEIGHT 48.0
|
|
CONST_FLOAT cfTWS_ITEM_GOLD_2_WIDTH 56.0
|
|
CONST_FLOAT cfTWS_ITEM_GOLD_2_HEIGHT 60.0
|
|
CONST_FLOAT cfTWS_ITEM_GOLD_3_WIDTH 48.0
|
|
CONST_FLOAT cfTWS_ITEM_GOLD_3_HEIGHT 56.0
|
|
CONST_FLOAT cfTWS_ITEM_GOLD_4_WIDTH 36.0
|
|
CONST_FLOAT cfTWS_ITEM_GOLD_4_HEIGHT 36.0
|
|
|
|
CONST_FLOAT cfTWS_ITEM_1UP_WIDTH 36.0
|
|
CONST_FLOAT cfTWS_ITEM_1UP_HEIGHT 68.0
|
|
|
|
CONST_FLOAT cfTWS_SC_BRIDGE_WIDTH 1232.0
|
|
CONST_FLOAT cfTWS_SC_BRIDGE_HEIGHT 448.0
|
|
CONST_FLOAT cfTWS_SC_BRIDGE_OFFSET 702.0
|
|
|
|
CONST_FLOAT cfTWS_TRAP_STALAGTITE_WIDTH 32.0
|
|
CONST_FLOAT cfTWS_TRAP_STALAGTITE_HEIGHT 120.0
|
|
CONST_FLOAT cfTWS_TRAP_HOLE_WIDTH 132.0
|
|
CONST_FLOAT cfTWS_TRAP_HOLE_HEIGHT 40.0
|
|
CONST_FLOAT cfTWS_TRAP_SPEAR_WIDTH 28.0
|
|
CONST_FLOAT cfTWS_TRAP_SPEAR_HEIGHT 160.0
|
|
|
|
CONST_FLOAT cfTWS_FG_INTRO_1_WIDTH 168.0
|
|
CONST_FLOAT cfTWS_FG_INTRO_1_HEIGHT 480.0
|
|
CONST_FLOAT cfTWS_FG_COL1_WIDTH 232.0
|
|
CONST_FLOAT cfTWS_FG_COL1_HEIGHT 480.0
|
|
CONST_FLOAT cfTWS_FG_COL2_WIDTH 128.0
|
|
CONST_FLOAT cfTWS_FG_COL2_HEIGHT 480.0
|
|
CONST_FLOAT cfTWS_FG_STALAGMITE1_WIDTH 148.0
|
|
CONST_FLOAT cfTWS_FG_STALAGMITE1_HEIGHT 160.0
|
|
CONST_FLOAT cfTWS_FG_STALAGMITE2_WIDTH 80.0
|
|
CONST_FLOAT cfTWS_FG_STALAGMITE2_HEIGHT 116.0
|
|
CONST_FLOAT cfTWS_FG_STALAGMITE3_WIDTH 64.0
|
|
CONST_FLOAT cfTWS_FG_STALAGMITE3_HEIGHT 80.0
|
|
CONST_FLOAT cfTWS_FG_BOSS_WIDTH 1556.0
|
|
CONST_FLOAT cfTWS_FG_BOSS_HEIGHT 248.0
|
|
|
|
CONST_FLOAT cfTWS_FG_SWAMP_GRASS_WIDTH 320.0
|
|
CONST_FLOAT cfTWS_FG_SWAMP_GRASS_HEIGHT 72.0
|
|
CONST_FLOAT cfTWS_FG_PIKES_WIDTH 120.0
|
|
CONST_FLOAT cfTWS_FG_PIKES_HEIGHT 172.0
|
|
CONST_FLOAT cfTWS_FG_ROOT_WIDTH 320.0
|
|
CONST_FLOAT cfTWS_FG_ROOT_HEIGHT 104.0
|
|
CONST_FLOAT cfTWS_FG_VINES_1_WIDTH 204.0
|
|
CONST_FLOAT cfTWS_FG_VINES_1_HEIGHT 216.0
|
|
CONST_FLOAT cfTWS_FG_VINES_2_WIDTH 176.0
|
|
CONST_FLOAT cfTWS_FG_VINES_2_HEIGHT 216.0
|
|
CONST_FLOAT cfTWS_FG_VINES_3_WIDTH 152.0
|
|
CONST_FLOAT cfTWS_FG_VINES_3_HEIGHT 216.0
|
|
|
|
CONST_FLOAT cfTWS_FG_INTRO_3_WIDTH 77.0
|
|
CONST_FLOAT cfTWS_FG_INTRO_3_HEIGHT 328.0
|
|
CONST_FLOAT cfTWS_FG_GARGOYLE_1_WIDTH 128.0
|
|
CONST_FLOAT cfTWS_FG_GARGOYLE_1_HEIGHT 168.0
|
|
CONST_FLOAT cfTWS_FG_GARGOYLE_2_WIDTH 128.0
|
|
CONST_FLOAT cfTWS_FG_GARGOYLE_2_HEIGHT 168.0
|
|
CONST_FLOAT cfTWS_FG_CASTLE_COLUMN_WIDTH 128.0
|
|
CONST_FLOAT cfTWS_FG_CASTLE_COLUMN_HEIGHT 480.0
|
|
CONST_FLOAT cfTWS_FG_CANDLES_1_WIDTH 128.0
|
|
CONST_FLOAT cfTWS_FG_CANDLES_1_HEIGHT 140.0
|
|
CONST_FLOAT cfTWS_FG_CANDLES_2_WIDTH 128.0
|
|
CONST_FLOAT cfTWS_FG_CANDLES_2_HEIGHT 164.0
|
|
|
|
CONST_FLOAT cfTWS_FG_FOREST_SHORT_GRASS_WIDTH 306.0
|
|
CONST_FLOAT cfTWS_FG_FOREST_SHORT_GRASS_HEIGHT 98.0
|
|
CONST_FLOAT cfTWS_FG_FOREST_TALL_GRASS_WIDTH 306.0
|
|
CONST_FLOAT cfTWS_FG_FOREST_TALL_GRASS_HEIGHT 134.0
|
|
|
|
CONST_FLOAT cfTWS_FX_ITEM_WIDTH 40.0
|
|
CONST_FLOAT cfTWS_FX_ITEM_HEIGHT 60.0
|
|
CONST_FLOAT cfTWS_FX_SHADOW_SMALL_WIDTH 28.0
|
|
CONST_FLOAT cfTWS_FX_SHADOW_SMALL_HEIGHT 16.0
|
|
CONST_FLOAT cfTWS_FX_SHADOW_MED_WIDTH 56.0
|
|
CONST_FLOAT cfTWS_FX_SHADOW_MED_HEIGHT 20.0
|
|
CONST_FLOAT cfTWS_FX_SHADOW_LARGE_WIDTH 96.0
|
|
CONST_FLOAT cfTWS_FX_SHADOW_LARGE_HEIGHT 20.0
|
|
CONST_FLOAT cfTWS_FX_SHADOW_AMAZON_WIDTH 180.0
|
|
CONST_FLOAT cfTWS_FX_SHADOW_EXTRA_LARGE_WIDTH 288.0
|
|
CONST_FLOAT cfTWS_FX_SHADOW_EXTRA_LARGE_HEIGHT 60.0
|
|
CONST_FLOAT cfTWS_FX_SWORD_LIGHTNING_WIDTH 48.0
|
|
CONST_FLOAT cfTWS_FX_SWORD_LIGHTNING_HEIGHT 320.0
|
|
CONST_FLOAT cfTWS_FX_SUPERATTACK_WIDTH 92.0
|
|
CONST_FLOAT cfTWS_FX_SUPERATTACK_HEIGHT 160.0
|
|
CONST_FLOAT cfTWS_FX_VENOM_HIT_WIDTH 100.0
|
|
CONST_FLOAT cfTWS_FX_VENOM_HIT_HEIGHT 100.0
|
|
CONST_FLOAT cfTWS_FX_LARGE_HIT_WIDTH 80.0
|
|
CONST_FLOAT cfTWS_FX_LARGE_HIT_HEIGHT 80.0
|
|
CONST_FLOAT cfTWS_FX_SMALL_HIT_WIDTH 48.0
|
|
CONST_FLOAT cfTWS_FX_SMALL_HIT_HEIGHT 48.0
|
|
CONST_FLOAT cfTWS_FX_RIPPED_CLOTHES_HEIGHT 112.0
|
|
CONST_FLOAT cfTWS_FX_RIPPED_CLOTHES_WIDTH 96.0
|
|
CONST_FLOAT cfTWS_FX_BOSS_SPIDER_SPIT_WIDTH 120.0
|
|
CONST_FLOAT cfTWS_FX_BOSS_SPIDER_SPIT_HEIGHT 132.0
|
|
CONST_FLOAT cfTWS_FX_BOSS_SPIDER_VENOM_WIDTH 208.0
|
|
CONST_FLOAT cfTWS_FX_BOSS_SPIDER_VENOM_HEIGHT 68.0
|
|
CONST_FLOAT cfTWS_FX_WIZARD_PILLAR_WIDTH 100.0
|
|
CONST_FLOAT cfTWS_FX_WIZARD_PILLAR_HEIGHT 492.0
|
|
CONST_FLOAT cfTWS_FX_WIZARD_FIRE_WIDTH 64.0
|
|
CONST_FLOAT cfTWS_FX_WIZARD_FIRE_HEIGHT 192.0
|
|
CONST_FLOAT cfTWS_FX_KNIGHT_SWORD_WIDTH 64.0
|
|
CONST_FLOAT cfTWS_FX_KNIGHT_SWORD_HEIGHT 88.0
|
|
CONST_FLOAT cfTWS_FX_HELP_WIDTH 64.0
|
|
CONST_FLOAT cfTWS_FX_HELP_HEIGHT 48.0
|
|
CONST_FLOAT cfTWS_FX_GROG_WIDTH 152.0
|
|
CONST_FLOAT cfTWS_FX_GROG_HEIGHT 152.0
|
|
CONST_FLOAT cfTWS_FX_ARROW_HEIGHT_TO_GROUND 272.0
|
|
|
|
CONST_FLOAT cfTWS_HUD_PORTRAIT_WIDTH 56.0
|
|
CONST_FLOAT cfTWS_HUD_PORTRAIT_HEIGHT 64.0
|
|
CONST_FLOAT cfTWS_HUD_METER_WIDTH 176.0
|
|
CONST_FLOAT cfTWS_HUD_METER_HEIGHT 60.0
|
|
CONST_FLOAT cfTWS_HUD_BAR_WIDTH 132.0
|
|
CONST_FLOAT cfTWS_HUD_BAR_HEIGHT 12.0
|
|
CONST_FLOAT cfTWS_HUD_BOSS_METER_WIDTH 324.0
|
|
CONST_FLOAT cfTWS_HUD_BOSS_METER_HEIGHT 24.0
|
|
CONST_FLOAT cfTWS_HUD_BOSS_BAR_WIDTH 260.0
|
|
CONST_FLOAT cfTWS_HUD_BOSS_BAR_HEIGHT 12.0
|
|
CONST_FLOAT cfTWS_HUD_TIME_WIDTH 64.0
|
|
CONST_FLOAT cfTWS_HUD_TIME_HEIGHT 24.0
|
|
CONST_FLOAT cfTWS_HUD_BIG_NUMBER_WIDTH 28.0
|
|
CONST_FLOAT cfTWS_HUD_BIG_NUMBER_HEIGHT 36.0
|
|
CONST_FLOAT cfTWS_HUD_SMALL_NUMBER_WIDTH 16.0
|
|
CONST_FLOAT cfTWS_HUD_SMALL_NUMBER_HEIGHT 20.0
|
|
CONST_FLOAT cfTWS_HUD_HI_WIDTH 36.0
|
|
CONST_FLOAT cfTWS_HUD_HI_HEIGHT 20.0
|
|
CONST_FLOAT cfTWS_HUD_CREDITS_WIDTH 88.0
|
|
CONST_FLOAT cfTWS_HUD_CREDITS_HEIGHT 24.0
|
|
CONST_FLOAT cfTWS_HUD_MIGHTY_WIDTH 224.0
|
|
CONST_FLOAT cfTWS_HUD_MIGHTY_HEIGHT 48.0
|
|
CONST_FLOAT cfTWS_HUD_START_WIDTH 324.0
|
|
CONST_FLOAT cfTWS_HUD_START_HEIGHT 48.0
|
|
CONST_FLOAT cfTWS_HUD_GAMEOVER_WIDTH 360.0
|
|
CONST_FLOAT cfTWS_HUD_GAMEOVER_HEIGHT 64.0
|
|
CONST_FLOAT cfTWS_HUD_END_WIDTH 328.0
|
|
CONST_FLOAT cfTWS_HUD_END_HEIGHT 48.0
|
|
CONST_FLOAT cfTWS_HUD_GO_ARROW_WIDTH 328.0
|
|
CONST_FLOAT cfTWS_HUD_GO_ARROW_HEIGHT 152.0
|
|
CONST_FLOAT cfTWS_HUD_DIALOGUE_FRAME_WIDTH 396.0
|
|
CONST_FLOAT cfTWS_HUD_DIALOGUE_FRAME_HEIGHT 84.0
|
|
CONST_FLOAT cfTWS_HUD_TITLE_OPTION_WIDTH 228.0
|
|
CONST_FLOAT cfTWS_HUD_TITLE_OPTION_HEIGHT 28.0
|
|
CONST_FLOAT cfTWS_HUD_TITLE_ARROWS_WIDTH 228.0
|
|
CONST_FLOAT cfTWS_HUD_TITLE_ARROWS_HEIGHT 28.0
|
|
CONST_FLOAT cfTWS_HUD_SCORE_WIDTH 32.0
|
|
CONST_FLOAT cfTWS_HUD_SCORE_HEIGHT 44.0
|
|
|
|
CONST_FLOAT cfTWS_HUD_PORTRAIT_X 100.0
|
|
CONST_FLOAT cfTWS_HUD_PORTRAIT_Y 80.0
|
|
CONST_FLOAT cfTWS_HUD_METER_X 335.0
|
|
CONST_FLOAT cfTWS_HUD_METER_Y 76.0
|
|
CONST_FLOAT cfTWS_HUD_SCORE_X 730.0
|
|
CONST_FLOAT cfTWS_HUD_SCORE_Y 107.0
|
|
CONST_FLOAT cfTWS_HUD_HI_SCORE_X 1425.0
|
|
CONST_FLOAT cfTWS_HUD_HI_SCORE_Y 112.0
|
|
CONST_FLOAT cfTWS_HUD_BOSS_METER_X 140.0
|
|
CONST_FLOAT cfTWS_HUD_BOSS_METER_Y 98.0
|
|
CONST_FLOAT cfTWS_HUD_BOSS_HP_X 327.0
|
|
CONST_FLOAT cfTWS_HUD_BOSS_HP_Y 100.0
|
|
CONST_FLOAT cfTWS_HUD_HP_X 305.0
|
|
CONST_FLOAT cfTWS_HUD_HP_Y 76.0
|
|
CONST_FLOAT cfTWS_HUD_MP_X 305.0
|
|
CONST_FLOAT cfTWS_HUD_MP_Y 115.0
|
|
|
|
CONST_FLOAT cfTWS_HUD_SCORE_FINAL_WIDTH 160.0
|
|
CONST_FLOAT cfTWS_HUD_SCORE_FINAL_HEIGHT 40.0
|
|
CONST_FLOAT cfTWS_HUD_HEALTH_SCORE_X 840.0
|
|
CONST_FLOAT cfTWS_HUD_HEALTH_SCORE_Y 515.0
|
|
CONST_FLOAT cfTWS_HUD_HEALTH_SCORE_NUMBER_X 1100.0
|
|
CONST_FLOAT cfTWS_HUD_HEALTH_SCORE_NUMBER_Y 515.0
|
|
CONST_FLOAT cfTWS_HUD_LIVES_SCORE_X 840.0
|
|
CONST_FLOAT cfTWS_HUD_LIVES_SCORE_Y 590.0
|
|
CONST_FLOAT cfTWS_HUD_LIVES_SCORE_NUMBER_X 1100.0
|
|
CONST_FLOAT cfTWS_HUD_LIVES_SCORE_NUMBER_Y 590.0
|
|
CONST_FLOAT cfTWS_HUD_TOTAL_SCORE_X 840.0
|
|
CONST_FLOAT cfTWS_HUD_TOTAL_SCORE_Y 710.0
|
|
CONST_FLOAT cfTWS_HUD_TOTAL_SCORE_NUMBER_X 1100.0
|
|
CONST_FLOAT cfTWS_HUD_TOTAL_SCORE_NUMBER_Y 710.0
|
|
|
|
CONST_FLOAT cfTWS_HUD_TIME_X 0.0
|
|
CONST_FLOAT cfTWS_HUD_TIME_Y 40.0
|
|
CONST_FLOAT cfTWS_HUD_TIME_NUMBER_1_X -20.0
|
|
CONST_FLOAT cfTWS_HUD_TIME_NUMBER_2_X 20.0
|
|
CONST_FLOAT cfTWS_HUD_TIME_NUMBER_1_Y 105.0
|
|
|
|
CONST_FLOAT cfTWS_HUD_LIFES_NUMBER_1_X 490.0
|
|
CONST_FLOAT cfTWS_HUD_LIFES_NUMBER_1_Y 76.0
|
|
CONST_FLOAT cfTWS_HUD_LEVEL_NUMBER_1_X 524.0
|
|
CONST_FLOAT cfTWS_HUD_LEVEL_NUMBER_1_Y 115.0
|
|
|
|
CONST_FLOAT cfTWS_HUD_HI_X -340.0
|
|
CONST_FLOAT cfTWS_HUD_HI_Y 43.0
|
|
|
|
CONST_INT ciTWS_FX_ITEM_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_FX_SWORD_LIGHTNING_ANIM_FRAMES 2
|
|
CONST_INT ciTWS_FX_FIREBALL_ANIM_FRAMES 2
|
|
CONST_INT ciTWS_FX_COINS_ANIM_FRAMES 6
|
|
CONST_INT ciTWS_FX_SUPERATTACK_EXPLOSION_ANIM_FRAMES 5
|
|
CONST_INT ciTWS_FX_HIT_ANIM_FRAMES 3
|
|
CONST_INT ciTWS_FX_HIT_VENOM_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_FX_BOSS_SPIDER_SPIT_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_FX_BOSS_SPIDER_VENOM_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_FX_WIZARD_PILLAR_ANIM_FRAMES 14
|
|
CONST_INT ciTWS_FX_WIZARD_PILLAR_DAMAGE_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_FX_WIZARD_FIRE_ANIM_FRAMES 8
|
|
CONST_INT ciTWS_FX_KNIGHT_SWORD_ANIM_FRAMES 6
|
|
CONST_INT ciTWS_FX_KNIGHT_SWORD_DROP_ANIM_FRAMES 3
|
|
CONST_INT ciTWS_FX_KNIGHT_COD_DROP_ANIM_FRAMES 9
|
|
|
|
CONST_INT ciTWS_ENEMY_EXTRA_LONG_ATTACK_ANIM_FRAMES 16
|
|
CONST_INT ciTWS_ENEMY_LONG_ATTACK_ANIM_FRAMES 10
|
|
CONST_INT ciTWS_ENEMY_ATTACK_ANIM_FRAMES 8
|
|
CONST_INT ciTWS_ENEMY_SHORT_ATTACK_ANIM_FRAMES 5
|
|
CONST_INT ciTWS_ENEMY_WALK_ANIM_FRAMES 8
|
|
CONST_INT ciTWS_ENEMY_FLY_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_ENEMY_GETTINGUP_ANIM_FRAMES 2
|
|
CONST_INT ciTWS_ENEMY_IDLE_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_ENEMY_SNAKE_IDLE_ANIM_FRAMES 5
|
|
CONST_INT ciTWS_BOSS_SPIDER_SPIT_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_BOSS_SPIDER_ATTACK_LOAD_ANIM_FRAMES 5
|
|
CONST_INT ciTWS_BOSS_SPIDER_ATTACK_ANIM_FRAMES 10
|
|
CONST_INT ciTWS_BOSS_SPIDER_DYING_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_ENEMY_LEPRECHAUN_WALK_ANIM_FRAMES 6
|
|
CONST_INT ciTWS_ENEMY_BOULDER_WALK_ANIM_FRAMES 6
|
|
CONST_INT ciTWS_ENEMY_LEPRECHAUN_SPAWN_ANIM_FRAMES 9
|
|
CONST_INT ciTWS_ENEMY_LEPRECHAUN_DYING_ANIM_FRAMES 6
|
|
CONST_INT ciTWS_ENEMY_CASTER_DYING_ANIM_FRAMES 8
|
|
CONST_INT ciTWS_ENEMY_SLIME_JUMPING_ANIM_FRAME 5
|
|
CONST_INT ciTWS_ENEMY_BOSS_KNIGHT_HURT_ANIM_FRAMES 5
|
|
CONST_INT ciTWS_ENEMY_BOSS_KNIGHT_SLAM_ANIM_FRAMES 12
|
|
CONST_INT ciTWS_TRAP_SPEAR_ANIM_FRAMES 4
|
|
|
|
CONST_INT ciTWS_WALK_ANIM_FRAMES 10
|
|
CONST_INT ciTWS_GRUNT_WALK_ANIM_FRAMES 8
|
|
CONST_INT ciTWS_IDLE_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_JUMP_ANIM_FRAMES 6
|
|
CONST_INT ciTWS_FALL_HOLE_ANIM_FRAMES 3
|
|
CONST_INT ciTWS_JUMP_KICK_ANIM_FRAMES 3
|
|
CONST_INT ciTWS_JUMP_KICK_EXTENDED_ANIM_FRAMES 5
|
|
CONST_INT ciTWS_JUMP_END_ANIM_FRAMES 2
|
|
CONST_INT ciTWS_GETTING_UP_ANIM_FRAMES 3
|
|
CONST_INT ciTWS_GETTING_UP_EXTENDED_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_ATTACK_SIMPLE_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_FINAL_ATTACK_ANIM_FRAMES 9
|
|
CONST_INT ciTWS_ATTACK_ANIM_FRAMES 12
|
|
CONST_INT ciTWS_ATTACK_EXTENDED_ANIM_FRAMES 16
|
|
CONST_INT ciTWS_DOUBLE_ATTACK_START_FRAME 8
|
|
CONST_INT ciTWS_DOUBLE_ATTACK_EXTENDED_FRAME 10
|
|
CONST_INT ciTWS_DASH_ANIM_FRAMES 5
|
|
CONST_INT ciTWS_DASH_START_ANIM_FRAME 2
|
|
CONST_INT ciTWS_EVOLVING_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_EVOLVING_CHEST_ANIM_FRAMES 9
|
|
CONST_INT ciTWS_DIALOGUE_FRAME_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_WIZARD_TELEPORT_ANIM_FRAMES 6
|
|
CONST_INT ciTWS_WIZARD_DYING_ANIM_FRAMES 4
|
|
CONST_INT ciTWS_WIZARD_DEATH_FLASH_ANIM_FRAMES 14
|
|
CONST_INT ciTWS_WIZARD_DEATH_ANIM_FRAMES 17
|
|
CONST_INT ciTWS_SLIME_DEATH_ANIM_FRAMES 5
|
|
CONST_INT ciTWS_KNIGHT_STAND_ANIM_FRAMES 10
|
|
|
|
CONST_INT ciTWS_MAX_ENEMIES 58
|
|
CONST_INT ciTWS_MAX_NPCS 1
|
|
CONST_INT ciTWS_MAX_ITEMS 20
|
|
CONST_INT ciTWS_MAX_BACKGROUND_TILES 18
|
|
CONST_INT ciTWS_MAX_FOREGROUND_TILES 20
|
|
CONST_INT ciTWS_MAX_TRAPS 22
|
|
CONST_INT ciTWS_MAX_FX 38
|
|
CONST_INT ciTWS_MAX_HUD_ELEMENTS 5
|
|
CONST_INT ciTWS_MAX_LOCKED_BATTLES 3
|
|
CONST_INT ciTWS_MAX_DRAW_CALLS ciTWS_MAX_ENEMIES + ciTWS_MAX_NPCS + ciTWS_MAX_ITEMS + ciTWS_MAX_TRAPS + ciTWS_MAX_FX
|
|
CONST_INT ciTWS_MAX_SOUNDS 10
|
|
|
|
CONST_INT ciTWS_ROTATE_PLAYER_DELAY 150
|
|
CONST_INT ciTWS_ENEMIES_STUN_TIME 400
|
|
CONST_INT ciTWS_INVINCIBLE_AFTER_HIT_TIME 1000
|
|
CONST_INT ciTWS_MAGIC_COLUMN_INTRO_TIME 200
|
|
CONST_INT ciTWS_BOSS_ATTACK_TIME 3000
|
|
CONST_INT ciTWS_BATTLE_ENEMY_SPAWN_TIME 2000
|
|
CONST_INT ciTWS_BATTLE_SECURITY_TIME_LIMIT 10000
|
|
CONST_INT ciTWS_HOLD_TO_QUIT_TIME 1000
|
|
|
|
CONST_FLOAT cfTWS_ENEMY_HIT_OFFSET 3.0
|
|
CONST_FLOAT cfTWS_BACKGROUND_TILE_WIDTH 1300.0
|
|
CONST_FLOAT cfTWS_BACKGROUND_TILE_HEIGHT 960.0
|
|
CONST_FLOAT cfTWS_BACKGROUND_BOSS_TILE_WIDTH 1488.0
|
|
CONST_FLOAT cfTWS_ANIMATED_BACKGROUND_TILE_WIDTH 102.0
|
|
CONST_FLOAT cfTWS_MENU_BACKGROUND_TILE_WIDTH 2912.0
|
|
CONST_FLOAT cfIAP_CONTROLLER_AXIS_THRESHOLD_MOD 1.0
|
|
|
|
CONST_INT ciTWS_ANIMATED_BACKGROUND_TILES 14
|
|
CONST_INT ciTWS_ANIMATED_BACKGROUND_FRAMES 16
|
|
CONST_INT ciTWS_MENU_OPTIONS_BEGIN_FRAME 0
|
|
CONST_INT ciTWS_MENU_OPTIONS_LEADERBOARD_FRAME 5
|
|
CONST_INT ciTWS_MENU_OPTIONS_GROG_FRAME 10
|
|
CONST_INT ciTWS_TITLE_ANIM_STRIKE_FRAMES 4
|
|
CONST_INT ciTWS_TITLE_ANIM_FINAL_FRAMES 8
|
|
CONST_INT ciTWS_TITLE_ANIM_PAUSE_FRAMES 20
|
|
CONST_INT ciTWS_CUTSCENE_SHOT_TIME 2000
|
|
CONST_INT ciTWS_INTRO_CUTSCENE_SHOTS 7
|
|
CONST_INT ciTWS_OUTRO_CUTSCENE_SHOTS 4
|
|
|
|
CONST_INT ciTWS_GRAVITY -5000
|
|
CONST_INT ciTWS_JUMP_ACCELERATION 1550
|
|
|
|
CONST_FLOAT cfTWS_VERTICAL_MOVEMENT_PLAYER 250.0
|
|
CONST_FLOAT cfTWS_HORIZONTAL_MOVEMENT_PLAYER 500.0
|
|
|
|
CONST_FLOAT cfTWS_VERTICAL_MOVEMENT_ENEMY 250.0
|
|
CONST_FLOAT cfTWS_HORIZONTAL_MOVEMENT_ENEMY 500.0
|
|
|
|
CONST_FLOAT cfTWS_VERTICAL_MOVEMENT_STALACTITES 750.0
|
|
|
|
ENUM TWS_ARCADE_CLIENT_STATE
|
|
|
|
TWS_ARCADE_CLIENT_STATE_INIT = 0,
|
|
TWS_ARCADE_CLIENT_STATE_REQUESTING_ASSETS,
|
|
TWS_ARCADE_CLIENT_STATE_FIB_WARNING,
|
|
TWS_ARCADE_CLIENT_STATE_PIXTRO_LOGO,
|
|
TWS_ARCADE_CLIENT_STATE_INIT_MENU,
|
|
TWS_ARCADE_CLIENT_STATE_TITLE_ANIM,
|
|
TWS_ARCADE_CLIENT_STATE_TITLE_SCREEN,
|
|
TWS_ARCADE_CLIENT_STATE_MAP_SCREEN,
|
|
TWS_ARCADE_CLIENT_STATE_INIT_LEVEL,
|
|
TWS_ARCADE_CLIENT_STATE_INTRO_CUTSCENE,
|
|
TWS_ARCADE_CLIENT_STATE_PLAYING,
|
|
TWS_ARCADE_CLIENT_STATE_OUTRO_CUTSCENE,
|
|
TWS_ARCADE_CLIENT_STATE_LEADERBOARD,
|
|
TWS_ARCADE_CLIENT_STATE_CLEANUP
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_LEVEL_STAGE
|
|
|
|
TWS_LEVEL_DEAD = -1,
|
|
TWS_LEVEL_PLAYING = 0,
|
|
TWS_LEVEL_DIALOGUE_PRE_FIGHT,
|
|
TWS_LEVEL_BOSS_FIGHT,
|
|
TWS_LEVEL_LEADERBOARD,
|
|
TWS_LEVEL_FINAL_DIALOGUE,
|
|
TWS_LEVEL_DIALOGUE_POST_FIGHT,
|
|
TWS_LEVEL_FADING,
|
|
TWS_LEVEL_COMPLETE
|
|
ENDENUM
|
|
|
|
ENUM TWS_GROG_ENCOUNTER
|
|
|
|
TWS_LOCK_SCREEN = 0,
|
|
TWS_GROG_DESCENDS,
|
|
TWS_THOG_DIALOGUE_1,
|
|
TWS_GROG_LEAVES,
|
|
TWS_BOSS_APPEARS,
|
|
TWS_THOG_DIALOGUE_3,
|
|
TWS_FIGHT_START
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_TITLE_ANIM
|
|
|
|
TWS_TITLE_ANIM_STRIKE_1 = 0,
|
|
TWS_TITLE_ANIM_STRIKE_1_PAUSE,
|
|
TWS_TITLE_ANIM_STRIKE_2,
|
|
TWS_TITLE_ANIM_STRIKE_2_PAUSE,
|
|
TWS_TITLE_ANIM_FINAL_STRIKE
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_PIXTRO_LOGO_STATE
|
|
|
|
TWS_PIXTRO_START = 0,
|
|
TWS_PIXTRO_PLAYING,
|
|
TWS_PIXTRO_FINISHED
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_FIB_WARNING_STATE
|
|
|
|
TWS_FIB_FADEIN = 0,
|
|
TWS_FIB_DISPLAY,
|
|
TWS_FIB_FADEOUT
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_TITLE_STAGE
|
|
|
|
TWS_TITLE_PRESS_START = 0,
|
|
TWS_TITLE_SELECT_OPTION,
|
|
TWS_TITLE_OPTION_BLINKING,
|
|
TWS_TITLE_FADE
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_CUTSCENE_STAGE
|
|
|
|
TWS_CUTSCENE_PAUSE = -1,
|
|
TWS_CUTSCENE_FADE_IN = 0,
|
|
TWS_CUTSCENE_PLAYING,
|
|
TWS_CUTSCENE_FADE_OUT
|
|
|
|
ENDENUM
|
|
ENUM TWS_MENU_OPTION
|
|
|
|
TWS_MENU_BEGIN_ADVENTURE = 0,
|
|
TWS_MENU_LEADERBOARD,
|
|
TWS_MENU_GROG_MODE,
|
|
TWS_MAX_MENU_OPTIONS
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_CHALLENGE_BIT
|
|
TWS_CHALLENGE_BIT_NONE = 0,
|
|
TWS_CHALLENGE_BIT_FEELIN_GROGGY = 1,
|
|
TWS_CHALLENGE_BIT_PLATINUM_SWORD_BRONZE = 2,
|
|
TWS_CHALLENGE_BIT_PLATINUM_SWORD_SILVER = 3,
|
|
TWS_CHALLENGE_BIT_PLATINUM_SWORD_GOLD = 4,
|
|
TWS_CHALLENGE_BIT_PLATINUM_SWORD_PLATINUM = 5,
|
|
TWS_CHALLENGE_BIT_COIN_PURSE_BRONZE = 6,
|
|
TWS_CHALLENGE_BIT_COIN_PURSE_SILVER = 7,
|
|
TWS_CHALLENGE_BIT_COIN_PURSE_GOLD = 8,
|
|
TWS_CHALLENGE_BIT_COIN_PURSE_PLATINUM = 9
|
|
ENDENUM
|
|
|
|
ENUM TWS_PLAYER_STATE
|
|
|
|
TWS_INTRO = 0,
|
|
TWS_IDLE,
|
|
TWS_WALK,
|
|
TWS_ATTACK,
|
|
TWS_ATTACK_DOUBLE,
|
|
TWS_ATTACK_LOW,
|
|
TWS_CHARGE,
|
|
|
|
TWS_SUPERATTACK,
|
|
TWS_JUMP_START,
|
|
TWS_JUMP_ASCEND,
|
|
TWS_JUMP_CREST,
|
|
TWS_JUMP_DESCEND,
|
|
|
|
TWS_JUMP_END,
|
|
TWS_JUMP_ATTACK,
|
|
TWS_JUMP_ATTACK_DESCEND,
|
|
TWS_FALL,
|
|
TWS_FALL_HIGH,
|
|
TWS_FALL_2,
|
|
|
|
TWS_FALL_INFINITE,
|
|
TWS_FALL_HOLE_1,
|
|
TWS_FALL_HOLE_2,
|
|
TWS_STUN,
|
|
TWS_FLAT,
|
|
TWS_GETTING_UP,
|
|
|
|
TWS_EVOLVING,
|
|
TWS_EVOLVING_2,
|
|
TWS_EVOLVING_3,
|
|
TWS_EVOLVING_4,
|
|
TWS_EVOLVING_5,
|
|
TWS_EVOLVING_6,
|
|
|
|
TWS_DEAD
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_ENEMY_STATE
|
|
|
|
TWS_ENEMY_IDLE = 0,
|
|
TWS_ENEMY_WALK,
|
|
TWS_ENEMY_ATTACK,
|
|
TWS_ENEMY_ATTACK_LOAD,
|
|
TWS_ENEMY_ATTACK_WAIT,
|
|
TWS_ENEMY_ATTACK_HIT,
|
|
TWS_ENEMY_SPECIAL_ATTACK,
|
|
TWS_ENEMY_SPECIAL_ATTACK_2,
|
|
TWS_ENEMY_SPECIAL_ATTACK_3,
|
|
|
|
TWS_ENEMY_FALL,
|
|
TWS_ENEMY_FLAT,
|
|
TWS_ENEMY_GETTING_UP,
|
|
TWS_ENEMY_STUN,
|
|
TWS_ENEMY_GLIDE_DOWN,
|
|
TWS_ENEMY_LANDING,
|
|
TWS_ENEMY_GO_UP,
|
|
TWS_ENEMY_FALL_OVER_1,
|
|
TWS_ENEMY_FALL_OVER_2,
|
|
TWS_ENEMY_SPIT_1,
|
|
TWS_ENEMY_SPIT_2,
|
|
TWS_ENEMY_SPIT_3,
|
|
|
|
TWS_ENEMY_TELEPORT_IN,
|
|
TWS_ENEMY_TELEPORTING,
|
|
TWS_ENEMY_TELEPORT_OUT,
|
|
|
|
TWS_ENEMY_EXPLODING,
|
|
TWS_ENEMY_DYING,
|
|
TWS_ENEMY_DYING_1,
|
|
TWS_ENEMY_DYING_2,
|
|
TWS_ENEMY_DYING_3,
|
|
TWS_ENEMY_DYING_4,
|
|
TWS_ENEMY_DYING_5,
|
|
TWS_ENEMY_DYING_6,
|
|
TWS_ENEMY_DYING_7,
|
|
TWS_ENEMY_DYING_8,
|
|
TWS_ENEMY_DEAD,
|
|
TWS_ENEMY_INACTIVE,
|
|
TWS_ENEMY_INVISIBLE
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_NPC_TYPE
|
|
TWS_NPC_WOMAN = 0,
|
|
TWS_NPC_TWINS,
|
|
TWS_NPC_VILLAGER
|
|
|
|
ENDENUM
|
|
ENUM TWS_ENEMY_TYPE
|
|
|
|
TWS_ENEMY_BRUTE = 0,
|
|
TWS_ENEMY_GRUNT,
|
|
TWS_ENEMY_BAT,
|
|
TWS_ENEMY_SPIDER,
|
|
TWS_ENEMY_SLIME,
|
|
TWS_ENEMY_SNAKE,
|
|
TWS_ENEMY_GRUNT_SWORD,
|
|
TWS_ENEMY_GRUNT_SPEAR,
|
|
TWS_ENEMY_GRUNT_FIRESWORD,
|
|
TWS_ENEMY_GRUNT_FIRESPEAR,
|
|
TWS_ENEMY_GRUNT_CROSSBOW,
|
|
TWS_ENEMY_GRUNT_CASTER,
|
|
TWS_ENEMY_FAIRY,
|
|
TWS_ENEMY_BRUTE_AXE,
|
|
TWS_ENEMY_LEPRECHAUN,
|
|
TWS_ENEMY_BOULDER,
|
|
TWS_ENEMY_KNIGHT,
|
|
|
|
TWS_ENEMY_BOSS_SPIDER,
|
|
TWS_ENEMY_BOSS_AMAZON,
|
|
TWS_ENEMY_BOSS_KNIGHT,
|
|
|
|
TWS_ENEMY_FAKE_WIZARD,
|
|
TWS_ENEMY_DIALOGUE_WIZARD,
|
|
TWS_ENEMY_BOSS_WIZARD
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_ITEM_TYPE
|
|
|
|
TWS_ITEM_GOLD_1 = 0,
|
|
TWS_ITEM_GOLD_2,
|
|
TWS_ITEM_GOLD_3,
|
|
TWS_ITEM_GOLD_4,
|
|
TWS_ITEM_HP_SMA,
|
|
TWS_ITEM_HP_MED,
|
|
TWS_ITEM_MP_SMA,
|
|
TWS_ITEM_MP_MED,
|
|
TWS_ITEM_HP_LAR,
|
|
TWS_ITEM_MP_LAR,
|
|
TWS_ITEM_1UP,
|
|
TWS_ITEM_NONE
|
|
|
|
ENDENUM
|
|
ENUM TWS_FX_TYPE
|
|
|
|
TWS_FX_SWORD_LIGHTNING = 0,
|
|
TWS_FX_SUPERATTACK_EXPLOSION,
|
|
TWS_FX_SMALL_HIT,
|
|
TWS_FX_LARGE_HIT,
|
|
TWS_FX_VENOM_HIT,
|
|
TWS_FX_BLOOD_HIT,
|
|
TWS_FX_CLOTHES,
|
|
TWS_FX_BOSS_SPIDER_SPIT,
|
|
TWS_FX_VENOM_PUDDLE,
|
|
TWS_FX_MAGIC_COLUMN,
|
|
TWS_FX_MAGIC_FIRE,
|
|
TWS_FX_ARROW_LEFT,
|
|
TWS_FX_ARROW_RIGHT,
|
|
TWS_FX_FIREBALL_LEFT,
|
|
TWS_FX_FIREBALL_RIGHT,
|
|
TWS_FX_COINS_LEFT,
|
|
TWS_FX_COINS_RIGHT,
|
|
TWS_FX_SWORD,
|
|
TWS_FX_SWORD_DROP,
|
|
TWS_FX_COD_DROP,
|
|
TWS_FX_PICKUP,
|
|
TWS_FX_HELP,
|
|
TWS_FX_TRAP_SPEAR,
|
|
TWS_FX_GROG_BUBBLE
|
|
|
|
ENDENUM
|
|
ENUM TWS_HUD_TYPE
|
|
|
|
TWS_HUD_START = 0,
|
|
TWS_HUD_GO_ARROW = 1,
|
|
TWS_HUD_DIALOGUE_FRAME = 2,
|
|
TWS_HUD_GAMEOVER = 3,
|
|
TWS_HUD_END = 4
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_BACKGROUND_TILE_TYPE
|
|
|
|
TWS_FBG_TL_FOREST_1 = 0,
|
|
TWS_FBG_TL_FOREST_2,
|
|
TWS_FBG_TL_SWAMP,
|
|
TWS_FBG_TL_CAVES,
|
|
|
|
TWS_BG_TL_1_INTRO,
|
|
TWS_BG_TL_1_BASE,
|
|
TWS_BG_TL_1_CAVE,
|
|
TWS_BG_TL_1_CLIFF,
|
|
TWS_BG_TL_1_SPIDER,
|
|
TWS_BG_TL_1_BOSS,
|
|
TWS_BG_TL_1_GEN_1,
|
|
TWS_BG_TL_1_GEN_2,
|
|
|
|
TWS_BG_TL_2_INTRO,
|
|
TWS_BG_TL_2_BIG_TREE,
|
|
TWS_BG_TL_2_TREES,
|
|
TWS_BG_TL_2_DEAD_BODIES,
|
|
TWS_BG_TL_2_BOSS,
|
|
TWS_BG_TL_2_GEN_1,
|
|
TWS_BG_TL_2_GEN_2,
|
|
TWS_BG_TL_2_GEN_3,
|
|
|
|
TWS_BG_TL_3_INTRO,
|
|
TWS_BG_TL_3_WINDOWS_OPEN,
|
|
TWS_BG_TL_3_STATUES,
|
|
TWS_BG_TL_3_BIG_WINDOW,
|
|
TWS_BG_TL_3_DOOR_STAIRS,
|
|
TWS_BG_TL_3_OUTRO,
|
|
TWS_BG_TL_3_GEN_1,
|
|
TWS_BG_TL_3_GEN_2,
|
|
TWS_BG_TL_3_FINAL,
|
|
|
|
TWS_BG_TL_4_INTRO_NPC,
|
|
TWS_BG_TL_4_INTRO,
|
|
TWS_BG_TL_4_BIG_TREE,
|
|
TWS_BG_TL_4_BIG_MUSHROOM,
|
|
TWS_BG_TL_4_OPEN_BACK,
|
|
TWS_BG_TL_4_TREES,
|
|
TWS_BG_TL_4_BOSS,
|
|
TWS_BG_TL_4_GEN_1,
|
|
TWS_BG_TL_4_GEN_2,
|
|
TWS_BG_TL_4_GEN_3
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_FOREGROUND_TILE_TYPE
|
|
TWS_FG_TL_1_INTRO = 0,
|
|
TWS_FG_TL_1_COL1,
|
|
TWS_FG_TL_1_COL2,
|
|
TWS_FG_TL_1_STALAGMITE1,
|
|
TWS_FG_TL_1_STALAGMITE2,
|
|
TWS_FG_TL_1_STALAGMITE3,
|
|
TWS_FG_TL_1_BOSS,
|
|
|
|
TWS_FG_TL_2_GRASS,
|
|
TWS_FG_TL_2_PIKE,
|
|
TWS_FG_TL_2_ROOT,
|
|
TWS_FG_TL_2_VINES_1,
|
|
TWS_FG_TL_2_VINES_2,
|
|
TWS_FG_TL_2_VINES_3,
|
|
|
|
TWS_FG_TL_3_INTRO,
|
|
TWS_FG_TL_3_GARGOYLE_1,
|
|
TWS_FG_TL_3_GARGOYLE_2,
|
|
TWS_FG_TL_3_COLUMN,
|
|
TWS_FG_TL_3_CANDLES_1,
|
|
TWS_FG_TL_3_CANDLES_2,
|
|
|
|
TWS_FG_TL_4_BLUE_FLOWERS,
|
|
TWS_FG_TL_4_YELLOW_FLOWERS,
|
|
TWS_FG_TL_4_MUSHROOMS,
|
|
TWS_FG_TL_4_SHORT_GRASS,
|
|
TWS_FG_TL_4_TALL_GRASS
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_SCENERY_ELEMENT_TYPE
|
|
TWS_SC_NONE = 0,
|
|
TWS_SC_BRIDGE
|
|
ENDENUM
|
|
|
|
ENUM TWS_TRAP_TYPE
|
|
TWS_TRAP_FALL = 0,
|
|
TWS_TRAP_STALAGTITE,
|
|
TWS_TRAP_HOLE
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_LEVEL
|
|
|
|
TWS_FOREST_INTRO = 0,
|
|
TWS_FOREST = 1,
|
|
TWS_SWAMP = 2,
|
|
TWS_CAVES = 3,
|
|
TWS_CASTLE = 4,
|
|
TWS_CASTLE_OUTRO = 5,
|
|
TWS_MAX_LEVELS = 6
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_ENTITY_TYPE
|
|
|
|
TWS_ENTITY_DEFAULT = 0,
|
|
TWS_ENTITY_ENEMY,
|
|
TWS_ENTITY_FX,
|
|
TWS_ENTITY_ITEM,
|
|
TWS_ENTITY_NPC,
|
|
TWS_ENTITY_TRAP,
|
|
TWS_ENTITY_PLAYER
|
|
|
|
ENDENUM
|
|
|
|
ENUM TWS_TEXT_HELP
|
|
|
|
TWS_TH_MOVE = 0,
|
|
TWS_TH_ATTACK,
|
|
TWS_TH_JUMP,
|
|
TWS_TH_DASH,
|
|
TWS_TH_JUMP_ATTACK,
|
|
TWS_TH_MAGIC,
|
|
TWS_TH_EVOLUTION,
|
|
TWS_TH_MAX
|
|
|
|
ENDENUM
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
FUNC STRING TWS_DEBUG_GET_TWS_ARCADE_CLIENT_STATE_AS_STRING(TWS_ARCADE_CLIENT_STATE eValue)
|
|
|
|
SWITCH eValue
|
|
CASE TWS_ARCADE_CLIENT_STATE_INIT RETURN "TWS_ARCADE_CLIENT_STATE_INIT"
|
|
CASE TWS_ARCADE_CLIENT_STATE_REQUESTING_ASSETS RETURN "TWS_ARCADE_CLIENT_STATE_REQUESTING_ASSETS"
|
|
CASE TWS_ARCADE_CLIENT_STATE_FIB_WARNING RETURN "TWS_ARCADE_CLIENT_STATE_FIB_WARNING"
|
|
CASE TWS_ARCADE_CLIENT_STATE_PIXTRO_LOGO RETURN "TWS_ARCADE_CLIENT_STATE_PIXTRO_LOGO"
|
|
CASE TWS_ARCADE_CLIENT_STATE_MAP_SCREEN RETURN "TWS_ARCADE_CLIENT_STATE_MAP_SCREEN"
|
|
CASE TWS_ARCADE_CLIENT_STATE_TITLE_ANIM RETURN "TWS_ARCADE_CLIENT_STATE_TITLE_ANIM"
|
|
CASE TWS_ARCADE_CLIENT_STATE_TITLE_SCREEN RETURN "TWS_ARCADE_CLIENT_STATE_TITLE_SCREEN"
|
|
CASE TWS_ARCADE_CLIENT_STATE_INIT_LEVEL RETURN "TWS_ARCADE_CLIENT_STATE_INIT_LEVEL"
|
|
CASE TWS_ARCADE_CLIENT_STATE_PLAYING RETURN "TWS_ARCADE_CLIENT_STATE_PLAYING"
|
|
CASE TWS_ARCADE_CLIENT_STATE_CLEANUP RETURN "TWS_ARCADE_CLIENT_STATE_CLEANUP"
|
|
ENDSWITCH
|
|
|
|
RETURN "INVALID TWS_ARCADE_CLIENT_STATE"
|
|
|
|
ENDFUNC
|
|
|
|
#ENDIF
|
|
|
|
STRUCT TWS_DRAW_CALL
|
|
|
|
INT iIndex
|
|
TWS_ENTITY_TYPE eType
|
|
|
|
FLOAT fZIndex
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT TWS_CUTSCENE_DATA
|
|
|
|
BOOL bShouldCutscenePlay = FALSE
|
|
|
|
INT iSpriteCutsceneAnimFrame
|
|
INT iMaxCutsceneFrame = 0
|
|
|
|
TEXT_LABEL_23 sCutsceneName
|
|
|
|
TWS_TITLE_ANIM eTitleCutsceneStage = TWS_TITLE_ANIM_STRIKE_1
|
|
TWS_CUTSCENE_STAGE eGameplayCutsceneStage = TWS_CUTSCENE_PAUSE
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT TWS_LOCKED_BATTLE
|
|
|
|
BOOL bActive = FALSE
|
|
BOOL bSpawnEnemies = TRUE
|
|
|
|
INT iTile = -1
|
|
INT iEnemies = 0
|
|
INT iEnemySize = 0
|
|
|
|
INT iSpawnTime = ciTWS_BATTLE_ENEMY_SPAWN_TIME
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT TWS_ARCADE_DATA
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
WIDGET_GROUP_ID widgetGroup
|
|
BOOL bDebugCreatedWidgets
|
|
BOOL bInfiniteMagic
|
|
|
|
INT iReloadLevel = 0
|
|
BOOL bShouldReloadLevel = FALSE
|
|
|
|
BOOL bChallengeCompleted[4]
|
|
|
|
#ENDIF
|
|
|
|
BOOL bFadingOut = FALSE
|
|
|
|
BOOL bDisplayingDialogue = FALSE
|
|
|
|
BOOL bIsHardCoreMode = FALSE
|
|
BOOL bNormalModeIsCompleted = FALSE
|
|
|
|
BOOL bMenuOptionMovingToRight = FALSE
|
|
BOOL bHUDIsHidden = FALSE
|
|
|
|
BOOL bLockedScreen = FALSE
|
|
BOOL bExitingLockedScreen = FALSE
|
|
|
|
BOOL bShowedTextHelp[TWS_TH_MAX]
|
|
|
|
INT iCurrentDialogue = -1
|
|
INT iLastDialogue = -1
|
|
|
|
INT iAnimatedBackgroundSpriteAnim = 0
|
|
INT iMenuOptionSpriteAnim = 0
|
|
INT iGlobalDefaultUpdateFrames
|
|
INT iGlobalDefaultFrameTimeCounter
|
|
|
|
INT iBossEnemyIndex = 0
|
|
|
|
INT iCurrentLockedBattle
|
|
INT iNumberOfEnemiesSpawnedInBattle = 0
|
|
INT iNumberOfEnemiesKilledInBattle = 0
|
|
INT iBattleTimer
|
|
|
|
INT iGameTimer
|
|
INT iHelpTextTimer
|
|
INT iQuitTime = -HIGHEST_INT
|
|
|
|
INT iLivesPoints
|
|
INT iHealthPoints
|
|
|
|
INT iChallengesBitsetForTelemetry
|
|
|
|
FLOAT fMenuBackgroundPosX[2]
|
|
FLOAT fLockedScreenPos
|
|
BINK_MOVIE_ID bmIDPixtroIntro
|
|
|
|
TWS_LEVEL eCurrentLevel = TWS_FOREST_INTRO
|
|
|
|
TWS_GROG_ENCOUNTER eGrogEncounterState = TWS_GROG_DESCENDS
|
|
TWS_FIB_WARNING_STATE eFIBState = TWS_FIB_FADEIN
|
|
TWS_PIXTRO_LOGO_STATE ePixtroState = TWS_PIXTRO_START
|
|
TWS_TITLE_STAGE eTitleStage = TWS_TITLE_PRESS_START
|
|
TWS_LEVEL_STAGE eLevelStage = TWS_LEVEL_PLAYING
|
|
|
|
TWS_LOCKED_BATTLE sLockedBattles[ciTWS_MAX_LOCKED_BATTLES]
|
|
|
|
TWS_MENU_OPTION eCurrentMenuOption = TWS_MENU_BEGIN_ADVENTURE
|
|
TWS_CUTSCENE_DATA sCutsceneData
|
|
TWS_DRAW_CALL sDrawCalls[ciTWS_MAX_DRAW_CALLS]
|
|
ARCADE_GAMES_SOUND eSound[ciTWS_MAX_SOUNDS]
|
|
|
|
TWS_ARCADE_CLIENT_STATE eClientState
|
|
|
|
RGBA_COLOUR_STRUCT rgbaBlack
|
|
RGBA_COLOUR_STRUCT rgbaFade
|
|
RGBA_COLOUR_STRUCT rgbaSprite
|
|
RGBA_COLOUR_STRUCT rgbaBlackTransparent
|
|
|
|
STRUCT_ARCADE_CABINET sTelemetry
|
|
TWS_CHALLENGE_BIT eChallengeFlags
|
|
|
|
ARCADE_CABINET_ANIM_EVENT_STRUCT sWizardAnimEvent
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT TWS_FX_DATA
|
|
|
|
BOOL bActive = FALSE
|
|
|
|
INT iSpriteBlastAnimFrame
|
|
INT iSlowFrameTimeCounter
|
|
INT iSlowUpdateFrames
|
|
INT iTimer = 0
|
|
FLOAT fZIndex = 0.0
|
|
|
|
TWS_FX_TYPE eType = TWS_FX_SWORD_LIGHTNING
|
|
|
|
VECTOR_2D vSpritePos
|
|
VECTOR_2D vSpriteSize
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT TWS_HUD_DATA
|
|
|
|
BOOL bActive = FALSE
|
|
BOOL bRendering = FALSE
|
|
BOOL bPlayedSoundAttacked = FALSE
|
|
|
|
INT iSpriteBlastAnimFrame
|
|
INT iSlowFrameTimeCounter
|
|
INT iSlowUpdateFrames
|
|
TWS_HUD_TYPE eType = TWS_HUD_START
|
|
|
|
VECTOR_2D vSpritePos
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT TWS_PLAYER_DATA
|
|
|
|
BOOL bIsMoving
|
|
BOOL bIsAttacking
|
|
BOOL bAttackIsDouble
|
|
BOOL bAttackIsLow
|
|
BOOL bIsCharging
|
|
BOOL bIsUsingMagic
|
|
BOOL bIsJumping
|
|
BOOL bIsHit
|
|
BOOL bIsFalling
|
|
BOOL bIsCameraShakeActive
|
|
BOOL bIsInvincible
|
|
BOOL bIsEvolving
|
|
BOOL bFacingLeft
|
|
BOOL bIsMovingToCenter
|
|
BOOL bIsMovingOutOfScreen
|
|
BOOL bIsMovingLeft
|
|
|
|
INT iDefaultFrameTimeCounter
|
|
INT iDefaultUpdateFrames
|
|
|
|
INT iSlowFrameTimeCounter
|
|
INT iSlowUpdateFrames
|
|
|
|
INT iSpriteAnimFrame = 0
|
|
INT iStunTime = 0
|
|
INT iLastCharge = 0
|
|
|
|
INT iTimeSinceLastAttack = 0
|
|
INT iSuperAttackStage = 0
|
|
|
|
INT iLevel = 1
|
|
INT iLifes = 3
|
|
INT iScore = 0
|
|
INT iHighestScore = 0
|
|
INT iTreasures = 0
|
|
|
|
FLOAT fJumpAcceleration = 0.0
|
|
FLOAT fHealth = 1.0
|
|
FLOAT fMagic = 0.0
|
|
FLOAT fShadowXOffset = 0.0
|
|
|
|
TWS_PLAYER_STATE ePlayerState = TWS_INTRO
|
|
|
|
VECTOR_2D vSpritePos
|
|
VECTOR_2D vSpriteOffset
|
|
VECTOR_2D vSpriteSize
|
|
VECTOR_2D vInitialJumpPos
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT TWS_ENEMY_DATA
|
|
|
|
BOOL bIsActive
|
|
BOOL bIsMoving
|
|
BOOL bIsAttacking
|
|
BOOL bIsHit
|
|
BOOL bIsFalling
|
|
BOOL bIsBattleEnemy
|
|
|
|
INT iDefaultFrameTimeCounter
|
|
INT iDefaultUpdateFrames
|
|
|
|
INT iSlowFrameTimeCounter
|
|
INT iSlowUpdateFrames
|
|
|
|
INT iSpriteAnimFrame = 0
|
|
INT iAttackFrame = 0
|
|
INT iTimer = 0
|
|
INT iEnemySize = 1
|
|
INT iNumberOfAttacksInARow = 0
|
|
|
|
FLOAT fHealth = 1.0
|
|
FLOAT fProgressToTarget = 0.0
|
|
|
|
TWS_ENEMY_TYPE eEnemyType = TWS_ENEMY_BRUTE
|
|
TWS_ENEMY_STATE eEnemyState = TWS_IDLE
|
|
TWS_ENEMY_STATE eNextState = TWS_IDLE
|
|
|
|
VECTOR_2D vTargetPos
|
|
VECTOR_2D vInitialPos
|
|
VECTOR_2D vSpritePos
|
|
VECTOR_2D vSpriteSize
|
|
VECTOR_2D vSpriteOffset
|
|
VECTOR_2D vShadowOffset
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT TWS_NPC_DATA
|
|
|
|
BOOL bIsActive
|
|
|
|
INT iNPCSize = 1
|
|
|
|
FLOAT fHealth = 1.0
|
|
|
|
TWS_NPC_TYPE eNPCType = TWS_NPC_VILLAGER
|
|
|
|
VECTOR_2D vSpritePos
|
|
VECTOR_2D vSpriteSize
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT TWS_ITEM_DATA
|
|
|
|
BOOL bIsHit
|
|
BOOL bIsActive
|
|
BOOL bFalling
|
|
|
|
INT iDefaultFrameTimeCounter
|
|
INT iDefaultUpdateFrames
|
|
|
|
INT iSlowFrameTimeCounter
|
|
INT iSlowUpdateFrames
|
|
|
|
INT iSpriteAnimFrame = 0
|
|
|
|
TWS_ITEM_TYPE eItemType
|
|
|
|
VECTOR_2D vSpritePos
|
|
VECTOR_2D vSpriteFallPos
|
|
VECTOR_2D vSpriteSize
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT TWS_BACKGROUND_TILE
|
|
|
|
FLOAT fSpritePos
|
|
FLOAT fSpriteWidth
|
|
|
|
TWS_BACKGROUND_TILE_TYPE eType
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT TWS_FOREGROUND_TILE
|
|
|
|
TWS_FOREGROUND_TILE_TYPE eType
|
|
|
|
VECTOR_2D vSpritePos
|
|
VECTOR_2D vSpriteSize
|
|
|
|
ENDSTRUCT
|
|
|
|
STRUCT TWS_TRAP
|
|
|
|
BOOL bIsActive = FALSE
|
|
BOOL bIsWorking = TRUE
|
|
|
|
TWS_TRAP_TYPE eType
|
|
|
|
VECTOR_2D vSpritePos
|
|
VECTOR_2D vSpritePos2
|
|
VECTOR_2D vSpriteSize
|
|
|
|
ENDSTRUCT
|
|
|
|
TWS_ARCADE_DATA sTWSData
|
|
TWS_PLAYER_DATA sPlayerData
|
|
TWS_ENEMY_DATA sEnemyData[ciTWS_MAX_ENEMIES]
|
|
TWS_NPC_DATA sNPCData[ciTWS_MAX_NPCS]
|
|
TWS_ITEM_DATA sItemData[ciTWS_MAX_ITEMS]
|
|
TWS_FX_DATA sFXData[ciTWS_MAX_FX]
|
|
TWS_HUD_DATA sHUDData[ciTWS_MAX_HUD_ELEMENTS]
|
|
|
|
TWS_BACKGROUND_TILE sFarBackgroundTilesData[ciTWS_MAX_BACKGROUND_TILES]
|
|
TWS_BACKGROUND_TILE sBackgroundTilesData[ciTWS_MAX_BACKGROUND_TILES]
|
|
TWS_FOREGROUND_TILE sForegroundTilesData[ciTWS_MAX_FOREGROUND_TILES]
|
|
TWS_TRAP sTrapsData[ciTWS_MAX_TRAPS]
|
|
|
|
INT iCurrentEnemyToAdd = 0
|
|
INT iCurrentNPCToAdd = 0
|
|
INT iCurrentItemToAdd = 0
|
|
INT iCurrentHUDItemToAdd = 0
|
|
INT iCurrentFarBackgroundTileToAdd = 0
|
|
INT iCurrentBackgroundTileToAdd = 0
|
|
INT iCurrentForegroundTileToAdd = 0
|
|
INT iCurrentTrapToAdd = 0
|
|
|
|
PROC TWS_INIT_COLOUR_STRUCTS()
|
|
|
|
INIT_RGBA_STRUCT(sTWSData.rgbaBlack, 0, 0, 0, 255)
|
|
INIT_RGBA_STRUCT(sTWSData.rgbaFade, 0, 0, 0, 255)
|
|
INIT_RGBA_STRUCT(sTWSData.rgbaSprite, 255, 255, 255, 255)
|
|
INIT_RGBA_STRUCT(sTWSData.rgbaBlackTransparent, 255, 255, 255, 100)
|
|
|
|
ENDPROC
|
|
|
|
FUNC STRING TWS_CHALLENGE_BIT_TO_STRING(TWS_CHALLENGE_BIT eEnum)
|
|
SWITCH eEnum
|
|
CASE TWS_CHALLENGE_BIT_NONE RETURN "TWS_CHALLENGE_BIT_NONE"
|
|
CASE TWS_CHALLENGE_BIT_FEELIN_GROGGY RETURN "TWS_CHALLENGE_BIT_FEELIN_GROGGY"
|
|
CASE TWS_CHALLENGE_BIT_PLATINUM_SWORD_BRONZE RETURN "TWS_CHALLENGE_BIT_PLATINUM_SWORD_BRONZE"
|
|
CASE TWS_CHALLENGE_BIT_PLATINUM_SWORD_SILVER RETURN "TWS_CHALLENGE_BIT_PLATINUM_SWORD_SILVER"
|
|
CASE TWS_CHALLENGE_BIT_PLATINUM_SWORD_GOLD RETURN "TWS_CHALLENGE_BIT_PLATINUM_SWORD_GOLD"
|
|
CASE TWS_CHALLENGE_BIT_PLATINUM_SWORD_PLATINUM RETURN "TWS_CHALLENGE_BIT_PLATINUM_SWORD_PLATINUM"
|
|
CASE TWS_CHALLENGE_BIT_COIN_PURSE_BRONZE RETURN "TWS_CHALLENGE_BIT_COIN_PURSE_BRONZE"
|
|
CASE TWS_CHALLENGE_BIT_COIN_PURSE_SILVER RETURN "TWS_CHALLENGE_BIT_COIN_PURSE_SILVER"
|
|
CASE TWS_CHALLENGE_BIT_COIN_PURSE_GOLD RETURN "TWS_CHALLENGE_BIT_COIN_PURSE_GOLD"
|
|
CASE TWS_CHALLENGE_BIT_COIN_PURSE_PLATINUM RETURN "TWS_CHALLENGE_BIT_COIN_PURSE_PLATINUM"
|
|
ENDSWITCH
|
|
RETURN "INVALID CHALLENGE"
|
|
ENDFUNC
|
|
|
|
PROC TWS_RESET_CHALLENGES()
|
|
sTWSData.eChallengeFlags = TWS_CHALLENGE_BIT_NONE
|
|
sTWSData.iChallengesBitsetForTelemetry = 0
|
|
SET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_WIZHARD, FALSE)
|
|
SET_MP_INT_CHARACTER_AWARD(MP_AWARD_BATSWORD, 0)
|
|
SET_MP_INT_CHARACTER_AWARD(MP_AWARD_COINPURSE, 0)
|
|
ENDPROC
|
|
|
|
PROC TWS_SET_CHALLENGE_COMPLETED(TWS_CHALLENGE_BIT eBit)
|
|
IF NOT IS_BITMASK_ENUM_AS_ENUM_SET(sTWSData.eChallengeFlags, eBit)
|
|
CPRINTLN(DEBUG_MINIGAME, "TWS_SET_CHALLENGE_COMPLETED:", TWS_CHALLENGE_BIT_TO_STRING(eBit))
|
|
SET_BITMASK_ENUM_AS_ENUM(sTWSData.eChallengeFlags, eBit)
|
|
|
|
SWITCH (eBit)
|
|
CASE TWS_CHALLENGE_BIT_FEELIN_GROGGY
|
|
SET_MP_BOOL_CHARACTER_AWARD(MP_AWARD_WIZHARD, TRUE)
|
|
BREAK
|
|
CASE TWS_CHALLENGE_BIT_PLATINUM_SWORD_PLATINUM
|
|
SET_MP_INT_CHARACTER_AWARD(MP_AWARD_BATSWORD, g_sMptunables.iARCADE_PLAT_SWORD_PLATINUM_SCORE)
|
|
BREAK
|
|
CASE TWS_CHALLENGE_BIT_COIN_PURSE_PLATINUM
|
|
SET_MP_INT_CHARACTER_AWARD(MP_AWARD_COINPURSE, g_sMptunables.iARCADE_COIN_PURSE_PLATINUM_SCORE)
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC TWS_SET_CHALLENGE_VALUE(TWS_CHALLENGE_BIT eBit, INT value)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "TWS_SET_CHALLENGE_VALUE:", TWS_CHALLENGE_BIT_TO_STRING(eBit)," value ",value)
|
|
SWITCH (eBit)
|
|
CASE TWS_CHALLENGE_BIT_FEELIN_GROGGY
|
|
TWS_SET_CHALLENGE_COMPLETED(TWS_CHALLENGE_BIT_FEELIN_GROGGY)
|
|
SET_BIT(sTWSData.iChallengesBitsetForTelemetry, ENUM_TO_INT(TWS_CHALLENGE_BIT_FEELIN_GROGGY))
|
|
ARCADE_CABINET_FLOW_NOTIFICATIONS_SET_SHOW_TSHIRT_HELP(ARCADE_GAME_TSHIRTS_WIZARDS_GROGGY)
|
|
BREAK
|
|
CASE TWS_CHALLENGE_BIT_PLATINUM_SWORD_PLATINUM
|
|
IF value >= g_sMptunables.iARCADE_PLAT_SWORD_PLATINUM_SCORE
|
|
TWS_SET_CHALLENGE_COMPLETED(TWS_CHALLENGE_BIT_PLATINUM_SWORD_PLATINUM)
|
|
SET_BIT(sTWSData.iChallengesBitsetForTelemetry, ENUM_TO_INT(TWS_CHALLENGE_BIT_PLATINUM_SWORD_PLATINUM))
|
|
ARCADE_CABINET_FLOW_NOTIFICATIONS_SET_SHOW_TSHIRT_HELP(ARCADE_GAME_TSHIRTS_WIZARDS_SWORD_PLATINUM)
|
|
ELSE
|
|
INT iCurrent
|
|
iCurrent = GET_MP_INT_CHARACTER_AWARD(MP_AWARD_BATSWORD)
|
|
IF iCurrent < value
|
|
SET_MP_INT_CHARACTER_AWARD(MP_AWARD_BATSWORD,value)
|
|
IF value >= g_sMptunables.iARCADE_PLAT_SWORD_GOLD_SCORE
|
|
SET_BIT(sTWSData.iChallengesBitsetForTelemetry, ENUM_TO_INT(TWS_CHALLENGE_BIT_PLATINUM_SWORD_GOLD))
|
|
ELIF value >= g_sMptunables.iARCADE_PLAT_SWORD_SILVER_SCORE
|
|
SET_BIT(sTWSData.iChallengesBitsetForTelemetry, ENUM_TO_INT(TWS_CHALLENGE_BIT_PLATINUM_SWORD_SILVER))
|
|
ELIF value >= g_sMptunables.iARCADE_PLAT_SWORD_BRONZE_SCORE
|
|
SET_BIT(sTWSData.iChallengesBitsetForTelemetry, ENUM_TO_INT(TWS_CHALLENGE_BIT_PLATINUM_SWORD_BRONZE))
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE TWS_CHALLENGE_BIT_COIN_PURSE_PLATINUM
|
|
IF value >= g_sMptunables.iARCADE_COIN_PURSE_PLATINUM_SCORE
|
|
TWS_SET_CHALLENGE_COMPLETED(TWS_CHALLENGE_BIT_COIN_PURSE_PLATINUM)
|
|
SET_BIT(sTWSData.iChallengesBitsetForTelemetry, ENUM_TO_INT(TWS_CHALLENGE_BIT_COIN_PURSE_PLATINUM))
|
|
ARCADE_CABINET_FLOW_NOTIFICATIONS_SET_SHOW_TSHIRT_HELP(ARCADE_GAME_TSHIRTS_WIZARDS_COIN_PURSE)
|
|
ELSE
|
|
INT iCurrent
|
|
iCurrent = GET_MP_INT_CHARACTER_AWARD(MP_AWARD_COINPURSE)
|
|
IF iCurrent < value
|
|
SET_MP_INT_CHARACTER_AWARD(MP_AWARD_COINPURSE,value)
|
|
IF value >= g_sMptunables.iARCADE_COIN_PURSE_GOLD_SCORE
|
|
SET_BIT(sTWSData.iChallengesBitsetForTelemetry, ENUM_TO_INT(TWS_CHALLENGE_BIT_COIN_PURSE_GOLD))
|
|
ELIF value >= g_sMptunables.iARCADE_COIN_PURSE_SILVER_SCORE
|
|
SET_BIT(sTWSData.iChallengesBitsetForTelemetry, ENUM_TO_INT(TWS_CHALLENGE_BIT_COIN_PURSE_SILVER))
|
|
ELIF value >= g_sMptunables.iARCADE_COIN_PURSE_BRONZE_SCORE
|
|
SET_BIT(sTWSData.iChallengesBitsetForTelemetry, ENUM_TO_INT(TWS_CHALLENGE_BIT_COIN_PURSE_BRONZE))
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF IS_BITMASK_ENUM_AS_ENUM_SET(sTWSData.eChallengeFlags,TWS_CHALLENGE_BIT_FEELIN_GROGGY)
|
|
AND IS_BITMASK_ENUM_AS_ENUM_SET(sTWSData.eChallengeFlags,TWS_CHALLENGE_BIT_PLATINUM_SWORD_PLATINUM)
|
|
AND IS_BITMASK_ENUM_AS_ENUM_SET(sTWSData.eChallengeFlags,TWS_CHALLENGE_BIT_COIN_PURSE_PLATINUM)
|
|
ARCADE_CABINET_FLOW_NOTIFICATIONS_SET_SHOW_TSHIRT_HELP(ARCADE_GAME_TSHIRTS_WIZARDS_COMPLETE_ALL)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
FUNC INT TWS_GET_NEXT_EMPTY_SLOT_FOR_SOUND(ARCADE_GAMES_SOUND eItem)
|
|
|
|
INT i
|
|
FOR i = 0 TO ciTWS_MAX_SOUNDS-1
|
|
IF sTWSData.eSound[i] = ARCADE_GAMES_SOUND_END OR sTWSData.eSound[i] = eItem
|
|
CDEBUG2LN(DEBUG_MINIGAME, "Creating Sound in slot ", i, " (Free slot)")
|
|
RETURN i
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
FOR i = 0 TO ciTWS_MAX_SOUNDS-1
|
|
IF ARCADE_GAMES_SOUND_HAS_FINISHED(sTWSData.eSound[i])
|
|
ARCADE_GAMES_SOUND_RELEASE(sTWSData.eSound[i])
|
|
CDEBUG2LN(DEBUG_MINIGAME, "Creating Sound in slot ", i, " (Releasing finished sound)")
|
|
RETURN i
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
CERRORLN(DEBUG_MINIGAME, "TWS - Error: ran out of sound slots!")
|
|
RETURN 0
|
|
ENDFUNC
|
|
|
|
PROC TWS_RELEASE_FINISHED_SOUNDS()
|
|
|
|
INT i
|
|
FOR i = 0 TO ciTWS_MAX_SOUNDS-1
|
|
IF sTWSData.eSound[i] != ARCADE_GAMES_SOUND_END AND ARCADE_GAMES_SOUND_HAS_FINISHED(sTWSData.eSound[i])
|
|
ARCADE_GAMES_SOUND_RELEASE(sTWSData.eSound[i])
|
|
sTWSData.eSound[i] = ARCADE_GAMES_SOUND_END
|
|
CDEBUG2LN(DEBUG_MINIGAME, "Releasing sound ", i, " (Finished sound)")
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
ENDPROC
|
|
|
|
FUNC INT TWS_GET_NEXT_EMPTY_SLOT_FOR_DRAW_CALL()
|
|
|
|
INT i
|
|
FOR i = 0 TO ciTWS_MAX_DRAW_CALLS-1
|
|
IF sTWSData.sDrawCalls[i].eType = TWS_ENTITY_DEFAULT
|
|
CDEBUG2LN(DEBUG_MINIGAME, "Creating Entity Draw Call in slot ", i, " (Free slot)")
|
|
RETURN i
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
FOR i = 0 TO ciTWS_MAX_DRAW_CALLS-1
|
|
IF sTWSData.sDrawCalls[i].eType = TWS_ENTITY_FX
|
|
CDEBUG2LN(DEBUG_MINIGAME, "Creating Entity Draw Call in slot ", i, " (Had to use an FX slot)")
|
|
RETURN i
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
CERRORLN(DEBUG_MINIGAME, "TWS - Error: ran out of draw call slots!")
|
|
RETURN 0
|
|
ENDFUNC
|
|
|
|
FUNC INT TWS_GET_NUMBER_OF_EMPTY_SLOTS_FOR_ENEMY()
|
|
|
|
INT i, iSum
|
|
FOR i = 0 TO ciTWS_MAX_ENEMIES-1
|
|
IF NOT sEnemyData[i].bIsActive
|
|
iSum ++
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "TWS - There are ",iSum, " free slots!")
|
|
RETURN iSum
|
|
ENDFUNC
|
|
FUNC INT TWS_GET_NEXT_EMPTY_SLOT_FOR_ENEMY()
|
|
|
|
TWS_GET_NUMBER_OF_EMPTY_SLOTS_FOR_ENEMY()
|
|
|
|
INT i
|
|
FOR i = 0 TO ciTWS_MAX_ENEMIES-1
|
|
IF NOT sEnemyData[i].bIsActive
|
|
CDEBUG2LN(DEBUG_MINIGAME, "Creating Enemy Call in slot ", i, " (Free slot)")
|
|
RETURN i
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
CERRORLN(DEBUG_MINIGAME, "TWS - Error: ran out of enemy slots!")
|
|
RETURN -1
|
|
ENDFUNC
|
|
|
|
|
|
FUNC INT TWS_GET_NEXT_EMPTY_SLOT_FOR_ITEM()
|
|
|
|
INT i
|
|
FOR i = 0 TO ciTWS_MAX_ITEMS-1
|
|
IF NOT sItemData[i].bIsActive
|
|
CDEBUG2LN(DEBUG_MINIGAME, "Creating Item in slot ", i, " (Free slot)")
|
|
RETURN i
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
CERRORLN(DEBUG_MINIGAME, "TWS - Error: ran out of item slots!")
|
|
RETURN -1
|
|
ENDFUNC
|
|
|
|
FUNC FLOAT TWS_GET_OFFSET_TO_PLAYER(FLOAT fMultiplier = 1.0, FLOAT fBlockedOffset = 0.0, FLOAT fLockAt = 0.0, FLOAT fTileWidth = cfBASE_SCREEN_WIDTH, FLOAT fOffset = 0.0)
|
|
IF (sPlayerData.ePlayerState = TWS_INTRO AND sTWSData.eLevelStage < TWS_LEVEL_BOSS_FIGHT) OR sPlayerData.vSpritePos.x <= fTileWidth/2
|
|
RETURN fLockAt
|
|
ELSE
|
|
IF sTWSData.bLockedScreen
|
|
RETURN -sTWSData.fLockedScreenPos*fMultiplier + fTileWidth/2 + fOffset
|
|
|
|
ELIF fBlockedOffset != 0.0
|
|
RETURN -fBlockedOffset*fMultiplier + fTileWidth/2
|
|
|
|
ELIF sTWSData.eLevelStage >= TWS_LEVEL_BOSS_FIGHT AND sPlayerData.iLifes > 0
|
|
RETURN cfBASE_SCREEN_WIDTH/2 -sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos*fMultiplier
|
|
|
|
ELSE
|
|
RETURN -sPlayerData.vSpritePos.x*fMultiplier + fTileWidth/2 + fOffset
|
|
ENDIF
|
|
ENDIF
|
|
ENDFUNC
|
|
|
|
FUNC FLOAT TWS_GET_SOUND_POSITION_FOR_ENEMY(INT iIndex)
|
|
|
|
FLOAT fEnemyPosX
|
|
|
|
// Calculate X
|
|
IF sPlayerData.vSpritePos.x >= sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos OR sTWSData.eLevelStage >= TWS_LEVEL_BOSS_FIGHT
|
|
fEnemyPosX = sEnemyData[iIndex].vSpritePos.x + TWS_GET_OFFSET_TO_PLAYER(1.0, sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos + 50)
|
|
ELSE
|
|
fEnemyPosX = sEnemyData[iIndex].vSpritePos.x + TWS_GET_OFFSET_TO_PLAYER()
|
|
ENDIF
|
|
|
|
IF fEnemyPosX < 0
|
|
RETURN 0.0
|
|
ELIF fEnemyPosX > cfBASE_SCREEN_WIDTH
|
|
RETURN 1.0
|
|
ELSE
|
|
RETURN fEnemyPosX / cfBASE_SCREEN_WIDTH
|
|
ENDIF
|
|
|
|
ENDFUNC
|
|
|
|
FUNC FLOAT TWS_GET_SOUND_POSITION_FOR_FX(INT iIndex)
|
|
|
|
FLOAT fFXPosX
|
|
|
|
// Calculate X
|
|
IF sPlayerData.vSpritePos.x >= sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos OR sTWSData.eLevelStage >= TWS_LEVEL_BOSS_FIGHT
|
|
fFXPosX = sFXData[iIndex].vSpritePos.x + TWS_GET_OFFSET_TO_PLAYER(1.0, sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos + 50)
|
|
ELSE
|
|
fFXPosX = sFXData[iIndex].vSpritePos.x + TWS_GET_OFFSET_TO_PLAYER()
|
|
ENDIF
|
|
|
|
IF fFXPosX < 0
|
|
RETURN 0.0
|
|
ELIF fFXPosX > cfBASE_SCREEN_WIDTH
|
|
RETURN 1.0
|
|
ELSE
|
|
RETURN fFXPosX / cfBASE_SCREEN_WIDTH
|
|
ENDIF
|
|
|
|
ENDFUNC
|
|
|
|
PROC TWS_ARCADE_GAMES_SOUND_PLAY(ARCADE_GAMES_SOUND eItem)
|
|
|
|
sTWSData.eSound[TWS_GET_NEXT_EMPTY_SLOT_FOR_SOUND(eItem)] = eItem
|
|
ARCADE_GAMES_SOUND_PLAY(eItem)
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_ARCADE_GAMES_SOUND_PLAY_AT_POSITION(ARCADE_GAMES_SOUND eItem, FLOAT fPosition)
|
|
|
|
TWS_ARCADE_GAMES_SOUND_PLAY(eItem)
|
|
ARCADE_GAMES_SOUND_SET_VARIABLE(eItem, "Screen_Position", fPosition)
|
|
|
|
ENDPROC
|
|
|
|
|
|
PROC TWS_ARCADE_GAMES_SOUND_PLAY_FOR_PLAYER_LEVEL(ARCADE_GAMES_SOUND eItem, INT iLevel)
|
|
|
|
IF iLevel > 1
|
|
SWITCH eItem
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_WALK_LOOP
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_WALK_LOOP
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_WALK_LOOP
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_ATTACK_BOSS_FINAL
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_ATTACK_BOSS_FINAL
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_ATTACK_BOSS_FINAL
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_ATTACK_DASH_SWIPE
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_ATTACK_DASH_SWIPE
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_ATTACK_DASH_SWIPE
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_ATTACK_DASH_HIT
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_ATTACK_DASH_HIT
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_ATTACK_DASH_HIT
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_ATTACK_LONG_SWIPE
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_ATTACK_LONG_SWIPE
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_ATTACK_LONG_SWIPE
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_ATTACK_LONG_HIT
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_ATTACK_LONG_HIT
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_ATTACK_LONG_HIT
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_ATTACK_SHORT_SWIPE
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_ATTACK_SHORT_SWIPE
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_ATTACK_SHORT_SWIPE
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_ATTACK_SHORT_HIT
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_ATTACK_SHORT_HIT
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_ATTACK_SHORT_HIT
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_ATTACK_KICK_SWIPE
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_ATTACK_KICK_SWIPE
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_ATTACK_KICK_SWIPE
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_ATTACK_KICK_HIT
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_ATTACK_KICK_HIT
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_ATTACK_KICK_HIT
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_ATTACK_JUMP_KICK_SWIPE
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_ATTACK_JUMP_KICK_SWIPE
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_ATTACK_JUMP_KICK_SWIPE
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_ATTACK_JUMP_KICK_HIT
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_ATTACK_JUMP_KICK_HIT
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_ATTACK_JUMP_KICK_HIT
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_JUMP_LAND
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_JUMP_LAND
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_JUMP_LAND
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_BODYFALL
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_BODYFALL
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_BODYFALL
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_LEVEL_UP_SCREEN
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_LEVEL_UP_SCREEN
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_LEVEL_UP_SCREEN
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_LEVEL_UP_IG
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_LEVEL_UP_IG
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_LEVEL_UP_IG
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_LEVEL_UP_SWORD
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_LEVEL_UP_SWORD
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_LEVEL_UP_SWORD
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_MAGIC_DRAW_SWORD
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_MAGIC_DRAW_SWORD
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_MAGIC_DRAW_SWORD
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_MAGIC_NUKE_CAST
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_MAGIC_NUKE_CAST
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_MAGIC_NUKE_CAST
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_MAGIC_NUKE_SMALL_BLAST
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_MAGIC_NUKE_SMALL_BLAST
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_MAGIC_NUKE_SMALL_BLAST
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_WEAPON_DEFLECT_ARROW
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_WEAPON_DEFLECT_ARROW
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_WEAPON_DEFLECT_ARROW
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_WEAPON_DEFLECT_FIREBALL
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_WEAPON_DEFLECT_FIREBALL
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_WEAPON_DEFLECT_FIREBALL
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_HIT_BY_ENEMY
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_HIT_BY_ENEMY
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_HIT_BY_ENEMY
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_VOCAL_MELEE
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_VOCAL_MELEE
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_VOCAL_MELEE
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_VOCAL_HURT
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_VOCAL_HURT
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_VOCAL_HURT
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_VOCAL_JUMP
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_VOCAL_JUMP
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_VOCAL_JUMP
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_VOCAL_KNOCKED_DOWN
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_VOCAL_KNOCKED_DOWN
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_VOCAL_KNOCKED_DOWN
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_VOCAL_DEATH
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_VOCAL_DEATH
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_VOCAL_DEATH
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_VOCAL_FALL_TO_DEATH
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_VOCAL_FALL_TO_DEATH
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_VOCAL_FALL_TO_DEATH
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_VOCAL_MAGIC_SCREEN_NUKE
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_VOCAL_MAGIC_SCREEN_NUKE
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_VOCAL_MAGIC_SCREEN_NUKE
|
|
ENDIF
|
|
BREAK
|
|
CASE ARCADE_GAMES_SOUND_TWR_PLAYER_VOCAL_LEVEL_UP
|
|
IF iLevel = 2
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_2_VOCAL_LEVEL_UP
|
|
ELSE
|
|
eItem = ARCADE_GAMES_SOUND_TWR_PLAYER_3_VOCAL_LEVEL_UP
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
TWS_ARCADE_GAMES_SOUND_PLAY(eItem)
|
|
|
|
ENDPROC
|
|
|
|
FUNC ARCADE_GAMES_SOUND TWS_GET_AGGRO_SOUND_FOR_ENEMY(TWS_ENEMY_TYPE eType)
|
|
|
|
SWITCH eType
|
|
CASE TWS_ENEMY_BAT
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BAT_AGGRO
|
|
CASE TWS_ENEMY_GRUNT
|
|
RETURN ARCADE_GAMES_SOUND_TWR_UNICORN_AGGRO
|
|
CASE TWS_ENEMY_GRUNT_SWORD
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_SWORD_AGGRO
|
|
CASE TWS_ENEMY_GRUNT_SPEAR
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_SPEAR_AGGRO
|
|
CASE TWS_ENEMY_GRUNT_FIRESPEAR
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_FIRESPEAR_AGGRO
|
|
CASE TWS_ENEMY_GRUNT_FIRESWORD
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_FIRESWORD_AGGRO
|
|
CASE TWS_ENEMY_GRUNT_CASTER
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_CASTER_AGGRO
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_CROSSBOW_AGGRO
|
|
CASE TWS_ENEMY_BRUTE
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_AGGRO
|
|
CASE TWS_ENEMY_BRUTE_AXE
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_AXE_AGGRO
|
|
CASE TWS_ENEMY_SPIDER
|
|
RETURN ARCADE_GAMES_SOUND_TWR_SPIDER_AGGRO
|
|
CASE TWS_ENEMY_SNAKE
|
|
RETURN ARCADE_GAMES_SOUND_TWR_SNAKE_AGGRO
|
|
CASE TWS_ENEMY_SLIME
|
|
RETURN ARCADE_GAMES_SOUND_TWR_SLIME_AGGRO
|
|
CASE TWS_ENEMY_LEPRECHAUN
|
|
RETURN ARCADE_GAMES_SOUND_TWR_LEPRECHAUN_AGGRO
|
|
CASE TWS_ENEMY_BOSS_SPIDER
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BOSS_SPIDER_AGGRO
|
|
CASE TWS_ENEMY_BOSS_AMAZON
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BOSS_AMAZON_AGGRO
|
|
CASE TWS_ENEMY_BOSS_KNIGHT
|
|
CASE TWS_ENEMY_KNIGHT
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BOSS_DARKKNIGHT_AGGRO
|
|
CASE TWS_ENEMY_FAIRY
|
|
RETURN ARCADE_GAMES_SOUND_TWR_FAIRY_AGGRO
|
|
ENDSWITCH
|
|
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_AGGRO
|
|
|
|
ENDFUNC
|
|
|
|
FUNC ARCADE_GAMES_SOUND TWS_GET_PAIN_SOUND_FOR_ENEMY(TWS_ENEMY_TYPE eType)
|
|
|
|
SWITCH eType
|
|
CASE TWS_ENEMY_BAT
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BAT_PAIN
|
|
CASE TWS_ENEMY_GRUNT
|
|
RETURN ARCADE_GAMES_SOUND_TWR_UNICORN_PAIN
|
|
CASE TWS_ENEMY_GRUNT_SWORD
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_SWORD_PAIN
|
|
CASE TWS_ENEMY_GRUNT_SPEAR
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_SPEAR_PAIN
|
|
CASE TWS_ENEMY_GRUNT_FIRESPEAR
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_FIRESPEAR_PAIN
|
|
CASE TWS_ENEMY_GRUNT_FIRESWORD
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_FIRESWORD_PAIN
|
|
CASE TWS_ENEMY_GRUNT_CASTER
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_CASTER_PAIN
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_CROSSBOW_PAIN
|
|
CASE TWS_ENEMY_BRUTE
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_PAIN
|
|
CASE TWS_ENEMY_BRUTE_AXE
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_AXE_PAIN
|
|
CASE TWS_ENEMY_SPIDER
|
|
RETURN ARCADE_GAMES_SOUND_TWR_SPIDER_PAIN
|
|
CASE TWS_ENEMY_SLIME
|
|
RETURN ARCADE_GAMES_SOUND_TWR_SLIME_PAIN
|
|
CASE TWS_ENEMY_LEPRECHAUN
|
|
RETURN ARCADE_GAMES_SOUND_TWR_LEPRECHAUN_PAIN
|
|
CASE TWS_ENEMY_BOSS_SPIDER
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BOSS_SPIDER_PAIN
|
|
CASE TWS_ENEMY_BOSS_AMAZON
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BOSS_AMAZON_PAIN
|
|
CASE TWS_ENEMY_BOSS_KNIGHT
|
|
CASE TWS_ENEMY_KNIGHT
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BOSS_DARKKNIGHT_PAIN
|
|
CASE TWS_ENEMY_FAIRY
|
|
RETURN ARCADE_GAMES_SOUND_TWR_FAIRY_PAIN
|
|
ENDSWITCH
|
|
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_PAIN
|
|
|
|
ENDFUNC
|
|
|
|
FUNC ARCADE_GAMES_SOUND TWS_GET_ATTACK_SOUND_FOR_ENEMY(TWS_ENEMY_TYPE eType)
|
|
|
|
SWITCH eType
|
|
CASE TWS_ENEMY_BAT
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BAT_ATTACK
|
|
CASE TWS_ENEMY_GRUNT
|
|
RETURN ARCADE_GAMES_SOUND_TWR_UNICORN_ATTACK
|
|
CASE TWS_ENEMY_GRUNT_SWORD
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_SWORD_ATTACK
|
|
CASE TWS_ENEMY_GRUNT_SPEAR
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_SPEAR_ATTACK
|
|
CASE TWS_ENEMY_GRUNT_FIRESPEAR
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_FIRESPEAR_ATTACK
|
|
CASE TWS_ENEMY_GRUNT_FIRESWORD
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_FIRESWORD_ATTACK
|
|
CASE TWS_ENEMY_GRUNT_CASTER
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_CASTER_ATTACK
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_CROSSBOW_ATTACK
|
|
CASE TWS_ENEMY_BRUTE
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_ATTACK
|
|
CASE TWS_ENEMY_BRUTE_AXE
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_AXE_ATTACK
|
|
CASE TWS_ENEMY_SPIDER
|
|
RETURN ARCADE_GAMES_SOUND_TWR_SPIDER_ATTACK
|
|
CASE TWS_ENEMY_SLIME
|
|
RETURN ARCADE_GAMES_SOUND_TWR_SLIME_ATTACK
|
|
CASE TWS_ENEMY_LEPRECHAUN
|
|
RETURN ARCADE_GAMES_SOUND_TWR_LEPRECHAUN_COIN_ATTACK
|
|
CASE TWS_ENEMY_FAIRY
|
|
RETURN ARCADE_GAMES_SOUND_TWR_FAIRY_ATTACK
|
|
ENDSWITCH
|
|
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_ATTACK
|
|
|
|
ENDFUNC
|
|
|
|
FUNC ARCADE_GAMES_SOUND TWS_GET_DEATH_SOUND_FOR_ENEMY(TWS_ENEMY_TYPE eType)
|
|
|
|
SWITCH eType
|
|
CASE TWS_ENEMY_BAT
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BAT_DEATH
|
|
CASE TWS_ENEMY_GRUNT
|
|
RETURN ARCADE_GAMES_SOUND_TWR_UNICORN_DEATH
|
|
CASE TWS_ENEMY_GRUNT_SWORD
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_SWORD_DEATH
|
|
CASE TWS_ENEMY_GRUNT_SPEAR
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_SPEAR_DEATH
|
|
CASE TWS_ENEMY_GRUNT_FIRESPEAR
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_FIRESPEAR_DEATH
|
|
CASE TWS_ENEMY_GRUNT_FIRESWORD
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_FIRESWORD_DEATH
|
|
CASE TWS_ENEMY_GRUNT_CASTER
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_CASTER_DEATH
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_CROSSBOW_DEATH
|
|
CASE TWS_ENEMY_BRUTE
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_DEATH
|
|
CASE TWS_ENEMY_BRUTE_AXE
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_AXE_DEATH
|
|
CASE TWS_ENEMY_SPIDER
|
|
RETURN ARCADE_GAMES_SOUND_TWR_SPIDER_DEATH
|
|
CASE TWS_ENEMY_SNAKE
|
|
RETURN ARCADE_GAMES_SOUND_TWR_SNAKE_DEATH
|
|
CASE TWS_ENEMY_SLIME
|
|
RETURN ARCADE_GAMES_SOUND_TWR_SLIME_DEATH
|
|
CASE TWS_ENEMY_LEPRECHAUN
|
|
RETURN ARCADE_GAMES_SOUND_TWR_LEPRECHAUN_DEATH
|
|
CASE TWS_ENEMY_FAIRY
|
|
RETURN ARCADE_GAMES_SOUND_TWR_FAIRY_DEATH
|
|
ENDSWITCH
|
|
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_DEATH
|
|
|
|
ENDFUNC
|
|
|
|
FUNC ARCADE_GAMES_SOUND TWS_GET_BODYFALL_SOUND_FOR_ENEMY(TWS_ENEMY_TYPE eType)
|
|
|
|
SWITCH eType
|
|
CASE TWS_ENEMY_BAT
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BAT_BODYFALL
|
|
// CASE TWS_ENEMY_GRUNT
|
|
// RETURN ARCADE_GAMES_SOUND_TWR_UNICORN_BODYFALL
|
|
CASE TWS_ENEMY_GRUNT_SWORD
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_SWORD_BODYFALL
|
|
CASE TWS_ENEMY_GRUNT_SPEAR
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_SPEAR_BODYFALL
|
|
CASE TWS_ENEMY_GRUNT_FIRESPEAR
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_FIRESPEAR_BODYFALL
|
|
CASE TWS_ENEMY_GRUNT_FIRESWORD
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_FIRESWORD_BODYFALL
|
|
CASE TWS_ENEMY_GRUNT_CASTER
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_CASTER_BODYFALL
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW
|
|
RETURN ARCADE_GAMES_SOUND_TWR_GRUNT_CROSSBOW_BODYFALL
|
|
CASE TWS_ENEMY_BRUTE
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_BODYFALL
|
|
CASE TWS_ENEMY_BRUTE_AXE
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_AXE_BODYFALL
|
|
CASE TWS_ENEMY_SPIDER
|
|
RETURN ARCADE_GAMES_SOUND_TWR_SPIDER_BODYFALL
|
|
CASE TWS_ENEMY_LEPRECHAUN
|
|
RETURN ARCADE_GAMES_SOUND_TWR_LEPRECHAUN_BODYFALL
|
|
CASE TWS_ENEMY_FAIRY
|
|
RETURN ARCADE_GAMES_SOUND_TWR_FAIRY_BODYFALL
|
|
ENDSWITCH
|
|
|
|
RETURN ARCADE_GAMES_SOUND_TWR_BRUTE_BODYFALL
|
|
|
|
ENDFUNC
|
|
|
|
FUNC INT GET_NEXT_FX_INDEX()
|
|
|
|
INT i, iNextEmptySlot = -1
|
|
FOR i = 0 TO ciTWS_MAX_FX -1
|
|
IF sFXData[i].bActive = FALSE
|
|
iNextEmptySlot = i
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
IF iNextEmptySlot = -1
|
|
iNextEmptySlot = 1
|
|
ENDIF
|
|
|
|
RETURN iNextEmptySlot
|
|
|
|
ENDFUNC
|
|
|
|
PROC TWS_CREATE_FX(VECTOR_2D vPos, TWS_FX_TYPE eType, FLOAT fZOffset = 0.0)
|
|
|
|
INT iNextEmptySlot = GET_NEXT_FX_INDEX()
|
|
INT iNextEmptyDrawCallSlot = TWS_GET_NEXT_EMPTY_SLOT_FOR_DRAW_CALL()
|
|
|
|
IF iNextEmptyDrawCallSlot = -1
|
|
EXIT
|
|
ENDIF
|
|
|
|
sFXData[iNextEmptySlot].vSpritePos = vPos
|
|
sFXData[iNextEmptySlot].eType = eType
|
|
sFXData[iNextEmptySlot].iTimer = GET_GAME_TIMER()
|
|
sFXData[iNextEmptySlot].bActive = TRUE
|
|
sFXData[iNextEmptySlot].iSpriteBlastAnimFrame = 0
|
|
sFXData[iNextEmptySlot].fZIndex = 0.0
|
|
|
|
SWITCH sFXData[iNextEmptySlot].eType
|
|
CASE TWS_FX_SWORD_LIGHTNING
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_SWORD_LIGHTNING_WIDTH, cfTWS_FX_SWORD_LIGHTNING_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_SUPERATTACK_EXPLOSION
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_SUPERATTACK_WIDTH, cfTWS_FX_SUPERATTACK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_MAGIC_COLUMN
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_WIZARD_PILLAR_WIDTH, cfTWS_FX_WIZARD_PILLAR_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_MAGIC_FIRE
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_WIZARD_FIRE_WIDTH, cfTWS_FX_WIZARD_FIRE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_SWORD
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_KNIGHT_SWORD_WIDTH, cfTWS_FX_KNIGHT_SWORD_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_SWORD_DROP
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_SWORD_WIDTH, cfTWS_BOSS_KNIGHT_SWORD_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_HELP
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_HELP_WIDTH, cfTWS_FX_HELP_HEIGHT)
|
|
sFXData[iNextEmptySlot].fZIndex = -50.0
|
|
BREAK
|
|
CASE TWS_FX_COD_DROP
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_COD_WIDTH, cfTWS_BOSS_KNIGHT_COD_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_SMALL_HIT
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_SMALL_HIT_WIDTH, cfTWS_FX_SMALL_HIT_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_LARGE_HIT
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_LARGE_HIT_WIDTH, cfTWS_FX_LARGE_HIT_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_VENOM_HIT
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_VENOM_HIT_WIDTH, cfTWS_FX_VENOM_HIT_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_BLOOD_HIT
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_VENOM_HIT_WIDTH, cfTWS_FX_VENOM_HIT_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_CLOTHES
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_RIPPED_CLOTHES_WIDTH, cfTWS_FX_RIPPED_CLOTHES_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_BOSS_SPIDER_SPIT
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_BOSS_SPIDER_SPIT_WIDTH, cfTWS_FX_BOSS_SPIDER_SPIT_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_ARROW_LEFT
|
|
CASE TWS_FX_ARROW_RIGHT
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(-cfTWS_GRUNT_CROSSBOW_ARROW_WIDTH, cfTWS_GRUNT_CROSSBOW_ARROW_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_FIREBALL_LEFT
|
|
CASE TWS_FX_FIREBALL_RIGHT
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(-cfTWS_GRUNT_CASTER_FIREBALL_WIDTH, cfTWS_GRUNT_CASTER_FIREBALL_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_COINS_LEFT
|
|
CASE TWS_FX_COINS_RIGHT
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(-cfTWS_LEPRECHAUN_COINS_WIDTH, cfTWS_LEPRECHAUN_COINS_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_TRAP_SPEAR
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_TRAP_SPEAR_WIDTH, cfTWS_TRAP_SPEAR_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FX_VENOM_PUDDLE
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_BOSS_SPIDER_VENOM_WIDTH, cfTWS_FX_BOSS_SPIDER_VENOM_HEIGHT)
|
|
sFXData[iNextEmptySlot].fZIndex = -50.0
|
|
BREAK
|
|
CASE TWS_FX_GROG_BUBBLE
|
|
sFXData[iNextEmptySlot].vSpriteSize = INIT_VECTOR_2D(cfTWS_FX_GROG_WIDTH, cfTWS_FX_GROG_HEIGHT)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
sTWSData.sDrawCalls[iNextEmptyDrawCallSlot].eType = TWS_ENTITY_FX
|
|
sTWSData.sDrawCalls[iNextEmptyDrawCallSlot].iIndex = iNextEmptySlot
|
|
|
|
IF fZOffset != 0.0
|
|
sFXData[iNextEmptySlot].fZIndex = fZOffset
|
|
ELSE
|
|
sTWSData.sDrawCalls[iNextEmptyDrawCallSlot].fZIndex = sFXData[iNextEmptySlot].vSpritePos.Y + sFXData[iNextEmptySlot].vSpriteSize.y
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_INIT_PLAYERS()
|
|
|
|
INT iCurrentDrawCallToAdd = TWS_GET_NEXT_EMPTY_SLOT_FOR_DRAW_CALL()
|
|
|
|
sPlayerData.vSpritePos = INIT_VECTOR_2D(-100.0 , cfBASE_SCREEN_HEIGHT/5*3)
|
|
sPlayerData.vSpriteSize = INIT_VECTOR_2D(cfTWS_PLAYER_WALK_WIDTH, cfTWS_PLAYER_WALK_HEIGHT)
|
|
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].eType = TWS_ENTITY_PLAYER
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].iIndex = 0
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].fZIndex = sPlayerData.vSpritePos.Y + sPlayerData.vSpriteSize.y
|
|
|
|
ENDPROC
|
|
|
|
// HUD
|
|
PROC TWS_ADD_HUD_ITEM_TO_LIST(VECTOR_2D vPos, TWS_HUD_TYPE eType, BOOL bActive = TRUE)
|
|
|
|
sHUDData[iCurrentHUDItemToAdd].vSpritePos = vPos
|
|
sHUDData[iCurrentHUDItemToAdd].eType = eType
|
|
sHUDData[iCurrentHUDItemToAdd].bActive = bActive
|
|
sHUDData[iCurrentHUDItemToAdd].bRendering = FALSE
|
|
sHUDData[iCurrentHUDItemToAdd].bPlayedSoundAttacked = FALSE
|
|
sHUDData[iCurrentHUDItemToAdd].iSpriteBlastAnimFrame = 0
|
|
|
|
iCurrentHUDItemToAdd++
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_INIT_HUD_ITEMS()
|
|
|
|
TWS_ADD_HUD_ITEM_TO_LIST(INIT_VECTOR_2D(-100, cfBASE_SCREEN_HEIGHT/2), TWS_HUD_START)
|
|
TWS_ADD_HUD_ITEM_TO_LIST(INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/12*9, cfBASE_SCREEN_HEIGHT/2), TWS_HUD_GO_ARROW)
|
|
TWS_ADD_HUD_ITEM_TO_LIST(INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/2, cfBASE_SCREEN_HEIGHT/10*8), TWS_HUD_DIALOGUE_FRAME, FALSE)
|
|
TWS_ADD_HUD_ITEM_TO_LIST(INIT_VECTOR_2D(-100, cfBASE_SCREEN_HEIGHT/2), TWS_HUD_GAMEOVER, FALSE)
|
|
TWS_ADD_HUD_ITEM_TO_LIST(INIT_VECTOR_2D(-100, cfBASE_SCREEN_HEIGHT/3), TWS_HUD_END, FALSE)
|
|
|
|
ENDPROC
|
|
|
|
// Items
|
|
PROC TWS_ADD_ITEM_TO_LIST(VECTOR_2D vPos, TWS_ITEM_TYPE eType, BOOL bFalling = FALSE)
|
|
|
|
IF eType = TWS_ITEM_NONE
|
|
EXIT
|
|
ENDIF
|
|
|
|
iCurrentItemToAdd = TWS_GET_NEXT_EMPTY_SLOT_FOR_ITEM()
|
|
IF iCurrentItemToAdd = -1
|
|
CERRORLN(DEBUG_MINIGAME, "Error: could not create item from enemy. Array is full!")
|
|
EXIT
|
|
ENDIF
|
|
|
|
INT iCurrentDrawCallToAdd = TWS_GET_NEXT_EMPTY_SLOT_FOR_DRAW_CALL()
|
|
|
|
sItemData[iCurrentItemToAdd].bIsHit = FALSE
|
|
sItemData[iCurrentItemToAdd].bIsActive = TRUE
|
|
sItemData[iCurrentItemToAdd].iSpriteAnimFrame = 0
|
|
|
|
IF bFalling
|
|
|
|
sItemData[iCurrentItemToAdd].vSpritePos = INIT_VECTOR_2D(vPos.x, vPos.Y - 600)
|
|
sItemData[iCurrentItemToAdd].vSpriteFallPos = vPos
|
|
sItemData[iCurrentItemToAdd].bFalling = TRUE
|
|
sItemData[iCurrentItemToAdd].eItemType = eType
|
|
|
|
IF NOT sTWSData.bLockedScreen
|
|
INT i
|
|
FOR i = 0 TO ciTWS_MAX_TRAPS -1
|
|
IF sTrapsData[i].bIsActive AND sTrapsData[i].eType = TWS_TRAP_FALL
|
|
IF vPos.y > sTrapsData[i].vSpritePos.Y
|
|
AND vPos.x > (sTrapsData[i].vSpritePos.x - sTrapsData[i].vSpriteSize.x)
|
|
AND vPos.x < (sTrapsData[i].vSpritePos.x + sTrapsData[i].vSpriteSize.x)
|
|
sItemData[iCurrentItemToAdd].vSpriteFallPos.y += cfGAME_SCREEN_HEIGHT
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
ELSE
|
|
sItemData[iCurrentItemToAdd].vSpritePos = vPos
|
|
sItemData[iCurrentItemToAdd].eItemType = eType
|
|
|
|
ENDIF
|
|
|
|
SWITCH sItemData[iCurrentItemToAdd].eItemType
|
|
CASE TWS_ITEM_HP_SMA
|
|
sItemData[iCurrentItemToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_ITEM_HP_SMA_WIDTH, cfTWS_ITEM_HP_SMA_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ITEM_HP_MED
|
|
sItemData[iCurrentItemToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_ITEM_HP_MED_WIDTH, cfTWS_ITEM_HP_MED_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ITEM_HP_LAR
|
|
sItemData[iCurrentItemToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_ITEM_HP_LAR_WIDTH, cfTWS_ITEM_HP_LAR_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ITEM_MP_SMA
|
|
sItemData[iCurrentItemToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_ITEM_HP_SMA_WIDTH, cfTWS_ITEM_HP_SMA_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ITEM_MP_MED
|
|
sItemData[iCurrentItemToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_ITEM_HP_MED_WIDTH, cfTWS_ITEM_HP_MED_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ITEM_MP_LAR
|
|
sItemData[iCurrentItemToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_ITEM_HP_LAR_WIDTH, cfTWS_ITEM_HP_LAR_HEIGHT)
|
|
BREAK
|
|
|
|
CASE TWS_ITEM_GOLD_1
|
|
sItemData[iCurrentItemToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_ITEM_GOLD_1_WIDTH, cfTWS_ITEM_GOLD_1_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ITEM_GOLD_2
|
|
sItemData[iCurrentItemToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_ITEM_GOLD_2_WIDTH, cfTWS_ITEM_GOLD_2_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ITEM_GOLD_3
|
|
sItemData[iCurrentItemToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_ITEM_GOLD_3_WIDTH, cfTWS_ITEM_GOLD_3_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ITEM_GOLD_4
|
|
sItemData[iCurrentItemToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_ITEM_GOLD_4_WIDTH, cfTWS_ITEM_GOLD_4_HEIGHT)
|
|
BREAK
|
|
|
|
CASE TWS_ITEM_1UP
|
|
sItemData[iCurrentItemToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_ITEM_1UP_WIDTH, cfTWS_ITEM_1UP_HEIGHT)
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].eType = TWS_ENTITY_ITEM
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].iIndex = iCurrentItemToAdd
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].fZIndex = vPos.Y + sItemData[iCurrentItemToAdd].vSpriteSize.Y
|
|
|
|
ENDPROC
|
|
PROC TWS_INIT_ITEMS()
|
|
|
|
SWITCH sTWSData.eCurrentLevel
|
|
|
|
CASE TWS_FOREST
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(2600, 650), TWS_ITEM_MP_MED)
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(5200, 730), TWS_ITEM_HP_MED)
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(7100, 730), TWS_ITEM_MP_MED)
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(11000, 700), TWS_ITEM_HP_SMA)
|
|
|
|
BREAK
|
|
|
|
CASE TWS_SWAMP
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(2600, 650), TWS_ITEM_MP_MED)
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(5200, 730), TWS_ITEM_1UP)
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(7100, 730), TWS_ITEM_HP_MED)
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(11000, 700), TWS_ITEM_MP_SMA)
|
|
|
|
BREAK
|
|
|
|
CASE TWS_CAVES
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(2600, 650), TWS_ITEM_MP_MED)
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(5200, 730), TWS_ITEM_1UP)
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(7100, 730), TWS_ITEM_HP_MED)
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(11000, 700), TWS_ITEM_MP_SMA)
|
|
|
|
BREAK
|
|
|
|
CASE TWS_CASTLE
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(2600, 650), TWS_ITEM_MP_MED)
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(5200, 730), TWS_ITEM_1UP)
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(7100, 730), TWS_ITEM_HP_MED)
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(11000, 700), TWS_ITEM_MP_SMA)
|
|
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_ADD_TRAP_TO_LIST(VECTOR_2D vPos, VECTOR_2D vSize, TWS_TRAP_TYPE eType)
|
|
|
|
INT iCurrentDrawCallToAdd = TWS_GET_NEXT_EMPTY_SLOT_FOR_DRAW_CALL()
|
|
|
|
sTrapsData[iCurrentTrapToAdd].bIsActive = TRUE
|
|
sTrapsData[iCurrentTrapToAdd].bIsWorking = TRUE
|
|
sTrapsData[iCurrentTrapToAdd].vSpritePos = vPos
|
|
sTrapsData[iCurrentTrapToAdd].vSpriteSize = vSize
|
|
|
|
IF eType = TWS_TRAP_STALAGTITE
|
|
sTrapsData[iCurrentTrapToAdd].vSpritePos2 = INIT_VECTOR_2D(vPos.X, vPos.Y - 700.0)
|
|
ENDIF
|
|
|
|
sTrapsData[iCurrentTrapToAdd].eType = eType
|
|
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].eType = TWS_ENTITY_TRAP
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].iIndex = iCurrentTrapToAdd
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].fZIndex = vPos.Y + sTrapsData[iCurrentTrapToAdd].vSpriteSize.y
|
|
|
|
IF eType = TWS_TRAP_HOLE
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].fZIndex = 0
|
|
ENDIF
|
|
|
|
iCurrentTrapToAdd ++
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_INIT_TRAPS()
|
|
|
|
SWITCH sTWSData.eCurrentLevel
|
|
|
|
CASE TWS_CAVES
|
|
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(1950, 925), INIT_VECTOR_2D(cfTWS_TRAP_HOLE_WIDTH, cfTWS_TRAP_HOLE_HEIGHT), TWS_TRAP_HOLE)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(2500, 820), INIT_VECTOR_2D(cfTWS_TRAP_STALAGTITE_WIDTH, cfTWS_TRAP_STALAGTITE_HEIGHT), TWS_TRAP_STALAGTITE)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(2650, 860), INIT_VECTOR_2D(cfTWS_TRAP_STALAGTITE_WIDTH, cfTWS_TRAP_STALAGTITE_HEIGHT), TWS_TRAP_STALAGTITE)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(3000, 700), INIT_VECTOR_2D(cfTWS_TRAP_HOLE_WIDTH, cfTWS_TRAP_HOLE_HEIGHT), TWS_TRAP_HOLE)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(3650, 950), INIT_VECTOR_2D(cfTWS_TRAP_HOLE_WIDTH, cfTWS_TRAP_HOLE_HEIGHT), TWS_TRAP_HOLE)
|
|
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(4100, 750), INIT_VECTOR_2D(cfTWS_TRAP_STALAGTITE_WIDTH, cfTWS_TRAP_STALAGTITE_HEIGHT), TWS_TRAP_STALAGTITE)
|
|
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(6150, 648), INIT_VECTOR_2D(550, 320), TWS_TRAP_FALL)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(7300, 830), INIT_VECTOR_2D(cfTWS_TRAP_STALAGTITE_WIDTH, cfTWS_TRAP_STALAGTITE_HEIGHT), TWS_TRAP_STALAGTITE)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(7850, 700), INIT_VECTOR_2D(cfTWS_TRAP_HOLE_WIDTH, cfTWS_TRAP_HOLE_HEIGHT), TWS_TRAP_HOLE)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(8300, 1150), INIT_VECTOR_2D(cfTWS_TRAP_HOLE_WIDTH, cfTWS_TRAP_HOLE_HEIGHT), TWS_TRAP_HOLE)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(8500, 900), INIT_VECTOR_2D(cfTWS_TRAP_STALAGTITE_WIDTH, cfTWS_TRAP_STALAGTITE_HEIGHT), TWS_TRAP_STALAGTITE)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(8600, 800), INIT_VECTOR_2D(cfTWS_TRAP_HOLE_WIDTH, cfTWS_TRAP_HOLE_HEIGHT), TWS_TRAP_HOLE)
|
|
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(8800, 850), INIT_VECTOR_2D(cfTWS_TRAP_STALAGTITE_WIDTH, cfTWS_TRAP_STALAGTITE_HEIGHT), TWS_TRAP_STALAGTITE)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(9300, 850), INIT_VECTOR_2D(cfTWS_TRAP_HOLE_WIDTH, cfTWS_TRAP_HOLE_HEIGHT), TWS_TRAP_HOLE)
|
|
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(9700, 750), INIT_VECTOR_2D(cfTWS_TRAP_STALAGTITE_WIDTH, cfTWS_TRAP_STALAGTITE_HEIGHT), TWS_TRAP_STALAGTITE)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(10100, 850), INIT_VECTOR_2D(cfTWS_TRAP_STALAGTITE_WIDTH, cfTWS_TRAP_STALAGTITE_HEIGHT), TWS_TRAP_STALAGTITE)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(11500, 648), INIT_VECTOR_2D(550, 320), TWS_TRAP_FALL)
|
|
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(12500, 700), INIT_VECTOR_2D(cfTWS_TRAP_STALAGTITE_WIDTH, cfTWS_TRAP_STALAGTITE_HEIGHT), TWS_TRAP_STALAGTITE)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(12900, 850), INIT_VECTOR_2D(cfTWS_TRAP_STALAGTITE_WIDTH, cfTWS_TRAP_STALAGTITE_HEIGHT), TWS_TRAP_STALAGTITE)
|
|
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(13700, 850), INIT_VECTOR_2D(cfTWS_TRAP_STALAGTITE_WIDTH, cfTWS_TRAP_STALAGTITE_HEIGHT), TWS_TRAP_STALAGTITE)
|
|
TWS_ADD_TRAP_TO_LIST(INIT_VECTOR_2D(15700, 750), INIT_VECTOR_2D(cfTWS_TRAP_HOLE_WIDTH, cfTWS_TRAP_HOLE_HEIGHT), TWS_TRAP_HOLE)
|
|
|
|
BREAK
|
|
|
|
CASE TWS_CASTLE
|
|
|
|
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[1].fSpritePos + cfGAME_SCREEN_WIDTH*0.3, 530), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[1].fSpritePos + cfGAME_SCREEN_WIDTH*0.3, 605), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[1].fSpritePos + cfGAME_SCREEN_WIDTH*0.3, 680), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[1].fSpritePos + cfGAME_SCREEN_WIDTH*0.3, 755), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[1].fSpritePos + cfGAME_SCREEN_WIDTH*0.3, 830), TWS_FX_TRAP_SPEAR)
|
|
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.9, 530), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.82, 605), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.75, 680), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.68, 755), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.6, 830), TWS_FX_TRAP_SPEAR)
|
|
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.9, 540), TWS_FX_TRAP_SPEAR)
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.85, 590), TWS_FX_TRAP_SPEAR)
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.8, 640), TWS_FX_TRAP_SPEAR)
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.75, 690), TWS_FX_TRAP_SPEAR)
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.70, 740), TWS_FX_TRAP_SPEAR)
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.65, 790), TWS_FX_TRAP_SPEAR)
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.6, 840), TWS_FX_TRAP_SPEAR)
|
|
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.35, 530), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.35, 605), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.35, 680), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.35, 755), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.35, 830), TWS_FX_TRAP_SPEAR)
|
|
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.6, 530), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.68, 605), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.75, 680), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.82, 755), TWS_FX_TRAP_SPEAR)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.9, 830), TWS_FX_TRAP_SPEAR)
|
|
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.1, 540), TWS_FX_TRAP_SPEAR)
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.12, 590), TWS_FX_TRAP_SPEAR)
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.14, 640), TWS_FX_TRAP_SPEAR)
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.16, 690), TWS_FX_TRAP_SPEAR)
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.18, 740), TWS_FX_TRAP_SPEAR)
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.2, 790), TWS_FX_TRAP_SPEAR)
|
|
// TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.22, 840), TWS_FX_TRAP_SPEAR)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
// Enemies
|
|
PROC TWS_ADD_NPC_TO_LIST(VECTOR_2D vPos, TWS_NPC_TYPE eType)
|
|
|
|
INT iCurrentDrawCallToAdd = TWS_GET_NEXT_EMPTY_SLOT_FOR_DRAW_CALL()
|
|
|
|
sNPCData[iCurrentNPCToAdd].bIsActive = TRUE
|
|
sNPCData[iCurrentNPCToAdd].vSpritePos = vPos
|
|
sNPCData[iCurrentNPCToAdd].eNPCType = eType
|
|
sNPCData[iCurrentNPCToAdd].fHealth = 1.0
|
|
|
|
SWITCH sNPCData[iCurrentNPCToAdd].eNPCType
|
|
CASE TWS_NPC_TWINS
|
|
CASE TWS_NPC_WOMAN
|
|
sNPCData[iCurrentNPCToAdd].fHealth = 0.4
|
|
sNPCData[iCurrentNPCToAdd].iNPCSize = 1
|
|
sNPCData[iCurrentNPCToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_NPC_TWINS_WIDTH, cfTWS_NPC_TWINS_HEIGHT)
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(vPos.x + 75, vPos.y - 150), TWS_FX_HELP, 0)
|
|
BREAK
|
|
CASE TWS_NPC_VILLAGER
|
|
sNPCData[iCurrentNPCToAdd].fHealth = 0.4
|
|
sNPCData[iCurrentNPCToAdd].iNPCSize = 1
|
|
sNPCData[iCurrentNPCToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_NPC_VILLAGER_WIDTH, cfTWS_NPC_VILLAGER_HEIGHT)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].eType = TWS_ENTITY_NPC
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].iIndex = iCurrentNPCToAdd
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].fZIndex = vPos.Y + sNPCData[iCurrentNPCToAdd].vSpriteSize.y
|
|
|
|
SWITCH sNPCData[iCurrentNPCToAdd].eNPCType
|
|
CASE TWS_NPC_TWINS
|
|
CASE TWS_NPC_WOMAN
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(vPos.x + 60, vPos.y - 125), TWS_FX_HELP, 0)
|
|
BREAK
|
|
CASE TWS_NPC_VILLAGER
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(vPos.x + 125, vPos.y - 175), TWS_FX_HELP, 0)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
iCurrentNPCToAdd++
|
|
|
|
ENDPROC
|
|
PROC TWS_INIT_NPCS()
|
|
SWITCH sTWSData.eCurrentLevel
|
|
|
|
CASE TWS_FOREST_INTRO
|
|
TWS_ADD_NPC_TO_LIST(INIT_VECTOR_2D(cfBASE_SCREEN_WIDTH/3*2, cfBASE_SCREEN_HEIGHT/2), TWS_NPC_VILLAGER)
|
|
BREAK
|
|
CASE TWS_FOREST
|
|
TWS_ADD_NPC_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos+530, cfBASE_SCREEN_HEIGHT/5*2), TWS_NPC_WOMAN)
|
|
BREAK
|
|
CASE TWS_SWAMP
|
|
TWS_ADD_NPC_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos + 500, cfBASE_SCREEN_HEIGHT/5*2), TWS_NPC_TWINS)
|
|
BREAK
|
|
CASE TWS_CAVES
|
|
TWS_CREATE_FX(INIT_VECTOR_2D(sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos + 500, cfBASE_SCREEN_HEIGHT/5*1), TWS_FX_HELP, 0)
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
PROC TWS_INIT_LOCKED_BATTLES()
|
|
|
|
|
|
SWITCH sTWSData.eCurrentLevel
|
|
|
|
CASE TWS_FOREST
|
|
sTWSData.sLockedBattles[0].iTile = 4
|
|
sTWSData.sLockedBattles[0].iEnemies = 8
|
|
sTWSData.sLockedBattles[0].iEnemySize = 0
|
|
sTWSData.sLockedBattles[0].bSpawnEnemies = TRUE
|
|
|
|
sTWSData.sLockedBattles[1].iTile = 7
|
|
sTWSData.sLockedBattles[1].iEnemies = 6
|
|
sTWSData.sLockedBattles[1].iEnemySize = 1
|
|
sTWSData.sLockedBattles[1].bSpawnEnemies = TRUE
|
|
|
|
sTWSData.sLockedBattles[2].iTile = 10
|
|
sTWSData.sLockedBattles[2].iEnemies = 10
|
|
sTWSData.sLockedBattles[2].iEnemySize = 2
|
|
sTWSData.sLockedBattles[2].bSpawnEnemies = TRUE
|
|
|
|
BREAK
|
|
CASE TWS_SWAMP
|
|
sTWSData.sLockedBattles[0].iTile = 4
|
|
sTWSData.sLockedBattles[0].iEnemies = 8
|
|
sTWSData.sLockedBattles[0].iEnemySize = 0
|
|
sTWSData.sLockedBattles[0].bSpawnEnemies = TRUE
|
|
|
|
sTWSData.sLockedBattles[1].iTile = 7
|
|
sTWSData.sLockedBattles[1].iEnemies = 6
|
|
sTWSData.sLockedBattles[1].iEnemySize = 1
|
|
sTWSData.sLockedBattles[1].bSpawnEnemies = TRUE
|
|
|
|
sTWSData.sLockedBattles[2].iTile = 11
|
|
sTWSData.sLockedBattles[2].iEnemies = 10
|
|
sTWSData.sLockedBattles[2].iEnemySize = 2
|
|
sTWSData.sLockedBattles[2].bSpawnEnemies = TRUE
|
|
|
|
BREAK
|
|
CASE TWS_CAVES
|
|
|
|
sTWSData.sLockedBattles[0].iTile = 4
|
|
sTWSData.sLockedBattles[0].iEnemies = 5
|
|
sTWSData.sLockedBattles[0].iEnemySize = 1
|
|
sTWSData.sLockedBattles[0].bSpawnEnemies = TRUE
|
|
|
|
sTWSData.sLockedBattles[1].iTile = 9
|
|
sTWSData.sLockedBattles[1].iEnemies = 1
|
|
sTWSData.sLockedBattles[1].iEnemySize = 0
|
|
sTWSData.sLockedBattles[1].bSpawnEnemies = FALSE
|
|
|
|
sTWSData.sLockedBattles[2].iTile = 12
|
|
sTWSData.sLockedBattles[2].iEnemies = 5
|
|
sTWSData.sLockedBattles[2].iEnemySize = 1
|
|
sTWSData.sLockedBattles[2].bSpawnEnemies = TRUE
|
|
|
|
BREAK
|
|
CASE TWS_CASTLE
|
|
sTWSData.sLockedBattles[0].iTile = 4
|
|
sTWSData.sLockedBattles[0].iEnemies = 8
|
|
sTWSData.sLockedBattles[0].iEnemySize = 2
|
|
sTWSData.sLockedBattles[0].iSpawnTime = 3000
|
|
sTWSData.sLockedBattles[0].bSpawnEnemies = TRUE
|
|
|
|
sTWSData.sLockedBattles[1].iTile = 8
|
|
sTWSData.sLockedBattles[1].iEnemies = 20
|
|
sTWSData.sLockedBattles[1].iEnemySize = 1
|
|
sTWSData.sLockedBattles[1].iSpawnTime = 800
|
|
sTWSData.sLockedBattles[1].bSpawnEnemies = TRUE
|
|
|
|
sTWSData.sLockedBattles[2].iTile = 13
|
|
sTWSData.sLockedBattles[2].iEnemies = 8
|
|
sTWSData.sLockedBattles[2].iEnemySize = 3
|
|
sTWSData.sLockedBattles[2].iSpawnTime = 3000
|
|
sTWSData.sLockedBattles[2].bSpawnEnemies = TRUE
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
// Enemies
|
|
FUNC FLOAT TWS_GET_ENEMY_SHADOW_X_OFFSET(INT iIndex, BOOL bFacingRight = FALSE)
|
|
|
|
IF bFacingRight
|
|
RETURN - sEnemyData[iIndex].vShadowOffset.x
|
|
ELSE
|
|
RETURN sEnemyData[iIndex].vShadowOffset.x
|
|
ENDIF
|
|
|
|
ENDFUNC
|
|
|
|
FUNC FLOAT TWS_GET_ENEMY_SHADOW_Y_POSITION(TWS_ENEMY_TYPE eType)
|
|
|
|
FLOAT fEnemyHeight = 0.0
|
|
|
|
SWITCH eType
|
|
CASE TWS_ENEMY_BRUTE
|
|
fEnemyHeight = cfTWS_BRUTE_IDLE_HEIGHT - 20.0
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_BRUTE_AXE
|
|
fEnemyHeight = cfTWS_BRUTE_AXE_IDLE_HEIGHT - 20.0
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT
|
|
fEnemyHeight = cfTWS_GRUNT_IDLE_HEIGHT
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_SWORD
|
|
fEnemyHeight = cfTWS_GRUNT_SWORD_IDLE_HEIGHT - 10.0
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_FIRESWORD
|
|
fEnemyHeight = cfTWS_GRUNT_FIRESWORD_IDLE_HEIGHT - 10.0
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_FIRESPEAR
|
|
CASE TWS_ENEMY_GRUNT_SPEAR
|
|
fEnemyHeight = cfTWS_GRUNT_SPEAR_IDLE_HEIGHT - 10.0
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW
|
|
fEnemyHeight = cfTWS_GRUNT_CROSSBOW_IDLE_HEIGHT - 10.0
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_CASTER
|
|
fEnemyHeight = cfTWS_GRUNT_CASTER_IDLE_HEIGHT - 10.0
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_BAT
|
|
fEnemyHeight = cfTWS_BAT_IDLE_HEIGHT
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_SLIME
|
|
fEnemyHeight = cfTWS_SLIME_IDLE_HEIGHT
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_SNAKE
|
|
fEnemyHeight = cfTWS_SNAKE_IDLE_HEIGHT
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_BOULDER
|
|
fEnemyHeight = cfTWS_BOULDER_WALK_HEIGHT
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_FAIRY
|
|
fEnemyHeight = cfTWS_FAIRY_IDLE_HEIGHT
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_SPIDER
|
|
fEnemyHeight = cfTWS_SPIDER_IDLE_HEIGHT - 10.0
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_LEPRECHAUN
|
|
fEnemyHeight = cfTWS_LEPRECHAUN_IDLE_HEIGHT
|
|
|
|
BREAK
|
|
|
|
CASE TWS_ENEMY_BOSS_KNIGHT
|
|
CASE TWS_ENEMY_KNIGHT
|
|
fEnemyHeight = cfTWS_BOSS_KNIGHT_IDLE_HEIGHT - 10.0
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_BOSS_AMAZON
|
|
fEnemyHeight = cfTWS_BOSS_AMAZON_IDLE_HEIGHT
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_BOSS_SPIDER
|
|
fEnemyHeight = cfTWS_BOSS_SPIDER_IDLE_HEIGHT
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_BOSS_WIZARD
|
|
CASE TWS_ENEMY_FAKE_WIZARD
|
|
fEnemyHeight = cfTWS_WIZARD_GEN_HEIGHT
|
|
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
RETURN fEnemyHeight
|
|
ENDFUNC
|
|
|
|
PROC TWS_SET_ENEMY_STATE(INT iEnemy, TWS_ENEMY_STATE eState)
|
|
|
|
CDEBUG2LN(DEBUG_MINIGAME, "[TWS_ARCADE] [GD] Enemy ",iEnemy," changing from state ",sEnemyData[iEnemy].eEnemyState," to state ",eState)
|
|
|
|
sEnemyData[iEnemy].eEnemyState = eState
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(0.0,0.0)
|
|
|
|
SWITCH sEnemyData[iEnemy].eEnemyType
|
|
CASE TWS_ENEMY_BRUTE
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_IDLE_WIDTH, cfTWS_BRUTE_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_WALK_WIDTH, cfTWS_BRUTE_WALK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_ATTACK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_ATTACK_WIDTH, cfTWS_BRUTE_ATTACK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_FALL
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_FALL_WIDTH, cfTWS_BRUTE_FALL_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(40.0,-20.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_FLAT
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_FLAT_WIDTH, cfTWS_BRUTE_FLAT_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_GETTING_UP
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_GETTINGUP1_WIDTH, cfTWS_BRUTE_GETTINGUP1_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_STUN_WIDTH, cfTWS_BRUTE_STUN_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(100.0,-16.0)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_BRUTE_AXE
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_AXE_IDLE_WIDTH, cfTWS_BRUTE_AXE_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_AXE_WALK_WIDTH, cfTWS_BRUTE_AXE_WALK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_ATTACK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_AXE_ATTACK_WIDTH, cfTWS_BRUTE_AXE_ATTACK_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(-16.0,-50.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_FALL
|
|
CASE TWS_ENEMY_FLAT
|
|
CASE TWS_ENEMY_GETTING_UP
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_AXE_FALL_WIDTH, cfTWS_BRUTE_AXE_FALL_HEIGHT)
|
|
BREAK
|
|
|
|
CASE TWS_ENEMY_STUN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_AXE_STUN_WIDTH, cfTWS_BRUTE_AXE_STUN_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(70.0,4.0)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_IDLE_WIDTH, cfTWS_GRUNT_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_WALK_WIDTH, cfTWS_GRUNT_WALK_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(-6.0, -34.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_ATTACK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_ATTACK_WIDTH, cfTWS_GRUNT_ATTACK_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(-52.0, -16.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_FALL
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_FALL_WIDTH, cfTWS_GRUNT_FALL_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_FLAT
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_FLAT_WIDTH, cfTWS_GRUNT_FLAT_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_GETTING_UP
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_GETTINGUP1_WIDTH, cfTWS_GRUNT_GETTINGUP1_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_STUN_WIDTH, cfTWS_GRUNT_STUN_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(100.0, -22.0)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_SWORD
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_SWORD_IDLE_WIDTH, cfTWS_GRUNT_SWORD_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_SWORD_WALK_WIDTH, cfTWS_GRUNT_SWORD_WALK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_ATTACK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_SWORD_ATTACK_WIDTH, cfTWS_GRUNT_SWORD_ATTACK_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(0.0, -50)
|
|
BREAK
|
|
CASE TWS_ENEMY_FALL
|
|
CASE TWS_ENEMY_FLAT
|
|
CASE TWS_ENEMY_GETTING_UP
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_SWORD_FALL_WIDTH, cfTWS_GRUNT_SWORD_FALL_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(0.0, 50)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_SWORD_STUN_WIDTH, cfTWS_GRUNT_SWORD_STUN_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(10.0, 40)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_FIRESWORD
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_FIRESWORD_IDLE_WIDTH, cfTWS_GRUNT_FIRESWORD_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_FIRESWORD_WALK_WIDTH, cfTWS_GRUNT_FIRESWORD_WALK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_ATTACK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_FIRESWORD_ATTACK_WIDTH, cfTWS_GRUNT_FIRESWORD_ATTACK_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(-4.0,-48.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_FALL
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_FIRESWORD_FALL_WIDTH, cfTWS_GRUNT_FIRESWORD_FALL_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_FLAT
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_FIRESWORD_FALL_WIDTH, cfTWS_GRUNT_FIRESWORD_FALL_WIDTH)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(0.0, 45.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_GETTING_UP
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_FIRESWORD_FALL_WIDTH, cfTWS_GRUNT_FIRESWORD_FALL_WIDTH)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_FIRESWORD_STUN_WIDTH, cfTWS_GRUNT_FIRESWORD_STUN_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(56.0, 40.0)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_FIRESPEAR
|
|
CASE TWS_ENEMY_GRUNT_SPEAR
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_SPEAR_IDLE_WIDTH, cfTWS_GRUNT_SPEAR_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_SPEAR_WALK_WIDTH, cfTWS_GRUNT_SPEAR_WALK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_ATTACK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_SPEAR_ATTACK_WIDTH, cfTWS_GRUNT_SPEAR_ATTACK_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(-30.0,0.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_FALL
|
|
CASE TWS_ENEMY_FLAT
|
|
CASE TWS_ENEMY_GETTING_UP
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_SPEAR_FALL_WIDTH, cfTWS_GRUNT_SPEAR_FALL_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(0.0, 45.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_SPEAR_STUN_WIDTH, cfTWS_GRUNT_SPEAR_STUN_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(40.0,40.0)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_CROSSBOW_IDLE_WIDTH, cfTWS_GRUNT_CROSSBOW_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_CROSSBOW_WALK_WIDTH, cfTWS_GRUNT_CROSSBOW_WALK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_ATTACK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_CROSSBOW_ATTACK_WIDTH, cfTWS_GRUNT_CROSSBOW_ATTACK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_FALL
|
|
CASE TWS_ENEMY_FLAT
|
|
CASE TWS_ENEMY_GETTING_UP
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_CROSSBOW_FALL_WIDTH, cfTWS_GRUNT_CROSSBOW_FALL_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(0.0, 50)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_CROSSBOW_STUN_WIDTH, cfTWS_GRUNT_CROSSBOW_STUN_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(50.0,45.0)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_CASTER
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_CASTER_IDLE_WIDTH, cfTWS_GRUNT_CASTER_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_ATTACK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_CASTER_ATTACK_WIDTH, cfTWS_GRUNT_CASTER_ATTACK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
CASE TWS_ENEMY_DYING
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_CASTER_DEATH_WIDTH, cfTWS_GRUNT_CASTER_DEATH_HEIGHT)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_BAT
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BAT_IDLE_WIDTH, cfTWS_BAT_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BAT_FLY_WIDTH, cfTWS_BAT_FLY_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_GLIDE_DOWN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BAT_FLY_WIDTH, cfTWS_BAT_FLY_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
CASE TWS_ENEMY_DEAD
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BAT_DIE_WIDTH, cfTWS_BAT_DIE_HEIGHT)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_SLIME
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_SLIME_IDLE_WIDTH, cfTWS_SLIME_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_SLIME_WALK_WIDTH, cfTWS_SLIME_WALK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_GLIDE_DOWN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_SLIME_WALK_WIDTH, cfTWS_SLIME_WALK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_SLIME_STUN_WIDTH, cfTWS_SLIME_STUN_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DYING
|
|
CASE TWS_ENEMY_DEAD
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_SLIME_DIE_WIDTH, cfTWS_SLIME_DIE_HEIGHT)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_SNAKE
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_SNAKE_IDLE_WIDTH, cfTWS_SNAKE_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DYING
|
|
CASE TWS_ENEMY_DEAD
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_SNAKE_DIE_WIDTH, cfTWS_SNAKE_DIE_HEIGHT)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_BOULDER
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOULDER_WALK_WIDTH, cfTWS_BOULDER_WALK_HEIGHT)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_FAIRY
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_FAIRY_IDLE_WIDTH, cfTWS_FAIRY_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
CASE TWS_ENEMY_ATTACK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_FAIRY_ATTACK_WIDTH, cfTWS_FAIRY_ATTACK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
CASE TWS_ENEMY_DEAD
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_FAIRY_DIE_WIDTH, cfTWS_FAIRY_DIE_HEIGHT)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_SPIDER
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_SPIDER_IDLE_WIDTH, cfTWS_SPIDER_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_SPIDER_WALK_WIDTH, cfTWS_SPIDER_WALK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_GLIDE_DOWN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_SPIDER_WEB_WIDTH, cfTWS_SPIDER_WEB_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_SPIDER_STUN_DEAD_WIDTH, cfTWS_SPIDER_STUN_DEAD_HEIGHT)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_LEPRECHAUN
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_LEPRECHAUN_IDLE_WIDTH, cfTWS_LEPRECHAUN_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_LEPRECHAUN_WALK_WIDTH, cfTWS_LEPRECHAUN_WALK_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(0.0, -56.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_ATTACK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_LEPRECHAUN_ATTACK_WIDTH, cfTWS_LEPRECHAUN_ATTACK_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(0.0,-120.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_FALL
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_LEPRECHAUN_HURT_WIDTH, cfTWS_LEPRECHAUN_HURT_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DYING
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_LEPRECHAUN_DEAD_WIDTH, cfTWS_LEPRECHAUN_DEAD_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(0.0,16.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_GO_UP
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_LEPRECHAUN_SPAWN_WIDTH, cfTWS_LEPRECHAUN_SPAWN_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(0.0,-64.0)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
|
|
CASE TWS_ENEMY_BOSS_KNIGHT
|
|
CASE TWS_ENEMY_KNIGHT
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_IDLE_WIDTH, cfTWS_BOSS_KNIGHT_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_INACTIVE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_KNEE_WIDTH, cfTWS_BOSS_KNIGHT_KNEE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DYING_1
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_DYING_1_WIDTH, cfTWS_BOSS_KNIGHT_DYING_1_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DYING_2
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_DYING_2_WIDTH, cfTWS_BOSS_KNIGHT_DYING_2_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DYING_3
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_DYING_3_WIDTH, cfTWS_BOSS_KNIGHT_DYING_3_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DYING_4
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_DYING_4_WIDTH, cfTWS_BOSS_KNIGHT_DYING_4_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DYING_5
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_DYING_5_WIDTH, cfTWS_BOSS_KNIGHT_DYING_5_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DYING_6
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_DYING_6_WIDTH, cfTWS_BOSS_KNIGHT_DYING_6_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DYING_7
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_DYING_7_WIDTH, cfTWS_BOSS_KNIGHT_DYING_7_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DYING_8
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_DYING_8_WIDTH, cfTWS_BOSS_KNIGHT_DYING_8_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DEAD
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_DEAD_WIDTH, cfTWS_BOSS_KNIGHT_DEAD_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
CASE TWS_ENEMY_FALL
|
|
CASE TWS_ENEMY_GETTING_UP
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_HURT_WIDTH, cfTWS_BOSS_KNIGHT_HURT_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_WALK_WIDTH, cfTWS_BOSS_KNIGHT_WALK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_ATTACK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_SLASH_WIDTH, cfTWS_BOSS_KNIGHT_SLASH_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(-60.0,-56.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_SPECIAL_ATTACK
|
|
CASE TWS_ENEMY_SPECIAL_ATTACK_2
|
|
CASE TWS_ENEMY_SPECIAL_ATTACK_3
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_SLAM_WIDTH, cfTWS_BOSS_KNIGHT_SLAM_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(-44.0, 10.0)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_BOSS_AMAZON
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_AMAZON_IDLE_WIDTH, cfTWS_BOSS_AMAZON_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
CASE TWS_ENEMY_FALL
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_AMAZON_HURT_WIDTH, cfTWS_BOSS_AMAZON_HURT_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(54.0, -6.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_FLAT
|
|
CASE TWS_ENEMY_DEAD
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_AMAZON_HURT_WIDTH, cfTWS_BOSS_AMAZON_HURT_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(0.0, 32.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_WALK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_AMAZON_WALK_WIDTH, cfTWS_BOSS_AMAZON_WALK_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(0.0, -24.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_GO_UP
|
|
CASE TWS_ENEMY_FALL_OVER_1
|
|
CASE TWS_ENEMY_TELEPORT_IN
|
|
CASE TWS_ENEMY_TELEPORT_OUT
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_AMAZON_JUMP_WIDTH, cfTWS_BOSS_AMAZON_JUMP_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_LANDING
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_AMAZON_JUMP_LAND_WIDTH, cfTWS_BOSS_AMAZON_JUMP_LAND_HEIGHT)
|
|
sEnemyData[iEnemy].vSpriteOffset = INIT_VECTOR_2D(0.0, 28.0)
|
|
BREAK
|
|
CASE TWS_ENEMY_ATTACK_LOAD
|
|
CASE TWS_ENEMY_ATTACK_WAIT
|
|
CASE TWS_ENEMY_ATTACK_HIT
|
|
CASE TWS_ENEMY_SPECIAL_ATTACK_2
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_AMAZON_ATTACK_WIDTH, cfTWS_BOSS_AMAZON_ATTACK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_SPECIAL_ATTACK
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_AMAZON_ATTACK_JUMP_WIDTH, cfTWS_BOSS_AMAZON_ATTACK_JUMP_HEIGHT)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_BOSS_SPIDER
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_SPIDER_IDLE_WIDTH, cfTWS_BOSS_SPIDER_IDLE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_ATTACK
|
|
CASE TWS_ENEMY_ATTACK_LOAD
|
|
CASE TWS_ENEMY_ATTACK_WAIT
|
|
CASE TWS_ENEMY_ATTACK_HIT
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_SPIDER_ATTACK_WIDTH, cfTWS_BOSS_SPIDER_ATTACK_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_SPIT_1
|
|
CASE TWS_ENEMY_SPIT_2
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_SPIDER_SPIT_WIDTH, cfTWS_BOSS_SPIDER_SPIT_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DEAD
|
|
CASE TWS_ENEMY_DYING
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_SPIDER_DEAD_WIDTH, cfTWS_BOSS_SPIDER_DEAD_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_SPIDER_STUN_WIDTH, cfTWS_BOSS_SPIDER_STUN_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_GLIDE_DOWN
|
|
CASE TWS_ENEMY_GO_UP
|
|
CASE TWS_ENEMY_FALL_OVER_1
|
|
CASE TWS_ENEMY_FALL_OVER_2
|
|
CASE TWS_ENEMY_LANDING
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_SPIDER_GLIDE_WIDTH, cfTWS_BOSS_SPIDER_GLIDE_HEIGHT)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TWS_ENEMY_BOSS_WIZARD
|
|
CASE TWS_ENEMY_FAKE_WIZARD
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_IDLE
|
|
CASE TWS_ENEMY_TELEPORT_IN
|
|
CASE TWS_ENEMY_TELEPORT_OUT
|
|
CASE TWS_ENEMY_SPECIAL_ATTACK
|
|
CASE TWS_ENEMY_SPECIAL_ATTACK_2
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_WIZARD_GEN_WIDTH, cfTWS_WIZARD_GEN_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_STUN
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_WIZARD_STUN_WIDTH, cfTWS_WIZARD_STUN_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_EXPLODING
|
|
CASE TWS_ENEMY_DYING
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(cfTWS_WIZARD_DIE_WIDTH, cfTWS_WIZARD_DIE_HEIGHT)
|
|
BREAK
|
|
CASE TWS_ENEMY_DEAD
|
|
sEnemyData[iEnemy].vSpriteSize = INIT_VECTOR_2D(0, 0)
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
FUNC BOOL TWS_ADD_ENEMY_TO_LIST(VECTOR_2D vPos, TWS_ENEMY_TYPE eType, BOOL bIsBattleEnemy = FALSE)
|
|
|
|
iCurrentEnemyToAdd = TWS_GET_NEXT_EMPTY_SLOT_FOR_ENEMY()
|
|
IF iCurrentEnemyToAdd = -1
|
|
CERRORLN(DEBUG_MINIGAME, "Error: could not spawn enemy. Array is full!")
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
INT iCurrentDrawCallToAdd = TWS_GET_NEXT_EMPTY_SLOT_FOR_DRAW_CALL()
|
|
|
|
sEnemyData[iCurrentEnemyToAdd].bIsActive = TRUE
|
|
sEnemyData[iCurrentEnemyToAdd].bIsAttacking = FALSE
|
|
sEnemyData[iCurrentEnemyToAdd].bIsHit = FALSE
|
|
sEnemyData[iCurrentEnemyToAdd].bIsMoving = FALSE
|
|
sEnemyData[iCurrentEnemyToAdd].vSpritePos = vPos
|
|
sEnemyData[iCurrentEnemyToAdd].vInitialPos = vPos
|
|
sEnemyData[iCurrentEnemyToAdd].vTargetPos = vPos
|
|
sEnemyData[iCurrentEnemyToAdd].eEnemyType = eType
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 1.0
|
|
sEnemyData[iCurrentEnemyToAdd].iSpriteAnimFrame = 0
|
|
sEnemyData[iCurrentEnemyToAdd].iNumberOfAttacksInARow = 0
|
|
sEnemyData[iCurrentEnemyToAdd].iTimer = GET_GAME_TIMER()
|
|
sEnemyData[iCurrentEnemyToAdd].eEnemyState = TWS_ENEMY_IDLE
|
|
sEnemyData[iCurrentEnemyToAdd].eNextState = TWS_ENEMY_IDLE
|
|
|
|
SWITCH sEnemyData[iCurrentEnemyToAdd].eEnemyType
|
|
|
|
// FOREST
|
|
CASE TWS_ENEMY_BOSS_KNIGHT
|
|
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 1.0
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 1
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 6
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_KNEE_WIDTH, cfTWS_BOSS_KNIGHT_KNEE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].eEnemyState = TWS_ENEMY_INACTIVE
|
|
|
|
sTWSData.iBossEnemyIndex = iCurrentEnemyToAdd
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_SWORD
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.3
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 1
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 5
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_SWORD_IDLE_WIDTH, cfTWS_GRUNT_SWORD_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.x = 40.0
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.1
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 1
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 6
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_CROSSBOW_IDLE_WIDTH, cfTWS_GRUNT_CROSSBOW_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.x = 40.0
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_SPEAR
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.3
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 1
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 4
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_SPEAR_IDLE_WIDTH, cfTWS_GRUNT_SPEAR_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.x = 40.0
|
|
BREAK
|
|
CASE TWS_ENEMY_FAIRY
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.2
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 0
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 3
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FAIRY_IDLE_WIDTH, cfTWS_FAIRY_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.y = cfBASE_SCREEN_HEIGHT/3*2
|
|
BREAK
|
|
CASE TWS_ENEMY_LEPRECHAUN
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.1
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 0
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 11
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_LEPRECHAUN_IDLE_WIDTH, cfTWS_LEPRECHAUN_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].eEnemyState = TWS_ENEMY_INVISIBLE
|
|
BREAK
|
|
|
|
// SWAMP
|
|
CASE TWS_ENEMY_BOSS_AMAZON
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 1.0
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 2
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 6
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_AMAZON_IDLE_WIDTH, cfTWS_BOSS_AMAZON_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].eEnemyState = TWS_ENEMY_INACTIVE
|
|
|
|
sTWSData.iBossEnemyIndex = iCurrentEnemyToAdd
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_BRUTE_AXE
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.8
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 1
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 6
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_AXE_IDLE_WIDTH, cfTWS_BRUTE_AXE_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.x = 10.0
|
|
BREAK
|
|
CASE TWS_ENEMY_SLIME
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.1
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 0
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 1
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_SLIME_IDLE_WIDTH, cfTWS_SLIME_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].eEnemyState = TWS_ENEMY_INVISIBLE
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.y = -1.0
|
|
BREAK
|
|
CASE TWS_ENEMY_SNAKE
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.1
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 0
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 1
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_SNAKE_IDLE_WIDTH, cfTWS_SNAKE_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.y = -1.0
|
|
BREAK
|
|
|
|
// CAVES
|
|
CASE TWS_ENEMY_BOSS_SPIDER
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 1.0
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 3
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 6
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_SPIDER_IDLE_WIDTH, cfTWS_BOSS_SPIDER_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].eEnemyState = TWS_ENEMY_INACTIVE
|
|
|
|
sTWSData.iBossEnemyIndex = iCurrentEnemyToAdd
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.6
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 1
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 5
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_IDLE_WIDTH, cfTWS_GRUNT_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.x = 30.0
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_BRUTE
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 1.0
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 1
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 6
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_BRUTE_IDLE_WIDTH, cfTWS_BRUTE_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.x = 10.0
|
|
BREAK
|
|
CASE TWS_ENEMY_KNIGHT
|
|
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 1.6
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 1
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 6
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOSS_KNIGHT_KNEE_WIDTH, cfTWS_BOSS_KNIGHT_KNEE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].eEnemyState = TWS_ENEMY_INACTIVE
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_BAT
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.1
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 0
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 1
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_BAT_IDLE_WIDTH, cfTWS_BAT_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.y = cfBASE_SCREEN_HEIGHT/3*2 - cfTWS_BAT_FLY_HEIGHT
|
|
BREAK
|
|
CASE TWS_ENEMY_SPIDER
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.3
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 1
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 1
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_SPIDER_WEB_WIDTH, cfTWS_SPIDER_WEB_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].iTimer = GET_GAME_TIMER()
|
|
sEnemyData[iCurrentEnemyToAdd].eEnemyState = TWS_ENEMY_INACTIVE
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.y = cfBASE_SCREEN_HEIGHT/2 + cfTWS_SPIDER_WEB_HEIGHT
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.x = -10.0
|
|
BREAK
|
|
|
|
// CASTLE
|
|
|
|
CASE TWS_ENEMY_BOSS_WIZARD
|
|
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 1.0
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 3
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 9
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.y = -1.0
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_WIZARD_GEN_WIDTH, cfTWS_WIZARD_GEN_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].eEnemyState = TWS_ENEMY_INACTIVE
|
|
|
|
sTWSData.iBossEnemyIndex = iCurrentEnemyToAdd
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_FAKE_WIZARD
|
|
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.1
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 3
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 9
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.y = -1.0
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_WIZARD_GEN_WIDTH, cfTWS_WIZARD_GEN_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].eEnemyState = TWS_ENEMY_INACTIVE
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_DIALOGUE_WIZARD
|
|
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.1
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 3
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 9
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.y = -1.0
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_WIZARD_GEN_WIDTH, cfTWS_WIZARD_GEN_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].eEnemyState = TWS_ENEMY_INACTIVE
|
|
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_FIRESWORD
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 1.2
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 1
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 5
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_FIRESWORD_IDLE_WIDTH, cfTWS_GRUNT_FIRESWORD_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.x = 40.0
|
|
BREAK
|
|
|
|
CASE TWS_ENEMY_GRUNT_FIRESPEAR
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 1.2
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 1
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 4
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_SPEAR_IDLE_WIDTH, cfTWS_GRUNT_SPEAR_IDLE_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.x = 40.0
|
|
BREAK
|
|
CASE TWS_ENEMY_GRUNT_CASTER
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 0.1
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 1
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 6
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_GRUNT_CASTER_IDLE_WIDTH, cfTWS_GRUNT_CASTER_IDLE_HEIGHT)
|
|
BREAK
|
|
|
|
CASE TWS_ENEMY_BOULDER
|
|
sEnemyData[iCurrentEnemyToAdd].fHealth = 10.0
|
|
sEnemyData[iCurrentEnemyToAdd].iEnemySize = 0
|
|
sEnemyData[iCurrentEnemyToAdd].iAttackFrame = 1
|
|
sEnemyData[iCurrentEnemyToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_BOULDER_WALK_WIDTH, cfTWS_BOULDER_WALK_HEIGHT)
|
|
sEnemyData[iCurrentEnemyToAdd].vShadowOffset.y = -1.0
|
|
sEnemyData[iCurrentEnemyToAdd].eEnemyState = TWS_ENEMY_INVISIBLE
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
IF bIsBattleEnemy
|
|
sEnemyData[iCurrentEnemyToAdd].vTargetPos = sPlayerData.vSpritePos
|
|
sEnemyData[iCurrentEnemyToAdd].bIsBattleEnemy = TRUE
|
|
|
|
IF sEnemyData[iCurrentEnemyToAdd].eEnemyType != TWS_ENEMY_BAT
|
|
AND sEnemyData[iCurrentEnemyToAdd].eEnemyType != TWS_ENEMY_SPIDER
|
|
AND sEnemyData[iCurrentEnemyToAdd].eEnemyType != TWS_ENEMY_KNIGHT
|
|
AND sEnemyData[iCurrentEnemyToAdd].eEnemyType != TWS_ENEMY_LEPRECHAUN
|
|
AND sEnemyData[iCurrentEnemyToAdd].eEnemyType != TWS_ENEMY_SLIME
|
|
TWS_SET_ENEMY_STATE(iCurrentEnemyToAdd, TWS_ENEMY_WALK)
|
|
TWS_ARCADE_GAMES_SOUND_PLAY_AT_POSITION(TWS_GET_AGGRO_SOUND_FOR_ENEMY(eType), TWS_GET_SOUND_POSITION_FOR_ENEMY(iCurrentEnemyToAdd))
|
|
ENDIF
|
|
|
|
IF sEnemyData[iCurrentEnemyToAdd].eEnemyType = TWS_ENEMY_GRUNT_CROSSBOW
|
|
OR sEnemyData[iCurrentEnemyToAdd].eEnemyType = TWS_ENEMY_GRUNT_CASTER
|
|
IF sEnemyData[iCurrentEnemyToAdd].vSpritePos.x > sTWSData.fLockedScreenPos
|
|
sEnemyData[iCurrentEnemyToAdd].vTargetPos = INIT_VECTOR_2D(sTWSData.fLockedScreenPos + 300, sPlayerData.vSpritePos.y)
|
|
ELSE
|
|
sEnemyData[iCurrentEnemyToAdd].vTargetPos = INIT_VECTOR_2D(sTWSData.fLockedScreenPos - 300, sPlayerData.vSpritePos.y)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].eType = TWS_ENTITY_ENEMY
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].iIndex = iCurrentEnemyToAdd
|
|
sTWSData.sDrawCalls[iCurrentDrawCallToAdd].fZIndex = vPos.Y + sEnemyData[iCurrentEnemyToAdd].vSpriteSize.y
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
PROC TWS_INIT_ENEMIES()
|
|
|
|
SWITCH sTWSData.eCurrentLevel
|
|
|
|
CASE TWS_FOREST
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[0].fSpritePos + cfGAME_SCREEN_WIDTH*0.55, 680), TWS_ENEMY_LEPRECHAUN)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[0].fSpritePos + cfGAME_SCREEN_WIDTH*0.75, 750), TWS_ENEMY_LEPRECHAUN)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[1].fSpritePos + cfGAME_SCREEN_WIDTH*0.4, -50), TWS_ENEMY_FAIRY)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[1].fSpritePos + cfGAME_SCREEN_WIDTH*0.55, -50), TWS_ENEMY_FAIRY)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[2].fSpritePos + cfGAME_SCREEN_WIDTH*0.1, 550), TWS_ENEMY_GRUNT_SWORD)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[2].fSpritePos + cfGAME_SCREEN_WIDTH*0.3, 700), TWS_ENEMY_GRUNT_SWORD)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[2].fSpritePos + cfGAME_SCREEN_WIDTH*0.55, 700), TWS_ENEMY_LEPRECHAUN)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.55, 580), TWS_ENEMY_GRUNT_SPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.7, 750), TWS_ENEMY_GRUNT_SPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.9, 850), TWS_ENEMY_FAIRY)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.85, 650), TWS_ENEMY_FAIRY)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*0.3, 800), TWS_ENEMY_GRUNT_SPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*0.2, 700), TWS_ENEMY_GRUNT_SPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*0.55, 700), TWS_ENEMY_LEPRECHAUN)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*0.78, 800), TWS_ENEMY_LEPRECHAUN)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*0.9, 800), TWS_ENEMY_LEPRECHAUN)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.4, -50), TWS_ENEMY_FAIRY)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.7, -50), TWS_ENEMY_FAIRY)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.8, -50), TWS_ENEMY_FAIRY)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.95, 580), TWS_ENEMY_GRUNT_CROSSBOW)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.8, 660), TWS_ENEMY_GRUNT_CROSSBOW)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[8].fSpritePos + cfGAME_SCREEN_WIDTH*0.3, 550), TWS_ENEMY_GRUNT_SWORD)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[8].fSpritePos + cfGAME_SCREEN_WIDTH*0.45, 700), TWS_ENEMY_GRUNT_SWORD)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[8].fSpritePos + cfGAME_SCREEN_WIDTH*0.6, 550), TWS_ENEMY_GRUNT_SWORD)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[8].fSpritePos + cfGAME_SCREEN_WIDTH*0.7, 750), TWS_ENEMY_GRUNT_CROSSBOW)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.6, 550), TWS_ENEMY_GRUNT_SPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.63, 600), TWS_ENEMY_GRUNT_SPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.60, 650), TWS_ENEMY_GRUNT_SPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.63, 700), TWS_ENEMY_GRUNT_SPEAR)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[10].fSpritePos + cfGAME_SCREEN_WIDTH*0.2, 800), TWS_ENEMY_GRUNT_CROSSBOW)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[10].fSpritePos + cfGAME_SCREEN_WIDTH*0.3, 550), TWS_ENEMY_GRUNT_CROSSBOW)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos + cfGAME_SCREEN_WIDTH*0.4, 550), TWS_ENEMY_BOSS_KNIGHT)
|
|
|
|
BREAK
|
|
CASE TWS_SWAMP
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[0].fSpritePos + cfGAME_SCREEN_WIDTH*0.75, 580), TWS_ENEMY_SNAKE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[0].fSpritePos + cfGAME_SCREEN_WIDTH*0.95, 650), TWS_ENEMY_SNAKE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[0].fSpritePos + cfGAME_SCREEN_WIDTH*0.75, 850), TWS_ENEMY_SNAKE)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[1].fSpritePos + cfGAME_SCREEN_WIDTH*0.1, 550), TWS_ENEMY_GRUNT_SWORD)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[1].fSpritePos + cfGAME_SCREEN_WIDTH*0.3, 700), TWS_ENEMY_GRUNT_SWORD)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[2].fSpritePos + cfGAME_SCREEN_WIDTH*0.2, -50), TWS_ENEMY_SLIME)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[2].fSpritePos + cfGAME_SCREEN_WIDTH*0.8, -150), TWS_ENEMY_SLIME)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.0, -150), TWS_ENEMY_SLIME)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.2, -150), TWS_ENEMY_SLIME)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.55, 580), TWS_ENEMY_BRUTE_AXE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.7, 750), TWS_ENEMY_BRUTE_AXE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.9, 850), TWS_ENEMY_GRUNT_SWORD)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.85, 650), TWS_ENEMY_GRUNT_SWORD)
|
|
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*0.3, 800), TWS_ENEMY_SNAKE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*0.2, 700), TWS_ENEMY_SNAKE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*0.55, 600), TWS_ENEMY_BRUTE_AXE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*0.78, 700), TWS_ENEMY_BRUTE_AXE)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.4, 700), TWS_ENEMY_SNAKE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.7, 600), TWS_ENEMY_SNAKE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.8, 750), TWS_ENEMY_GRUNT_SPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.95, 580), TWS_ENEMY_GRUNT_SPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.8, 660), TWS_ENEMY_SLIME)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[8].fSpritePos + cfGAME_SCREEN_WIDTH*0.5, 550), TWS_ENEMY_GRUNT_CROSSBOW)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[8].fSpritePos + cfGAME_SCREEN_WIDTH*0.65, 700), TWS_ENEMY_GRUNT_CROSSBOW)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[8].fSpritePos + cfGAME_SCREEN_WIDTH*0.9, 550), TWS_ENEMY_SLIME)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[8].fSpritePos + cfGAME_SCREEN_WIDTH*1.0, 750), TWS_ENEMY_GRUNT_SPEAR)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.6, 525), TWS_ENEMY_BRUTE_AXE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.63, 600), TWS_ENEMY_BRUTE_AXE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.60, 725), TWS_ENEMY_BRUTE_AXE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.63, 850), TWS_ENEMY_BRUTE_AXE)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[10].fSpritePos + cfGAME_SCREEN_WIDTH*0.4, 800), TWS_ENEMY_GRUNT_SWORD)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[10].fSpritePos + cfGAME_SCREEN_WIDTH*0.5, 550), TWS_ENEMY_GRUNT_SWORD)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.63,800), TWS_ENEMY_SNAKE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.60,650), TWS_ENEMY_SNAKE)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos + cfGAME_SCREEN_WIDTH*0.4, 690), TWS_ENEMY_BOSS_AMAZON)
|
|
|
|
BREAK
|
|
CASE TWS_CAVES
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH + 450, 150), TWS_ENEMY_BAT)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH + 1050, 660), TWS_ENEMY_GRUNT)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*2 + 450, 150), TWS_ENEMY_BAT)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*2 + 700, 660), TWS_ENEMY_GRUNT)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*3 + 850, 560), TWS_ENEMY_GRUNT)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*3 + 450, 150), TWS_ENEMY_BAT)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*3 + 750, 180), TWS_ENEMY_BAT)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*5 + 550, -50), TWS_ENEMY_SPIDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*5 + 850, -50), TWS_ENEMY_SPIDER)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*6 + 550, -50), TWS_ENEMY_SPIDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*6 + 1050, 560), TWS_ENEMY_GRUNT)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*7 + 550, -50), TWS_ENEMY_SPIDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*7 + 850, -50), TWS_ENEMY_SPIDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*7 + 250, 560), TWS_ENEMY_BRUTE)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*8 + 450, 100), TWS_ENEMY_BAT)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*8 + 550, 80), TWS_ENEMY_BAT)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*9 + 1350, 660), TWS_ENEMY_KNIGHT, TRUE)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*10 + 1150, 660), TWS_ENEMY_BRUTE)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*10 + 1100, 80), TWS_ENEMY_BAT)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*10 + 1050, -50), TWS_ENEMY_SPIDER)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*11 + 750, 560), TWS_ENEMY_GRUNT)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*11 + 950, 660), TWS_ENEMY_GRUNT)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(cfGAME_SCREEN_WIDTH*11 + 950, -50), TWS_ENEMY_SPIDER)
|
|
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos, -300), TWS_ENEMY_BOSS_SPIDER)
|
|
|
|
BREAK
|
|
|
|
CASE TWS_CASTLE
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[0].fSpritePos + cfGAME_SCREEN_WIDTH*0.75, 580), TWS_ENEMY_GRUNT_FIRESWORD)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[0].fSpritePos + cfGAME_SCREEN_WIDTH*0.65, 650), TWS_ENEMY_GRUNT_FIRESWORD)
|
|
|
|
// Spades here
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[1].fSpritePos + cfGAME_SCREEN_WIDTH*0.95, 680), TWS_ENEMY_GRUNT_FIRESPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[1].fSpritePos + cfGAME_SCREEN_WIDTH*0.85, 750), TWS_ENEMY_GRUNT_FIRESPEAR)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.1, 600), TWS_ENEMY_GRUNT_CASTER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.2, 700), TWS_ENEMY_GRUNT_CASTER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.1, 800), TWS_ENEMY_GRUNT_CASTER)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.6, 550), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.71, 600), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.82, 660), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*0.94, 560), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[3].fSpritePos + cfGAME_SCREEN_WIDTH*1.06, 560), TWS_ENEMY_BOULDER)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*0.6, 650), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*0.71, 700), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*0.82, 760), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*0.94, 660), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[5].fSpritePos + cfGAME_SCREEN_WIDTH*1.06, 660), TWS_ENEMY_BOULDER)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.1, 700), TWS_ENEMY_GRUNT_FIRESPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.15, 600), TWS_ENEMY_GRUNT_FIRESPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[6].fSpritePos + cfGAME_SCREEN_WIDTH*0.2 , 700), TWS_ENEMY_GRUNT_FIRESPEAR)
|
|
|
|
// Spades here
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[7].fSpritePos + cfGAME_SCREEN_WIDTH*0.8, 700), TWS_ENEMY_GRUNT_CASTER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[7].fSpritePos + cfGAME_SCREEN_WIDTH*0.6, 600), TWS_ENEMY_GRUNT_CASTER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[7].fSpritePos + cfGAME_SCREEN_WIDTH*0.8, 750), TWS_ENEMY_GRUNT_CASTER)
|
|
|
|
// Spades here
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.9, 550), TWS_ENEMY_GRUNT_FIRESWORD)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.8, 650), TWS_ENEMY_GRUNT_FIRESPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[9].fSpritePos + cfGAME_SCREEN_WIDTH*0.9, 750), TWS_ENEMY_GRUNT_FIRESWORD)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[10].fSpritePos + cfGAME_SCREEN_WIDTH*0.6, 550), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[10].fSpritePos + cfGAME_SCREEN_WIDTH*0.62, 650), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[10].fSpritePos + cfGAME_SCREEN_WIDTH*0.58, 750), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[10].fSpritePos + cfGAME_SCREEN_WIDTH*0.6, 850), TWS_ENEMY_BOULDER)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.1, 800), TWS_ENEMY_GRUNT_FIRESWORD)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.2, 550), TWS_ENEMY_GRUNT_FIRESWORD)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.6, 850), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.71, 800), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.82, 860), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*0.94, 860), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[11].fSpritePos + cfGAME_SCREEN_WIDTH*1.06, 860), TWS_ENEMY_BOULDER)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[12].fSpritePos + cfGAME_SCREEN_WIDTH*0.2, 550), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[12].fSpritePos + cfGAME_SCREEN_WIDTH*0.22, 650), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[12].fSpritePos + cfGAME_SCREEN_WIDTH*0.18, 750), TWS_ENEMY_BOULDER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[12].fSpritePos + cfGAME_SCREEN_WIDTH*0.2, 850), TWS_ENEMY_BOULDER)
|
|
|
|
// Spades here
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[12].fSpritePos + cfGAME_SCREEN_WIDTH*0.1, 550), TWS_ENEMY_GRUNT_FIRESPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[12].fSpritePos + cfGAME_SCREEN_WIDTH*0.1, 610), TWS_ENEMY_GRUNT_FIRESPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[12].fSpritePos + cfGAME_SCREEN_WIDTH*0.1, 670), TWS_ENEMY_GRUNT_FIRESPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[12].fSpritePos + cfGAME_SCREEN_WIDTH*0.1, 730), TWS_ENEMY_GRUNT_FIRESPEAR)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[12].fSpritePos + cfGAME_SCREEN_WIDTH*0.1, 790), TWS_ENEMY_GRUNT_FIRESPEAR)
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[13].fSpritePos + cfGAME_SCREEN_WIDTH*0.15, 800), TWS_ENEMY_GRUNT_CASTER)
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(sBackgroundTilesData[13].fSpritePos + cfGAME_SCREEN_WIDTH*0.2, 550), TWS_ENEMY_GRUNT_CASTER)
|
|
|
|
|
|
TWS_ADD_ENEMY_TO_LIST(INIT_VECTOR_2D(-5000, -5000), TWS_ENEMY_BOSS_WIZARD)
|
|
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
// Far Background
|
|
PROC TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_BACKGROUND_TILE_TYPE eType)
|
|
|
|
sFarBackgroundTilesData[iCurrentFarBackgroundTileToAdd].eType = eType
|
|
sFarBackgroundTilesData[iCurrentFarBackgroundTileToAdd].fSpriteWidth = cfBASE_SCREEN_WIDTH
|
|
|
|
IF iCurrentFarBackgroundTileToAdd > 0
|
|
sFarBackgroundTilesData[iCurrentFarBackgroundTileToAdd].fSpritePos = sFarBackgroundTilesData[iCurrentFarBackgroundTileToAdd-1].fSpritePos + sFarBackgroundTilesData[iCurrentFarBackgroundTileToAdd-1].fSpriteWidth/2 + sFarBackgroundTilesData[iCurrentFarBackgroundTileToAdd].fSpriteWidth/2
|
|
ELSE
|
|
sFarBackgroundTilesData[iCurrentFarBackgroundTileToAdd].fSpritePos = cfBASE_SCREEN_WIDTH/2
|
|
ENDIF
|
|
|
|
iCurrentFarBackgroundTileToAdd++
|
|
|
|
ENDPROC
|
|
|
|
// Far Background
|
|
PROC TWS_INIT_FAR_BACKGROUND()
|
|
|
|
SWITCH sTWSData.eCurrentLevel
|
|
|
|
CASE TWS_FOREST
|
|
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_FOREST_1)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_FOREST_2)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_FOREST_1)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_FOREST_1)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_FOREST_1)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_FOREST_1)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_FOREST_1)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_FOREST_1)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_FOREST_1)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_FOREST_1)
|
|
|
|
BREAK
|
|
CASE TWS_SWAMP
|
|
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_SWAMP)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_SWAMP)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_SWAMP)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_SWAMP)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_SWAMP)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_SWAMP)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_SWAMP)
|
|
|
|
BREAK
|
|
CASE TWS_CAVES
|
|
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
TWS_ADD_FAR_BACKGROUND_TILE_TO_LIST(TWS_FBG_TL_CAVES)
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
// Background
|
|
PROC TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BACKGROUND_TILE_TYPE eType)
|
|
|
|
sBackgroundTilesData[iCurrentBackgroundTileToAdd].eType = eType
|
|
|
|
SWITCH sBackgroundTilesData[iCurrentBackgroundTileToAdd].eType
|
|
CASE TWS_BG_TL_1_INTRO
|
|
CASE TWS_BG_TL_1_BASE
|
|
CASE TWS_BG_TL_1_CAVE
|
|
CASE TWS_BG_TL_1_CLIFF
|
|
CASE TWS_BG_TL_1_SPIDER
|
|
CASE TWS_BG_TL_2_INTRO
|
|
CASE TWS_BG_TL_2_BIG_TREE
|
|
CASE TWS_BG_TL_2_TREES
|
|
CASE TWS_BG_TL_2_DEAD_BODIES
|
|
CASE TWS_BG_TL_3_INTRO
|
|
CASE TWS_BG_TL_3_BIG_WINDOW
|
|
CASE TWS_BG_TL_3_WINDOWS_OPEN
|
|
CASE TWS_BG_TL_3_STATUES
|
|
CASE TWS_BG_TL_3_DOOR_STAIRS
|
|
CASE TWS_BG_TL_3_OUTRO
|
|
CASE TWS_BG_TL_4_INTRO
|
|
CASE TWS_BG_TL_4_INTRO_NPC
|
|
CASE TWS_BG_TL_4_BIG_TREE
|
|
CASE TWS_BG_TL_4_BIG_MUSHROOM
|
|
CASE TWS_BG_TL_4_OPEN_BACK
|
|
CASE TWS_BG_TL_4_TREES
|
|
sBackgroundTilesData[iCurrentBackgroundTileToAdd].fSpriteWidth = cfTWS_BACKGROUND_TILE_WIDTH
|
|
BREAK
|
|
CASE TWS_BG_TL_1_BOSS
|
|
CASE TWS_BG_TL_2_BOSS
|
|
CASE TWS_BG_TL_4_BOSS
|
|
CASE TWS_BG_TL_3_FINAL
|
|
sBackgroundTilesData[iCurrentBackgroundTileToAdd].fSpriteWidth = cfTWS_BACKGROUND_BOSS_TILE_WIDTH
|
|
BREAK
|
|
CASE TWS_BG_TL_1_GEN_1
|
|
CASE TWS_BG_TL_1_GEN_2
|
|
CASE TWS_BG_TL_2_GEN_1
|
|
CASE TWS_BG_TL_2_GEN_2
|
|
CASE TWS_BG_TL_2_GEN_3
|
|
CASE TWS_BG_TL_3_GEN_1
|
|
CASE TWS_BG_TL_3_GEN_2
|
|
CASE TWS_BG_TL_4_GEN_1
|
|
CASE TWS_BG_TL_4_GEN_2
|
|
CASE TWS_BG_TL_4_GEN_3
|
|
sBackgroundTilesData[iCurrentBackgroundTileToAdd].fSpriteWidth = cfTWS_BACKGROUND_TILE_WIDTH/2
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF iCurrentBackgroundTileToAdd > 0
|
|
sBackgroundTilesData[iCurrentBackgroundTileToAdd].fSpritePos = sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos + sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpriteWidth/2 + sBackgroundTilesData[iCurrentBackgroundTileToAdd].fSpriteWidth/2
|
|
IF sBackgroundTilesData[iCurrentBackgroundTileToAdd].eType = TWS_BG_TL_1_BOSS
|
|
OR sBackgroundTilesData[iCurrentBackgroundTileToAdd].eType = TWS_BG_TL_2_BOSS
|
|
sBackgroundTilesData[iCurrentBackgroundTileToAdd].fSpritePos -= 209
|
|
ENDIF
|
|
ELSE
|
|
sBackgroundTilesData[iCurrentBackgroundTileToAdd].fSpritePos = cfBASE_SCREEN_WIDTH/2
|
|
ENDIF
|
|
|
|
iCurrentBackgroundTileToAdd++
|
|
|
|
ENDPROC
|
|
PROC TWS_INIT_BACKGROUND()
|
|
|
|
SWITCH sTWSData.eCurrentLevel
|
|
|
|
CASE TWS_FOREST_INTRO
|
|
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_4_INTRO_NPC)
|
|
|
|
BREAK
|
|
CASE TWS_FOREST
|
|
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_4_INTRO)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_4_BIG_MUSHROOM)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_4_GEN_1)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_4_GEN_2)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_4_OPEN_BACK)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_4_GEN_3)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_4_TREES)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_4_BIG_TREE)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_4_OPEN_BACK)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_4_TREES)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_4_BIG_MUSHROOM)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_4_BOSS)
|
|
|
|
BREAK
|
|
CASE TWS_SWAMP
|
|
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_2_INTRO)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_2_GEN_1)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_2_BIG_TREE)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_2_GEN_2)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_2_DEAD_BODIES)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_2_GEN_3)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_2_BIG_TREE)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_2_GEN_1)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_2_GEN_2)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_2_DEAD_BODIES)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_2_GEN_3)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_2_TREES)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_2_BOSS)
|
|
|
|
BREAK
|
|
CASE TWS_CAVES
|
|
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_1_INTRO)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_1_BASE)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_1_CAVE)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_1_BASE)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_1_CLIFF)
|
|
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_1_SPIDER)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_1_BASE)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_1_CAVE)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_1_CLIFF)
|
|
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_1_SPIDER)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_1_BASE)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_1_CAVE)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_1_BOSS)
|
|
|
|
BREAK
|
|
CASE TWS_CASTLE
|
|
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_INTRO)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_WINDOWS_OPEN)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_GEN_1)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_BIG_WINDOW)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_GEN_2)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_DOOR_STAIRS)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_GEN_2)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_STATUES)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_WINDOWS_OPEN)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_GEN_1)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_BIG_WINDOW)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_DOOR_STAIRS)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_STATUES)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_WINDOWS_OPEN)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_OUTRO)
|
|
TWS_ADD_BACKGROUND_TILE_TO_LIST(TWS_BG_TL_3_FINAL)
|
|
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
// Foreground
|
|
PROC TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FOREGROUND_TILE_TYPE eType, VECTOR_2D vPos)
|
|
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].eType = eType
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpritePos = vPos
|
|
|
|
SWITCH sForegroundTilesData[iCurrentForegroundTileToAdd].eType
|
|
CASE TWS_FG_TL_1_INTRO
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_INTRO_1_WIDTH, cfTWS_FG_INTRO_1_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_1_COL1
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_COL1_WIDTH, cfTWS_FG_COL1_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_1_COL2
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_COL2_WIDTH, cfTWS_FG_COL2_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_1_STALAGMITE1
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_STALAGMITE1_WIDTH, cfTWS_FG_STALAGMITE1_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_1_STALAGMITE2
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_STALAGMITE2_WIDTH, cfTWS_FG_STALAGMITE2_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_1_STALAGMITE3
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_STALAGMITE3_WIDTH, cfTWS_FG_STALAGMITE3_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_1_BOSS
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_BOSS_WIDTH, cfTWS_FG_BOSS_HEIGHT)
|
|
BREAK
|
|
|
|
CASE TWS_FG_TL_2_GRASS
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_SWAMP_GRASS_WIDTH, cfTWS_FG_SWAMP_GRASS_WIDTH)
|
|
BREAK
|
|
CASE TWS_FG_TL_2_PIKE
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_PIKES_WIDTH, cfTWS_FG_PIKES_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_2_ROOT
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_ROOT_WIDTH, cfTWS_FG_ROOT_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_2_VINES_1
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_VINES_1_WIDTH, cfTWS_FG_VINES_1_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_2_VINES_2
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_VINES_2_WIDTH, cfTWS_FG_VINES_2_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_2_VINES_3
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_VINES_3_WIDTH, cfTWS_FG_VINES_3_HEIGHT)
|
|
BREAK
|
|
|
|
CASE TWS_FG_TL_3_INTRO
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_INTRO_3_WIDTH, cfTWS_FG_INTRO_3_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_3_GARGOYLE_1
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_GARGOYLE_1_WIDTH, cfTWS_FG_GARGOYLE_1_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_3_GARGOYLE_2
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_GARGOYLE_2_WIDTH, cfTWS_FG_GARGOYLE_2_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_3_COLUMN
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_CASTLE_COLUMN_WIDTH, cfTWS_FG_CASTLE_COLUMN_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_3_CANDLES_1
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_CANDLES_1_WIDTH, cfTWS_FG_CANDLES_1_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_3_CANDLES_2
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_CANDLES_2_WIDTH, cfTWS_FG_CANDLES_2_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_4_BLUE_FLOWERS
|
|
CASE TWS_FG_TL_4_YELLOW_FLOWERS
|
|
CASE TWS_FG_TL_4_MUSHROOMS
|
|
CASE TWS_FG_TL_4_SHORT_GRASS
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_FOREST_SHORT_GRASS_WIDTH, cfTWS_FG_FOREST_SHORT_GRASS_HEIGHT)
|
|
BREAK
|
|
CASE TWS_FG_TL_4_TALL_GRASS
|
|
sForegroundTilesData[iCurrentForegroundTileToAdd].vSpriteSize = INIT_VECTOR_2D(cfTWS_FG_FOREST_TALL_GRASS_WIDTH, cfTWS_FG_FOREST_TALL_GRASS_HEIGHT)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
iCurrentForegroundTileToAdd++
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_INIT_FOREGROUND()
|
|
|
|
SWITCH sTWSData.eCurrentLevel
|
|
|
|
CASE TWS_FOREST
|
|
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_BLUE_FLOWERS, INIT_VECTOR_2D(2800, 910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_YELLOW_FLOWERS, INIT_VECTOR_2D(3500, 910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_SHORT_GRASS, INIT_VECTOR_2D(3500, 910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_SHORT_GRASS, INIT_VECTOR_2D(4600, 910))
|
|
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_BLUE_FLOWERS, INIT_VECTOR_2D(5200,910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_SHORT_GRASS, INIT_VECTOR_2D(6400, 910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_SHORT_GRASS, INIT_VECTOR_2D(8100, 910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_BLUE_FLOWERS, INIT_VECTOR_2D(8900,910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_SHORT_GRASS, INIT_VECTOR_2D(10000, 910))
|
|
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_MUSHROOMS, INIT_VECTOR_2D(12000,910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_BLUE_FLOWERS, INIT_VECTOR_2D(13400,910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_SHORT_GRASS, INIT_VECTOR_2D(15000, 910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_YELLOW_FLOWERS, INIT_VECTOR_2D(16200, 910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_4_SHORT_GRASS, INIT_VECTOR_2D(18150, 910))
|
|
|
|
BREAK
|
|
|
|
CASE TWS_SWAMP
|
|
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_VINES_1, INIT_VECTOR_2D(2800, 250))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_VINES_2, INIT_VECTOR_2D(3500, 250))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_ROOT, INIT_VECTOR_2D(3500, 910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_PIKE, INIT_VECTOR_2D(4600, 960))
|
|
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_VINES_2, INIT_VECTOR_2D(5200,250))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_ROOT, INIT_VECTOR_2D(6400, 910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_GRASS, INIT_VECTOR_2D(8100, 910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_VINES_3, INIT_VECTOR_2D(8900,250))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_PIKE, INIT_VECTOR_2D(10000, 960))
|
|
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_VINES_3, INIT_VECTOR_2D(12000,250))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_VINES_1, INIT_VECTOR_2D(13400,250))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_GRASS, INIT_VECTOR_2D(15000, 910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_ROOT, INIT_VECTOR_2D(16200, 910))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_2_VINES_2, INIT_VECTOR_2D(18000, 250))
|
|
|
|
BREAK
|
|
|
|
CASE TWS_CAVES
|
|
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL1, INIT_VECTOR_2D(2800,cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL2, INIT_VECTOR_2D(3500,cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_STALAGMITE1, INIT_VECTOR_2D(3500,cfBASE_SCREEN_HEIGHT))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL1, INIT_VECTOR_2D(4600,cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_STALAGMITE2, INIT_VECTOR_2D(5200,cfBASE_SCREEN_HEIGHT))
|
|
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL2, INIT_VECTOR_2D(6400,cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL1, INIT_VECTOR_2D(8100,cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL2, INIT_VECTOR_2D(8900,cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_STALAGMITE1, INIT_VECTOR_2D(12000,cfBASE_SCREEN_HEIGHT))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL2, INIT_VECTOR_2D(13600,cfBASE_SCREEN_HEIGHT/2))
|
|
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_STALAGMITE3, INIT_VECTOR_2D(15000,cfBASE_SCREEN_HEIGHT))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL1, INIT_VECTOR_2D(16200,cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL2, INIT_VECTOR_2D(18000,cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_STALAGMITE2, INIT_VECTOR_2D(22200,cfBASE_SCREEN_HEIGHT))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL2, INIT_VECTOR_2D(24000,cfBASE_SCREEN_HEIGHT/2))
|
|
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL1, INIT_VECTOR_2D(26000,cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL2, INIT_VECTOR_2D(27000,cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL1, INIT_VECTOR_2D(28500,cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_1_COL1, INIT_VECTOR_2D(32000,cfBASE_SCREEN_HEIGHT/2))
|
|
|
|
BREAK
|
|
|
|
CASE TWS_CASTLE
|
|
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_INTRO, INIT_VECTOR_2D(194, 694))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_COLUMN, INIT_VECTOR_2D(3500, cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_CANDLES_1, INIT_VECTOR_2D(3500, 860))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_COLUMN, INIT_VECTOR_2D(4600, cfBASE_SCREEN_HEIGHT/2))
|
|
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_GARGOYLE_1, INIT_VECTOR_2D(5200,820))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_COLUMN, INIT_VECTOR_2D(6400, cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_CANDLES_2, INIT_VECTOR_2D(8100, 860))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_COLUMN, INIT_VECTOR_2D(8900,cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_GARGOYLE_2, INIT_VECTOR_2D(10000, 820))
|
|
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_COLUMN, INIT_VECTOR_2D(12000,cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_CANDLES_1, INIT_VECTOR_2D(13400,860))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_COLUMN, INIT_VECTOR_2D(15000, cfBASE_SCREEN_HEIGHT/2))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_GARGOYLE_1, INIT_VECTOR_2D(16200, 820))
|
|
TWS_ADD_FOREGROUND_TILE_TO_LIST(TWS_FG_TL_3_COLUMN, INIT_VECTOR_2D(18000, cfBASE_SCREEN_HEIGHT/2))
|
|
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
PROC TWS_INIT_PLAY_VARIABLES()
|
|
|
|
sTWSData.eLevelStage = TWS_LEVEL_PLAYING
|
|
|
|
ENDPROC
|
|
FUNC BOOL IS_LEVEL_UNLOCKED(TWS_LEVEL eLevel)
|
|
|
|
SWITCH eLevel
|
|
CASE TWS_FOREST
|
|
CASE TWS_SWAMP
|
|
CASE TWS_CAVES
|
|
CASE TWS_CASTLE
|
|
RETURN TRUE
|
|
ENDSWITCH
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
PROC TWS_INIT_LEVEL_VARIABLES()
|
|
|
|
SWITCH sTWSData.eCurrentLevel
|
|
CASE TWS_FOREST_INTRO
|
|
|
|
sTWSData.sCutsceneData.bShouldCutscenePlay = TRUE
|
|
sTWSData.sCutsceneData.sCutsceneName = "story_intro"
|
|
sTWSData.sCutsceneData.iSpriteCutsceneAnimFrame = 0
|
|
sTWSData.sCutsceneData.iMaxCutsceneFrame = ciTWS_INTRO_CUTSCENE_SHOTS
|
|
sTWSData.rgbaFade.iA = 255
|
|
|
|
sTWSData.bHUDIsHidden = TRUE
|
|
|
|
BREAK
|
|
CASE TWS_FOREST
|
|
sTWSData.sCutsceneData.bShouldCutscenePlay = FALSE
|
|
BREAK
|
|
CASE TWS_SWAMP
|
|
sTWSData.sCutsceneData.bShouldCutscenePlay = FALSE
|
|
BREAK
|
|
CASE TWS_CAVES
|
|
sTWSData.sCutsceneData.bShouldCutscenePlay = FALSE
|
|
BREAK
|
|
CASE TWS_CASTLE
|
|
|
|
sTWSData.sCutsceneData.sCutsceneName = "story_end"
|
|
sTWSData.sCutsceneData.iSpriteCutsceneAnimFrame = 0
|
|
sTWSData.sCutsceneData.iMaxCutsceneFrame = ciTWS_OUTRO_CUTSCENE_SHOTS
|
|
sTWSData.sCutsceneData.bShouldCutscenePlay = FALSE
|
|
|
|
BREAK
|
|
CASE TWS_CASTLE_OUTRO
|
|
sTWSData.sCutsceneData.bShouldCutscenePlay = FALSE
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
sTWSData.iGameTimer = GET_GAME_TIMER()
|
|
sTWSData.bFadingOut = TRUE
|
|
|
|
sTWSData.sTelemetry.level = (BOOL_TO_INT(sTWSData.bIsHardCoreMode)*4) + ENUM_TO_INT(sTWSData.eCurrentLevel)
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_RESET_ITEM_VARIABLES(INT iIndex)
|
|
|
|
sItemData[iIndex].bIsActive = FALSE
|
|
sItemData[iIndex].bFalling = FALSE
|
|
sItemData[iIndex].bIsHit = FALSE
|
|
sItemData[iIndex].eItemType = TWS_ITEM_HP_SMA
|
|
|
|
sItemData[iIndex].vSpriteFallPos = INIT_VECTOR_2D(0.0,0.0)
|
|
sItemData[iIndex].vSpritePos = INIT_VECTOR_2D(0.0,0.0)
|
|
|
|
ENDPROC
|
|
PROC TWS_RESET_ENEMY_VARIABLES(INT iIndex)
|
|
|
|
sEnemyData[iIndex].bIsActive = FALSE
|
|
sEnemyData[iIndex].bIsMoving = FALSE
|
|
sEnemyData[iIndex].bIsAttacking = FALSE
|
|
sEnemyData[iIndex].bIsHit = FALSE
|
|
sEnemyData[iIndex].bIsFalling = FALSE
|
|
sEnemyData[iIndex].bIsBattleEnemy = FALSE
|
|
|
|
sEnemyData[iIndex].fHealth = 1.0
|
|
sEnemyData[iIndex].fProgressToTarget = 0.0
|
|
sEnemyData[iIndex].vShadowOffset.y = 0.0
|
|
|
|
sEnemyData[iIndex].vSpritePos = INIT_VECTOR_2D(0.0,0.0)
|
|
sEnemyData[iIndex].vInitialPos = sEnemyData[iIndex].vSpritePos
|
|
sEnemyData[iIndex].vTargetPos = sEnemyData[iIndex].vSpritePos
|
|
|
|
CPRINTLN(DEBUG_MINIGAME, "Resetting enemy variables: ", iIndex)
|
|
TWS_GET_NUMBER_OF_EMPTY_SLOTS_FOR_ENEMY()
|
|
ENDPROC
|
|
|
|
PROC TWS_RESET_PLAYER_VARIABLES(BOOL bFullReset = FALSE)
|
|
|
|
sPlayerData.bIsMovingOutOfScreen = FALSE
|
|
sPlayerData.bIsMovingToCenter = FALSE
|
|
sPlayerData.bAttackIsDouble = FALSE
|
|
sPlayerData.bIsUsingMagic = FALSE
|
|
sPlayerData.bIsAttacking = FALSE
|
|
sPlayerData.bIsCharging = FALSE
|
|
sPlayerData.bIsEvolving = FALSE
|
|
sPlayerData.bFacingLeft = FALSE
|
|
sPlayerData.bIsFalling = FALSE
|
|
sPlayerData.bIsMoving = FALSE
|
|
sPlayerData.bIsHit = FALSE
|
|
|
|
IF bFullReset
|
|
sPlayerData.ePlayerState = TWS_INTRO
|
|
sPlayerData.fHealth = 1.0
|
|
sPlayerData.fMagic = 0.0
|
|
sPlayerData.iLevel = 1
|
|
sPlayerData.iLastCharge = GET_GAME_TIMER()
|
|
sPlayerData.bIsCameraShakeActive = FALSE
|
|
ENDIF
|
|
|
|
ARCADE_GAMES_SOUND_STOP(ARCADE_GAMES_SOUND_TWR_PLAYER_WALK_LOOP)
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_RESET_PLAYER_SCORE()
|
|
|
|
sPlayerData.iScore = 0
|
|
sPlayerData.iTreasures = 0
|
|
sPlayerData.iLifes = 3
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_KILL_ALL_ENEMIES(BOOL bIncludeBoss = FALSE)//FLOAT fRange = 682.0)
|
|
|
|
INT i
|
|
FOR i = 0 TO ciTWS_MAX_ENEMIES -1
|
|
IF NOT bIncludeBoss AND sTWSData.iBossEnemyIndex != i
|
|
sEnemyData[i].fHealth = 0.0
|
|
sEnemyData[i].bIsHit = TRUE
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_RESET_BOSS_FIGHT()
|
|
|
|
// TWS_KILL_ALL_ENEMIES()
|
|
|
|
// sEnemyData[sTWSData.iBossEnemyIndex].fHealth = 1.0
|
|
sEnemyData[sTWSData.iBossEnemyIndex].bIsHit = FALSE
|
|
// sEnemyData[sTWSData.iBossEnemyIndex].eEnemyState = TWS_ENEMY_INACTIVE
|
|
|
|
// SWITCH sTWSData.eCurrentLevel
|
|
// CASE TWS_FOREST
|
|
// sEnemyData[sTWSData.iBossEnemyIndex].vSpritePos = INIT_VECTOR_2D(sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos + cfGAME_SCREEN_WIDTH*0.4, 550)
|
|
// BREAK
|
|
// CASE TWS_SWAMP
|
|
// sEnemyData[sTWSData.iBossEnemyIndex].vSpritePos = INIT_VECTOR_2D(sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos + cfGAME_SCREEN_WIDTH*0.4, 690)
|
|
// BREAK
|
|
// CASE TWS_CAVES
|
|
// sEnemyData[sTWSData.iBossEnemyIndex].vSpritePos = INIT_VECTOR_2D(sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos, -300)
|
|
// BREAK
|
|
// CASE TWS_CASTLE
|
|
// sEnemyData[sTWSData.iBossEnemyIndex].vSpritePos = INIT_VECTOR_2D(sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos, cfBASE_SCREEN_HEIGHT/3)
|
|
// BREAK
|
|
// ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_CLEANUP_VARIABLES()
|
|
|
|
TWS_RESET_PLAYER_VARIABLES(TRUE)
|
|
|
|
sTWSData.bFadingOut = FALSE
|
|
sTWSData.bHUDIsHidden = FALSE
|
|
sTWSData.eLevelStage = TWS_LEVEL_PLAYING
|
|
|
|
INT i
|
|
FOR i = 0 TO ciTWS_MAX_LOCKED_BATTLES -1
|
|
sTWSData.sLockedBattles[i].bActive = TRUE
|
|
sTWSData.sLockedBattles[i].iEnemies = 0
|
|
sTWSData.sLockedBattles[i].iEnemySize = 0
|
|
sTWSData.sLockedBattles[1].bSpawnEnemies = TRUE
|
|
ENDFOR
|
|
|
|
FOR i = 0 TO ciTWS_MAX_ENEMIES -1
|
|
TWS_RESET_ENEMY_VARIABLES(i)
|
|
ENDFOR
|
|
iCurrentEnemyToAdd = 0
|
|
|
|
FOR i = 0 TO ciTWS_MAX_NPCS - 1
|
|
sNPCData[i].bIsActive = FALSE
|
|
ENDFOR
|
|
iCurrentNPCToAdd = 0
|
|
|
|
FOR i = 0 TO ciTWS_MAX_ITEMS - 1
|
|
sItemData[i].bIsActive = FALSE
|
|
ENDFOR
|
|
iCurrentItemToAdd = 0
|
|
|
|
iCurrentFarBackgroundTileToAdd = 0
|
|
iCurrentForegroundTileToAdd = 0
|
|
iCurrentBackgroundTileToAdd = 0
|
|
|
|
FOR i = 0 TO ciTWS_MAX_TRAPS - 1
|
|
sTrapsData[i].bIsActive = FALSE
|
|
sTrapsData[i].bIsWorking = FALSE
|
|
sTrapsData[i].eType = TWS_TRAP_FALL
|
|
ENDFOR
|
|
iCurrentTrapToAdd = 0
|
|
|
|
FOR i = 0 TO ciTWS_MAX_HUD_ELEMENTS - 1
|
|
sHUDData[i].bActive = FALSE
|
|
sHUDData[i].bRendering = FALSE
|
|
sHUDData[i].bPlayedSoundAttacked = FALSE
|
|
ENDFOR
|
|
iCurrentHUDItemToAdd = 0
|
|
|
|
FOR i = 0 TO ciTWS_MAX_FX - 1
|
|
sFXData[i].bActive = FALSE
|
|
ENDFOR
|
|
|
|
FOR i = 0 TO ciTWS_MAX_DRAW_CALLS-1
|
|
sTWSData.sDrawCalls[i].eType = TWS_ENTITY_DEFAULT
|
|
sTWSData.sDrawCalls[i].iIndex = 0
|
|
sTWSData.sDrawCalls[i].fZIndex = -999
|
|
ENDFOR
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_INIT_NORMAL_MODE()
|
|
|
|
TWS_RESET_PLAYER_SCORE()
|
|
sTWSData.bIsHardCoreMode = FALSE
|
|
sTWSData.eCurrentLevel = TWS_FOREST_INTRO
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_INIT_HARDCORE_MODE()
|
|
|
|
TWS_RESET_PLAYER_SCORE()
|
|
sTWSData.bIsHardCoreMode = TRUE
|
|
sTWSData.eCurrentLevel = TWS_FOREST
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL TWS_ARE_ENEMIES_IN_RANGE(FLOAT fRange = 682.0)
|
|
|
|
INT i
|
|
FOR i = 0 TO ciTWS_MAX_ENEMIES -1
|
|
IF sEnemyData[i].bIsActive AND sEnemyData[i].fHealth > 0.0 AND VECTOR_2D_DIST(sEnemyData[i].vSpritePos, sPlayerData.vSpritePos) < fRange
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDFOR
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_HAS_PLAYER_COMPLETED_NORMAL_MODE()
|
|
|
|
RETURN sTWSData.bNormalModeIsCompleted
|
|
|
|
ENDFUNC
|
|
|
|
PROC TWS_FADE_OUT()
|
|
sTWSData.bFadingOut = TRUE
|
|
ENDPROC
|
|
|
|
PROC TWS_FADE_IN(BOOL bFromBlack = FALSE)
|
|
IF bFromBlack
|
|
sTWSData.rgbaFade.iA = 255
|
|
ENDIF
|
|
sTWSData.bFadingOut = FALSE
|
|
ENDPROC
|
|
|
|
FUNC BOOL TWS_IS_SCREEN_FADING_OUT()
|
|
RETURN sTWSData.bFadingOut AND sTWSData.rgbaFade.iA < 255
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_IS_SCREEN_FADING_IN()
|
|
RETURN !sTWSData.bFadingOut AND sTWSData.rgbaFade.iA > 0
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_IS_SCREEN_FADED_OUT()
|
|
RETURN sTWSData.rgbaFade.iA >= 255
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_IS_SCREEN_FADED_IN()
|
|
RETURN sTWSData.rgbaFade.iA <= 0
|
|
ENDFUNC
|
|
|
|
PROC TWS_ACTIVATE_CAMERA_SHAKE(BOOL bActivate)
|
|
|
|
IF bActivate
|
|
SET_CONTROL_SHAKE(FRONTEND_CONTROL, 100, 20)
|
|
ENDIF
|
|
sPlayerData.bIsCameraShakeActive = bActivate
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL TWS_IS_CAMERA_SHAKE_ACTIVE()
|
|
RETURN sPlayerData.bIsCameraShakeActive
|
|
ENDFUNC
|
|
|
|
FUNC VECTOR_2D TWS_GET_KNIGHT_DEATH_OFFSET(TWS_ENEMY_STATE eState)
|
|
|
|
SWITCH eState
|
|
CASE TWS_ENEMY_DYING_1
|
|
RETURN INIT_VECTOR_2D(0.0,0.0)
|
|
|
|
CASE TWS_ENEMY_DYING_2
|
|
RETURN INIT_VECTOR_2D(0.0,28.0)
|
|
|
|
CASE TWS_ENEMY_DYING_3
|
|
RETURN INIT_VECTOR_2D(0.0,28.0)
|
|
|
|
CASE TWS_ENEMY_DYING_4
|
|
RETURN INIT_VECTOR_2D(25.0,38.0)
|
|
|
|
CASE TWS_ENEMY_DYING_5
|
|
RETURN INIT_VECTOR_2D(26.0,43.0)
|
|
|
|
CASE TWS_ENEMY_DYING_6
|
|
RETURN INIT_VECTOR_2D(40.0,42.0)
|
|
|
|
CASE TWS_ENEMY_DYING_7
|
|
RETURN INIT_VECTOR_2D(86.0,53.0)
|
|
|
|
CASE TWS_ENEMY_DYING_8
|
|
RETURN INIT_VECTOR_2D(122.0,74.0)
|
|
|
|
CASE TWS_ENEMY_DEAD
|
|
RETURN INIT_VECTOR_2D(132.0,98.0)
|
|
|
|
ENDSWITCH
|
|
|
|
RETURN INIT_VECTOR_2D(0.0,0.0)
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_IS_ENEMY_OF_TYPE_ON_SCREEN(TWS_ENEMY_TYPE eType)
|
|
INT i
|
|
FOR i = 0 TO ciTWS_MAX_ENEMIES-1
|
|
IF sEnemyData[i].bIsActive AND sEnemyData[i].eEnemyType = eType AND ABSF(sEnemyData[i].vSpritePos.X - sPlayerData.vSpritePos.x) < cfBASE_SCREEN_WIDTH/2 AND sEnemyData[i].eEnemyState != TWS_ENEMY_INVISIBLE
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDFOR
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_IS_ANY_ENEMY_ON_SCREEN(BOOL bIsLockedScreen = FALSE)
|
|
|
|
INT i
|
|
|
|
IF bIsLockedScreen
|
|
|
|
FOR i = 0 TO ciTWS_MAX_ENEMIES-1
|
|
IF sEnemyData[i].bIsActive AND ABSF(sEnemyData[i].vSpritePos.X - sTWSData.fLockedScreenPos) <= cfGAME_SCREEN_WIDTH/2 AND sEnemyData[i].eEnemyState != TWS_ENEMY_INVISIBLE
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDFOR
|
|
ELSE
|
|
FOR i = 0 TO ciTWS_MAX_ENEMIES-1
|
|
IF sEnemyData[i].bIsActive AND ABSF(sEnemyData[i].vSpritePos.X - sPlayerData.vSpritePos.x) < cfGAME_SCREEN_WIDTH/2 AND sEnemyData[i].eEnemyState != TWS_ENEMY_INVISIBLE
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
ENDIF
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
|
|
FUNC BOOL TWS_IS_ENEMY_ON_SCREEN(INT i)
|
|
RETURN sEnemyData[i].bIsActive AND ABSF(sEnemyData[i].vSpritePos.X - sPlayerData.vSpritePos.x) < cfBASE_SCREEN_WIDTH/2 AND sEnemyData[i].eEnemyState != TWS_ENEMY_INVISIBLE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_IS_FX_ON_SCREEN(INT i)
|
|
RETURN sEnemyData[i].bIsActive AND ABSF(sFXData[i].vSpritePos.X - sPlayerData.vSpritePos.x) < cfBASE_SCREEN_WIDTH/2 AND sFXData[i].bActive = TRUE
|
|
ENDFUNC
|
|
|
|
FUNC INT TWS_GET_CLOSEST_ENEMY()
|
|
|
|
INT i, iEnemy = 0
|
|
FLOAT fClosestDistance = 99999.0
|
|
|
|
FOR i = 0 TO ciTWS_MAX_ENEMIES-1
|
|
|
|
IF sEnemyData[i].bIsActive
|
|
AND VECTOR_2D_DIST(sEnemyData[i].vSpritePos, sPlayerData.vSpritePos) < fClosestDistance
|
|
AND (sPlayerData.bFacingLeft AND sEnemyData[i].vSpritePos.x < sPlayerData.vSpritePos.x OR !sPlayerData.bFacingLeft AND sEnemyData[i].vSpritePos.x >= sPlayerData.vSpritePos.x)
|
|
fClosestDistance = VECTOR_2D_DIST(sEnemyData[i].vSpritePos, sPlayerData.vSpritePos)
|
|
iEnemy = i
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
RETURN iEnemy
|
|
ENDFUNC
|
|
|
|
|
|
FUNC BOOL TWS_HAS_BOSS_BATTLE_FINISHED()
|
|
|
|
IF sEnemyData[sTWSData.iBossEnemyIndex].fHealth <= 0.0 AND sTWSData.eLevelStage = TWS_LEVEL_BOSS_FIGHT
|
|
OR sTWSData.eLevelStage > TWS_LEVEL_BOSS_FIGHT
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
FUNC BOOL TWS_CAN_PLAYER_BE_HURT(BOOL bAllowDuringAttack = FALSE)
|
|
|
|
IF bAllowDuringAttack
|
|
|
|
IF sPlayerData.bIsFalling
|
|
OR sPlayerData.bIsHit
|
|
OR sPlayerData.bIsInvincible
|
|
OR sPlayerData.bIsEvolving
|
|
OR sPlayerData.bIsUsingMagic
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF sPlayerData.bIsAttacking
|
|
OR sPlayerData.bIsCharging
|
|
OR sPlayerData.bIsFalling
|
|
OR sPlayerData.bIsHit
|
|
OR sPlayerData.bIsInvincible
|
|
OR sPlayerData.bIsEvolving
|
|
OR sPlayerData.bIsUsingMagic
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
FUNC STRING TWS_ENEMY_TYPE_TO_STRING(TWS_ENEMY_TYPE eType)
|
|
|
|
SWITCH eType
|
|
CASE TWS_ENEMY_FAIRY RETURN "TWS_ENEMY_FAIRY"
|
|
CASE TWS_ENEMY_SLIME RETURN "TWS_ENEMY_SLIME"
|
|
CASE TWS_ENEMY_SPIDER RETURN "TWS_ENEMY_SPIDER"
|
|
CASE TWS_ENEMY_BAT RETURN "TWS_ENEMY_BAT"
|
|
CASE TWS_ENEMY_FAKE_WIZARD RETURN "TWS_ENEMY_FAKE_WIZARD"
|
|
CASE TWS_ENEMY_GRUNT_CASTER RETURN "TWS_ENEMY_GRUNT_CASTER"
|
|
CASE TWS_ENEMY_LEPRECHAUN RETURN "TWS_ENEMY_LEPRECHAUN"
|
|
CASE TWS_ENEMY_BRUTE RETURN "TWS_ENEMY_BRUTE"
|
|
CASE TWS_ENEMY_BOULDER RETURN "TWS_ENEMY_BOULDER"
|
|
CASE TWS_ENEMY_BOSS_AMAZON RETURN "TWS_ENEMY_BOSS_AMAZON"
|
|
CASE TWS_ENEMY_GRUNT RETURN "TWS_ENEMY_GRUNT"
|
|
CASE TWS_ENEMY_SNAKE RETURN "TWS_ENEMY_SNAKE"
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW RETURN "TWS_ENEMY_GRUNT_CROSSBOW"
|
|
CASE TWS_ENEMY_GRUNT_SWORD RETURN "TWS_ENEMY_GRUNT_SWORD"
|
|
CASE TWS_ENEMY_GRUNT_SPEAR RETURN "TWS_ENEMY_GRUNT_SPEAR"
|
|
CASE TWS_ENEMY_GRUNT_FIRESPEAR RETURN "TWS_ENEMY_GRUNT_FIRESPEAR"
|
|
CASE TWS_ENEMY_GRUNT_FIRESWORD RETURN "TWS_ENEMY_GRUNT_FIRESWORD"
|
|
CASE TWS_ENEMY_KNIGHT RETURN "TWS_ENEMY_KNIGHT"
|
|
CASE TWS_ENEMY_BRUTE_AXE RETURN "TWS_ENEMY_BRUTE_AXE"
|
|
CASE TWS_ENEMY_BOSS_SPIDER RETURN "TWS_ENEMY_BOSS_SPIDER"
|
|
CASE TWS_ENEMY_BOSS_WIZARD RETURN "TWS_ENEMY_BOSS_WIZARD"
|
|
DEFAULT RETURN "UNKNOWN"
|
|
ENDSWITCH
|
|
|
|
ENDFUNC
|
|
|
|
FUNC TWS_FX_TYPE TWS_GET_FX_HIT(BOOL bIsPlayer = TRUE, INT iIndex = 0)
|
|
|
|
IF bIsPlayer
|
|
|
|
SWITCH sEnemyData[iIndex].iEnemySize
|
|
CASE 0
|
|
IF sPlayerData.iLevel < 3
|
|
RETURN TWS_FX_SMALL_HIT
|
|
ELSE
|
|
RETURN TWS_FX_LARGE_HIT
|
|
ENDIF
|
|
BREAK
|
|
CASE 1
|
|
RETURN TWS_FX_LARGE_HIT
|
|
|
|
CASE 2
|
|
RETURN TWS_FX_BLOOD_HIT
|
|
|
|
CASE 3
|
|
RETURN TWS_FX_VENOM_HIT
|
|
|
|
ENDSWITCH
|
|
|
|
ELSE
|
|
|
|
SWITCH sEnemyData[iIndex].eEnemyType
|
|
|
|
CASE TWS_ENEMY_FAIRY
|
|
CASE TWS_ENEMY_SLIME
|
|
CASE TWS_ENEMY_SPIDER
|
|
CASE TWS_ENEMY_BAT
|
|
CASE TWS_ENEMY_FAKE_WIZARD
|
|
CASE TWS_ENEMY_GRUNT_CASTER
|
|
CASE TWS_ENEMY_LEPRECHAUN
|
|
|
|
IF sPlayerData.iLevel < 3
|
|
RETURN TWS_FX_SMALL_HIT
|
|
ELSE
|
|
RETURN TWS_FX_LARGE_HIT
|
|
ENDIF
|
|
BREAK
|
|
CASE TWS_ENEMY_BRUTE
|
|
CASE TWS_ENEMY_BOULDER
|
|
CASE TWS_ENEMY_BOSS_AMAZON
|
|
CASE TWS_ENEMY_GRUNT
|
|
RETURN TWS_FX_LARGE_HIT
|
|
|
|
CASE TWS_ENEMY_SNAKE
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW
|
|
CASE TWS_ENEMY_GRUNT_SWORD
|
|
CASE TWS_ENEMY_GRUNT_SPEAR
|
|
CASE TWS_ENEMY_GRUNT_FIRESPEAR
|
|
CASE TWS_ENEMY_GRUNT_FIRESWORD
|
|
CASE TWS_ENEMY_KNIGHT
|
|
CASE TWS_ENEMY_BRUTE_AXE
|
|
CASE TWS_ENEMY_BOSS_KNIGHT
|
|
RETURN TWS_FX_BLOOD_HIT
|
|
|
|
CASE TWS_ENEMY_BOSS_SPIDER
|
|
CASE TWS_ENEMY_BOSS_WIZARD
|
|
RETURN TWS_FX_VENOM_HIT
|
|
|
|
DEFAULT
|
|
RETURN TWS_FX_LARGE_HIT
|
|
|
|
ENDSWITCH
|
|
ENDIF
|
|
|
|
RETURN TWS_FX_SMALL_HIT
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_ENEMY_CAUSES_DAMAGE_ON_MOVEMENT(INT i)
|
|
SWITCH sEnemyData[i].eEnemyType
|
|
CASE TWS_ENEMY_SPIDER
|
|
CASE TWS_ENEMY_BAT
|
|
CASE TWS_ENEMY_FAIRY
|
|
CASE TWS_ENEMY_SLIME
|
|
CASE TWS_ENEMY_SNAKE
|
|
CASE TWS_ENEMY_BOULDER
|
|
RETURN TRUE
|
|
DEFAULT
|
|
RETURN FALSE
|
|
ENDSWITCH
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_IS_ENEMY_SMALL(INT i)
|
|
SWITCH sEnemyData[i].eEnemyType
|
|
CASE TWS_ENEMY_SPIDER
|
|
CASE TWS_ENEMY_SLIME
|
|
CASE TWS_ENEMY_SNAKE
|
|
RETURN TRUE
|
|
DEFAULT
|
|
RETURN FALSE
|
|
ENDSWITCH
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_IS_NPC_CUTSCENE_LEVEL()
|
|
SWITCH sTWSData.eCurrentLevel
|
|
CASE TWS_FOREST_INTRO
|
|
RETURN TRUE
|
|
DEFAULT
|
|
RETURN FALSE
|
|
ENDSWITCH
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_SHOULD_DISPLAY_MAP_IN_THIS_LEVEL()
|
|
SWITCH sTWSData.eCurrentLevel
|
|
CASE TWS_FOREST_INTRO
|
|
CASE TWS_CASTLE_OUTRO
|
|
RETURN FALSE
|
|
CASE TWS_FOREST
|
|
CASE TWS_SWAMP
|
|
CASE TWS_CAVES
|
|
CASE TWS_CASTLE
|
|
RETURN TRUE
|
|
ENDSWITCH
|
|
|
|
RETURN TRUE
|
|
|
|
ENDFUNC
|
|
|
|
FUNC STRING TWS_GET_MAP_SCREEN_TEXTURE()
|
|
|
|
SWITCH sTWSData.eCurrentLevel
|
|
CASE TWS_FOREST_INTRO
|
|
CASE TWS_CASTLE_OUTRO
|
|
RETURN ""
|
|
CASE TWS_FOREST
|
|
RETURN "world_map1"
|
|
CASE TWS_SWAMP
|
|
RETURN "world_map2"
|
|
CASE TWS_CAVES
|
|
RETURN "world_map3"
|
|
CASE TWS_CASTLE
|
|
RETURN "world_map4"
|
|
ENDSWITCH
|
|
|
|
RETURN ""
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_ENEMY_ATTACKS_WITH_PROJECTILE(INT i)
|
|
SWITCH sEnemyData[i].eEnemyType
|
|
CASE TWS_ENEMY_GRUNT_CASTER
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW
|
|
CASE TWS_ENEMY_LEPRECHAUN
|
|
RETURN TRUE
|
|
DEFAULT
|
|
RETURN FALSE
|
|
ENDSWITCH
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_SHOULD_ENEMY_BE_DRAWN(INT i)
|
|
RETURN ABSF(sEnemyData[i].vSpritePos.X - sPlayerData.vSpritePos.x) < cfBASE_SCREEN_WIDTH AND sEnemyData[i].eEnemyState != TWS_ENEMY_INVISIBLE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_IS_PLAYER_ON_CAMERA()
|
|
RETURN sPlayerData.vSpritePos.x < (sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpritePos + sBackgroundTilesData[iCurrentBackgroundTileToAdd-1].fSpriteWidth + sPlayerData.vSpriteSize.x)
|
|
ENDFUNC
|
|
|
|
PROC TWS_CLEAN_UP_MOVIE(BINK_MOVIE_ID bmID)
|
|
IF (bmID != NULL)
|
|
STOP_BINK_MOVIE(bmID)
|
|
RELEASE_BINK_MOVIE(bmID)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Sets the bink movie asset for the video and starts playback
|
|
PROC TWS_START_MOVIE(BINK_MOVIE_ID &bmID, STRING movieName)
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[Wizards Ruin] DG_START_MOVIE - Starting movie")
|
|
|
|
bmID = SET_BINK_MOVIE(movieName)
|
|
IF (bmID = NULL)
|
|
CERRORLN(DEBUG_MINIGAME, "[Wizards Ruin] - Movie:", movieName, " does not exist")
|
|
ENDIF
|
|
PLAY_BINK_MOVIE(bmID)
|
|
SET_BINK_SHOULD_SKIP(bmID, TRUE)
|
|
SET_BINK_MOVIE_AUDIO_FRONTEND(bmID, TRUE)
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_REMOVE_DRAW_CALL(TWS_ENTITY_TYPE eType, INT iIndex)
|
|
|
|
INT i
|
|
FOR i = 0 TO ciTWS_MAX_DRAW_CALLS-1
|
|
IF sTWSData.sDrawCalls[i].eType = eType
|
|
AND sTWSData.sDrawCalls[i].iIndex = iIndex
|
|
sTWSData.sDrawCalls[i].eType = TWS_ENTITY_DEFAULT
|
|
sTWSData.sDrawCalls[i].iIndex = 0
|
|
sTWSData.sDrawCalls[i].fZIndex = -999
|
|
CDEBUG2LN(DEBUG_MINIGAME, "TWS - Removing draw call for item ", iIndex, " of type ", ENUM_TO_INT(eType))
|
|
ENDIF
|
|
|
|
ENDFOR
|
|
ENDPROC
|
|
|
|
PROC TWS_SWAP_DRAW_CALLS(INT iIndex1, INT iIndex2)
|
|
|
|
INT iTMPIndex = sTWSData.sDrawCalls[iIndex2].iIndex
|
|
TWS_ENTITY_TYPE eTMPType = sTWSData.sDrawCalls[iIndex2].eType
|
|
FLOAT iTmpZIndex = sTWSData.sDrawCalls[iIndex2].fZIndex
|
|
|
|
sTWSData.sDrawCalls[iIndex2].iIndex = sTWSData.sDrawCalls[iIndex1].iIndex
|
|
sTWSData.sDrawCalls[iIndex2].eType = sTWSData.sDrawCalls[iIndex1].eType
|
|
sTWSData.sDrawCalls[iIndex2].fZIndex = sTWSData.sDrawCalls[iIndex1].fZIndex
|
|
|
|
sTWSData.sDrawCalls[iIndex1].iIndex = iTMPIndex
|
|
sTWSData.sDrawCalls[iIndex1].eType = eTMPType
|
|
sTWSData.sDrawCalls[iIndex1].fZIndex = iTmpZIndex
|
|
|
|
ENDPROC
|
|
|
|
FUNC INT TWS_PARTITION_QUICK_SORT(TWS_DRAW_CALL &sArray[], INT iLowIndex, INT iHighIndex)
|
|
|
|
FLOAT fPivot = sArray[iHighIndex].fZIndex
|
|
|
|
INT j, i = iLowIndex - 1
|
|
|
|
FOR j = iLowIndex TO iHighIndex - 1
|
|
|
|
IF sArray[j].fZIndex < fPivot
|
|
i++
|
|
|
|
TWS_SWAP_DRAW_CALLS(i, j)
|
|
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
TWS_SWAP_DRAW_CALLS(i, iHighIndex)
|
|
RETURN i+1
|
|
|
|
ENDFUNC
|
|
|
|
PROC TWS_QUICK_SORT_ENTITIES(TWS_DRAW_CALL &sArray[], INT iLowIndex, INT iHighIndex)
|
|
|
|
INT pi
|
|
|
|
IF sArray[iLowIndex].fZIndex < sArray[iHighIndex].fZIndex
|
|
pi = TWS_PARTITION_QUICK_SORT(sArray, iLowIndex, iHighIndex)
|
|
TWS_QUICK_SORT_ENTITIES(sArray, iLowIndex, pi -1)
|
|
TWS_QUICK_SORT_ENTITIES(sArray, pi +1, iHighIndex)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC TWS_UPDATE_Z_INDEXES()
|
|
|
|
INT i
|
|
FOR i = 0 TO ciTWS_MAX_DRAW_CALLS-1
|
|
SWITCH sTWSData.sDrawCalls[i].eType
|
|
CASE TWS_ENTITY_ENEMY
|
|
IF sEnemyData[sTWSData.sDrawCalls[i].iIndex].eEnemyType = TWS_ENEMY_BOSS_SPIDER
|
|
sTWSData.sDrawCalls[i].fZIndex = sEnemyData[sTWSData.sDrawCalls[i].iIndex].vSpritePos.y + sEnemyData[sTWSData.sDrawCalls[i].iIndex].vSpriteSize.y/2 + sEnemyData[sTWSData.sDrawCalls[i].iIndex].vSpriteOffset.y
|
|
ELSE
|
|
sTWSData.sDrawCalls[i].fZIndex = sEnemyData[sTWSData.sDrawCalls[i].iIndex].vSpritePos.y + sEnemyData[sTWSData.sDrawCalls[i].iIndex].vSpriteSize.y + sEnemyData[sTWSData.sDrawCalls[i].iIndex].vSpriteOffset.y
|
|
ENDIF
|
|
|
|
BREAK
|
|
CASE TWS_ENTITY_PLAYER
|
|
IF sPlayerData.bIsJumping
|
|
sTWSData.sDrawCalls[i].fZIndex = sPlayerData.vInitialJumpPos.y + sPlayerData.vSpriteSize.y + sEnemyData[sTWSData.sDrawCalls[i].iIndex].vSpriteOffset.y
|
|
ELSE
|
|
sTWSData.sDrawCalls[i].fZIndex = sPlayerData.vSpritePos.y + sPlayerData.vSpriteSize.y + sEnemyData[sTWSData.sDrawCalls[i].iIndex].vSpriteOffset.y
|
|
ENDIF
|
|
BREAK
|
|
CASE TWS_ENTITY_FX
|
|
|
|
IF sFXData[sTWSData.sDrawCalls[i].iIndex].fZIndex != 0.0
|
|
sTWSData.sDrawCalls[i].fZIndex = sFXData[sTWSData.sDrawCalls[i].iIndex].fZIndex
|
|
ELSE
|
|
sTWSData.sDrawCalls[i].fZIndex = sFXData[sTWSData.sDrawCalls[i].iIndex].vSpritePos.y + sFXData[sTWSData.sDrawCalls[i].iIndex].vSpriteSize.y
|
|
ENDIF
|
|
BREAK
|
|
CASE TWS_ENTITY_TRAP
|
|
IF sTrapsData[sTWSData.sDrawCalls[i].iIndex].eType = TWS_TRAP_HOLE OR sTrapsData[sTWSData.sDrawCalls[i].iIndex].eType = TWS_TRAP_STALAGTITE
|
|
sTWSData.sDrawCalls[i].fZIndex = 0.0
|
|
ELSE
|
|
sTWSData.sDrawCalls[i].fZIndex = sTrapsData[sTWSData.sDrawCalls[i].iIndex].vSpritePos.y + sTrapsData[sTWSData.sDrawCalls[i].iIndex].vSpriteSize.y
|
|
ENDIF
|
|
BREAK
|
|
CASE TWS_ENTITY_ITEM
|
|
sTWSData.sDrawCalls[i].fZIndex = sItemData[sTWSData.sDrawCalls[i].iIndex].vSpritePos.y + sItemData[sTWSData.sDrawCalls[i].iIndex].vSpriteSize.y
|
|
BREAK
|
|
CASE TWS_ENTITY_NPC
|
|
sTWSData.sDrawCalls[i].fZIndex = - 100
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDFOR
|
|
ENDPROC
|
|
|
|
PROC TWS_STOP_ALL_SOUND_LOOPS()
|
|
|
|
ARCADE_GAMES_SOUND_STOP(ARCADE_GAMES_SOUND_TWR_PLAYER_WALK_LOOP)
|
|
ARCADE_GAMES_SOUND_STOP(ARCADE_GAMES_SOUND_TWR_BOSS_SPIDER_CLIMB_LOOP)
|
|
ARCADE_GAMES_SOUND_STOP(ARCADE_GAMES_SOUND_TWR_AMBIENCE_LOOP_FOREST)
|
|
ARCADE_GAMES_SOUND_STOP(ARCADE_GAMES_SOUND_TWR_AMBIENCE_LOOP_SWAMP)
|
|
ARCADE_GAMES_SOUND_STOP(ARCADE_GAMES_SOUND_TWR_AMBIENCE_LOOP_CAVES)
|
|
ARCADE_GAMES_SOUND_STOP(ARCADE_GAMES_SOUND_TWR_AMBIENCE_LOOP_CASTLE)
|
|
|
|
ENDPROC
|
|
|
|
FUNC BOOL TWS_IS_PLAYER_USING_MAGIC()
|
|
|
|
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) AND IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_RIGHT)
|
|
OR NOT IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) AND IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_RUP)
|
|
RETURN TRUE
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_IS_ENEMY_HIT_OR_DEAD(INT i)
|
|
IF sEnemyData[i].bIsHit OR sEnemyData[i].fHealth <= 0.0
|
|
RETURN TRUE
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_IS_ANY_ACCEPT_BUTTON_PRESSED()
|
|
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_SELECT)
|
|
OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_RRIGHT)
|
|
OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_SCRIPT_SELECT)
|
|
OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_SKIP_CUTSCENE)
|
|
OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_SELECT)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
FUNC BOOL TWS_IS_CANCEL_BUTTON_PRESSED()
|
|
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
FUNC FLOAT TWS_GET_Z_WIDTH_FOR_ENEMY_TYPE(TWS_ENEMY_TYPE eType)
|
|
|
|
SWITCH eType
|
|
|
|
CASE TWS_ENEMY_BOSS_SPIDER
|
|
RETURN 250.0
|
|
|
|
CASE TWS_ENEMY_BOSS_KNIGHT
|
|
CASE TWS_ENEMY_KNIGHT
|
|
CASE TWS_ENEMY_BRUTE_AXE
|
|
CASE TWS_ENEMY_BRUTE
|
|
RETURN 200.0
|
|
|
|
CASE TWS_ENEMY_LEPRECHAUN
|
|
CASE TWS_ENEMY_FAIRY
|
|
CASE TWS_ENEMY_GRUNT
|
|
CASE TWS_ENEMY_GRUNT_SWORD
|
|
CASE TWS_ENEMY_GRUNT_SPEAR
|
|
CASE TWS_ENEMY_GRUNT_FIRESPEAR
|
|
CASE TWS_ENEMY_GRUNT_FIRESWORD
|
|
CASE TWS_ENEMY_GRUNT_CASTER
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW
|
|
CASE TWS_ENEMY_BAT
|
|
RETURN 150.0
|
|
|
|
CASE TWS_ENEMY_SLIME
|
|
CASE TWS_ENEMY_SPIDER
|
|
|
|
CASE TWS_ENEMY_SNAKE
|
|
RETURN 120.0
|
|
|
|
CASE TWS_ENEMY_BOSS_AMAZON
|
|
RETURN 100.0
|
|
|
|
CASE TWS_ENEMY_BOULDER
|
|
RETURN 50.0
|
|
|
|
ENDSWITCH
|
|
|
|
RETURN 150.0
|
|
|
|
ENDFUNC
|
|
|
|
PROC TWS_SPAWN_FALLING_ITEMS(VECTOR_2D vPos, TWS_ENEMY_TYPE eType)
|
|
|
|
TWS_ITEM_TYPE eReward = TWS_ITEM_NONE
|
|
|
|
INT iPoints = (4 - sPlayerData.iLevel) + BOOL_TO_INT(sTWSData.bIsHardCoreMode)
|
|
|
|
SWITCH eType
|
|
CASE TWS_ENEMY_FAIRY
|
|
CASE TWS_ENEMY_BAT
|
|
CASE TWS_ENEMY_LEPRECHAUN
|
|
iPoints += 1
|
|
BREAK
|
|
|
|
CASE TWS_ENEMY_SLIME
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW
|
|
CASE TWS_ENEMY_GRUNT_CASTER
|
|
CASE TWS_ENEMY_GRUNT_SWORD
|
|
CASE TWS_ENEMY_GRUNT_SPEAR
|
|
CASE TWS_ENEMY_SNAKE
|
|
CASE TWS_ENEMY_SPIDER
|
|
iPoints += 2
|
|
BREAK
|
|
|
|
CASE TWS_ENEMY_BRUTE_AXE
|
|
CASE TWS_ENEMY_BRUTE
|
|
CASE TWS_ENEMY_GRUNT
|
|
iPoints += 3
|
|
BREAK
|
|
|
|
CASE TWS_ENEMY_BOULDER
|
|
CASE TWS_ENEMY_KNIGHT
|
|
CASE TWS_ENEMY_GRUNT_FIRESPEAR
|
|
CASE TWS_ENEMY_GRUNT_FIRESWORD
|
|
iPoints += 4
|
|
BREAK
|
|
|
|
CASE TWS_ENEMY_FAKE_WIZARD
|
|
iPoints -= 4
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF iPoints >= 7
|
|
CPRINTLN(DEBUG_MINIGAME, "TWS - Spawning falling treasure: Gem. Points: ", iPoints)
|
|
eReward = TWS_ITEM_GOLD_4
|
|
ELIF iPoints = 6
|
|
CPRINTLN(DEBUG_MINIGAME, "TWS - Spawning falling treasure: Goblet. Points: ", iPoints)
|
|
eReward = TWS_ITEM_GOLD_3
|
|
ELIF iPoints = 5
|
|
CPRINTLN(DEBUG_MINIGAME, "TWS - Spawning falling treasure: Coin Pile. Points: ", iPoints)
|
|
eReward = TWS_ITEM_GOLD_2
|
|
ELIF iPoints > 3
|
|
CPRINTLN(DEBUG_MINIGAME, "TWS - Spawning falling treasure: Coin Purse. Points: ", iPoints)
|
|
eReward = TWS_ITEM_GOLD_1
|
|
ELSE
|
|
CPRINTLN(DEBUG_MINIGAME, "TWS - Not spawning any treasure. Points: ", iPoints)
|
|
ENDIF
|
|
|
|
// TREASURE
|
|
IF sTWSData.bLockedScreen AND sTWSData.eCurrentLevel = TWS_CAVES
|
|
|
|
IF sPlayerData.bIsJumping
|
|
vPos.y = sPlayerData.vInitialJumpPos.y + sPlayerData.vSpriteSize.y/2
|
|
ELSE
|
|
vPos.y = sPlayerData.vSpritePos.y + sPlayerData.vSpriteSize.y/2
|
|
ENDIF
|
|
|
|
IF (sPlayerData.iLifes > 1 AND GET_RANDOM_INT_IN_RANGE(0, 100) < 5)
|
|
OR (sTWSData.eLevelStage = TWS_LEVEL_BOSS_FIGHT AND sPlayerData.fHealth <= 0.6 AND sPlayerData.iLifes = 1 AND GET_RANDOM_INT_IN_RANGE(0, 100) < 25)
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(vPos.x + GET_RANDOM_FLOAT_IN_RANGE(-50.0, 50.0), vPos.y), eReward, TRUE)
|
|
ENDIF
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(vPos.x + GET_RANDOM_FLOAT_IN_RANGE(-50.0, 50.0), vPos.y), eReward, TRUE)
|
|
|
|
ELSE
|
|
|
|
IF (sPlayerData.iLifes > 1 AND GET_RANDOM_INT_IN_RANGE(0, 100) < 5)
|
|
OR (sTWSData.eLevelStage = TWS_LEVEL_BOSS_FIGHT AND sPlayerData.fHealth <= 0.6 AND sPlayerData.iLifes = 1 AND GET_RANDOM_INT_IN_RANGE(0, 100) < 25)
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(vPos.x + GET_RANDOM_FLOAT_IN_RANGE(-50.0, 50.0), vPos.y + GET_RANDOM_FLOAT_IN_RANGE(-50.0, 50.0)), eReward, TRUE)
|
|
ENDIF
|
|
|
|
TWS_ADD_ITEM_TO_LIST(INIT_VECTOR_2D(vPos.x + GET_RANDOM_FLOAT_IN_RANGE(-50.0, 50.0), vPos.y + GET_RANDOM_FLOAT_IN_RANGE(-50.0, 50.0)), eReward, TRUE)
|
|
|
|
ENDIF
|
|
|
|
// HEALTH AND MAGIC
|
|
IF sTWSData.eLevelStage >= TWS_LEVEL_BOSS_FIGHT
|
|
|
|
IF sPlayerData.fHealth < 0.5
|
|
IF GET_RANDOM_INT_IN_RANGE(0, 10) < 2
|
|
TWS_ADD_ITEM_TO_LIST(vPos, TWS_ITEM_HP_SMA, TRUE)
|
|
ENDIF
|
|
ELIF sPlayerData.fHealth >= 0.5
|
|
IF GET_RANDOM_INT_IN_RANGE(0, 10) < 2
|
|
TWS_ADD_ITEM_TO_LIST(vPos, TWS_ITEM_MP_SMA, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF sPlayerData.fHealth < 0.25
|
|
IF GET_RANDOM_INT_IN_RANGE(0, 100) < 5
|
|
TWS_ADD_ITEM_TO_LIST(vPos, TWS_ITEM_HP_LAR, TRUE)
|
|
|
|
ELIF GET_RANDOM_INT_IN_RANGE(0, 100) < 35
|
|
TWS_ADD_ITEM_TO_LIST(vPos, TWS_ITEM_HP_MED, TRUE)
|
|
|
|
ELIF GET_RANDOM_INT_IN_RANGE(0, 100) < 40
|
|
TWS_ADD_ITEM_TO_LIST(vPos, TWS_ITEM_MP_LAR, TRUE)
|
|
|
|
ENDIF
|
|
|
|
ELIF sPlayerData.fHealth < 0.5
|
|
|
|
IF GET_RANDOM_INT_IN_RANGE(0, 100) < 5
|
|
TWS_ADD_ITEM_TO_LIST(vPos, TWS_ITEM_HP_MED, TRUE)
|
|
|
|
ELIF GET_RANDOM_INT_IN_RANGE(0, 100) < 35
|
|
TWS_ADD_ITEM_TO_LIST(vPos, TWS_ITEM_HP_SMA, TRUE)
|
|
|
|
ELIF GET_RANDOM_INT_IN_RANGE(0, 100) < 40
|
|
TWS_ADD_ITEM_TO_LIST(vPos, TWS_ITEM_MP_MED, TRUE)
|
|
|
|
ENDIF
|
|
|
|
ELIF sPlayerData.fHealth < 0.75
|
|
|
|
IF GET_RANDOM_INT_IN_RANGE(0, 100) < 5
|
|
TWS_ADD_ITEM_TO_LIST(vPos, TWS_ITEM_MP_MED, TRUE)
|
|
|
|
ELIF GET_RANDOM_INT_IN_RANGE(0, 100) < 25
|
|
TWS_ADD_ITEM_TO_LIST(vPos, TWS_ITEM_MP_SMA, TRUE)
|
|
|
|
ELIF GET_RANDOM_INT_IN_RANGE(0, 100) < 30
|
|
TWS_ADD_ITEM_TO_LIST(vPos, TWS_ITEM_HP_SMA, TRUE)
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF GET_RANDOM_INT_IN_RANGE(0, 100) < 5
|
|
TWS_ADD_ITEM_TO_LIST(vPos, TWS_ITEM_MP_SMA, TRUE)
|
|
|
|
ELIF GET_RANDOM_INT_IN_RANGE(0, 100) < 15
|
|
TWS_ADD_ITEM_TO_LIST(vPos, TWS_ITEM_MP_SMA, TRUE)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
FUNC INT TWS_GET_SCORE_BONUS_FOR_ENEMY_TYPE(TWS_ENEMY_TYPE eType)
|
|
|
|
SWITCH eType
|
|
|
|
|
|
CASE TWS_ENEMY_FAIRY
|
|
CASE TWS_ENEMY_SLIME
|
|
CASE TWS_ENEMY_SNAKE
|
|
CASE TWS_ENEMY_SPIDER
|
|
CASE TWS_ENEMY_BAT
|
|
CASE TWS_ENEMY_FAKE_WIZARD
|
|
RETURN 40
|
|
|
|
CASE TWS_ENEMY_GRUNT_CROSSBOW
|
|
CASE TWS_ENEMY_GRUNT
|
|
CASE TWS_ENEMY_GRUNT_SWORD
|
|
CASE TWS_ENEMY_GRUNT_SPEAR
|
|
CASE TWS_ENEMY_GRUNT_FIRESPEAR
|
|
CASE TWS_ENEMY_GRUNT_FIRESWORD
|
|
CASE TWS_ENEMY_GRUNT_CASTER
|
|
CASE TWS_ENEMY_LEPRECHAUN
|
|
RETURN 90
|
|
|
|
CASE TWS_ENEMY_KNIGHT
|
|
CASE TWS_ENEMY_BRUTE_AXE
|
|
CASE TWS_ENEMY_BRUTE
|
|
RETURN 190
|
|
|
|
CASE TWS_ENEMY_BOULDER
|
|
CASE TWS_ENEMY_BOSS_SPIDER
|
|
CASE TWS_ENEMY_BOSS_KNIGHT
|
|
CASE TWS_ENEMY_BOSS_AMAZON
|
|
CASE TWS_ENEMY_BOSS_WIZARD
|
|
RETURN 1000
|
|
|
|
ENDSWITCH
|
|
|
|
RETURN 90
|
|
|
|
ENDFUNC
|
|
|
|
FUNC INT TWS_GET_SCORE_BONUS_FOR_GOLD_TYPE(TWS_ITEM_TYPE eType)
|
|
|
|
SWITCH eType
|
|
CASE TWS_ITEM_GOLD_1
|
|
RETURN 1000
|
|
|
|
CASE TWS_ITEM_GOLD_2
|
|
RETURN 2000
|
|
|
|
CASE TWS_ITEM_GOLD_3
|
|
RETURN 4000
|
|
|
|
CASE TWS_ITEM_GOLD_4
|
|
RETURN 5000
|
|
|
|
ENDSWITCH
|
|
|
|
RETURN 400
|
|
|
|
ENDFUNC
|
|
|
|
FUNC FLOAT TWS_GET_PLAYER_SHADOW_X_OFFSET()
|
|
|
|
IF sPlayerData.bFacingLeft
|
|
RETURN - sPlayerData.fShadowXOffset
|
|
ELSE
|
|
RETURN sPlayerData.fShadowXOffset
|
|
ENDIF
|
|
|
|
ENDFUNC
|
|
|
|
PROC TWS_MOVE_ENEMY(INT iEnemy, FLOAT fMoveIfHigherThan, FLOAT fSpeedRate = 1.0)
|
|
|
|
IF VECTOR_2D_DIST(sEnemyData[iEnemy].vSpritePos, INIT_VECTOR_2D(sEnemyData[iEnemy].vSpritePos.x, sEnemyData[iEnemy].vTargetPos.Y)) > fMoveIfHigherThan AND sEnemyData[iEnemy].vTargetPos.y < sEnemyData[iEnemy].vSpritePos.y
|
|
|
|
sEnemyData[iEnemy].vSpritePos.y = sEnemyData[iEnemy].vSpritePos.y -@ cfTWS_VERTICAL_MOVEMENT_ENEMY*fSpeedRate
|
|
|
|
ELIF VECTOR_2D_DIST(sEnemyData[iEnemy].vSpritePos, INIT_VECTOR_2D(sEnemyData[iEnemy].vSpritePos.x, sEnemyData[iEnemy].vTargetPos.Y)) > fMoveIfHigherThan AND sEnemyData[iEnemy].vTargetPos.Y > sEnemyData[iEnemy].vSpritePos.Y
|
|
|
|
sEnemyData[iEnemy].vSpritePos.y = sEnemyData[iEnemy].vSpritePos.y +@ cfTWS_VERTICAL_MOVEMENT_ENEMY*fSpeedRate
|
|
|
|
ELIF VECTOR_2D_DIST(sEnemyData[iEnemy].vSpritePos, INIT_VECTOR_2D(sEnemyData[iEnemy].vTargetPos.x, sEnemyData[iEnemy].vSpritePos.Y)) > fMoveIfHigherThan AND sEnemyData[iEnemy].vTargetPos.X < sEnemyData[iEnemy].vSpritePos.X
|
|
|
|
sEnemyData[iEnemy].vSpritePos.x = sEnemyData[iEnemy].vSpritePos.x -@ cfTWS_HORIZONTAL_MOVEMENT_ENEMY*fSpeedRate
|
|
ELIF VECTOR_2D_DIST(sEnemyData[iEnemy].vSpritePos, INIT_VECTOR_2D(sEnemyData[iEnemy].vTargetPos.x, sEnemyData[iEnemy].vSpritePos.Y)) > fMoveIfHigherThan AND sEnemyData[iEnemy].vTargetPos.X > sEnemyData[iEnemy].vSpritePos.X
|
|
|
|
sEnemyData[iEnemy].vSpritePos.x = sEnemyData[iEnemy].vSpritePos.x +@ cfTWS_HORIZONTAL_MOVEMENT_ENEMY*fSpeedRate
|
|
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC TWS_ADD_SCORE_FOR_KILL(TWS_ENEMY_TYPE eEnemyType)
|
|
|
|
sTWSData.sTelemetry.kills ++
|
|
sPlayerData.iScore += (TWS_GET_SCORE_BONUS_FOR_ENEMY_TYPE(eEnemyType) + 10*ENUM_TO_INT(sTWSData.eCurrentLevel)) + (30 - 10*sPlayerData.iLevel)
|
|
IF sPlayerData.iScore > sPlayerData.iHighestScore
|
|
sPlayerData.iHighestScore = sPlayerData.iScore
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
/// PURPOSE:
|
|
/// Draws the movie and returns true when the intro movie has completed
|
|
FUNC BOOL TWS_DRAW_MOVIE(BINK_MOVIE_ID bmID, FLOAT fRatioWidth, FLOAT fRatioHeight)
|
|
|
|
DRAW_BINK_MOVIE(bmID, cfSCREEN_CENTER, cfSCREEN_CENTER, fRatioWidth, fRatioHeight, 0.0, 255, 255, 255, 255)
|
|
|
|
IF GET_BINK_MOVIE_TIME(bmID) >= 99.0
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[Wizards Ruin] DG_DRAW_MOVIE - Stopping and releasing movie")
|
|
|
|
STOP_BINK_MOVIE(bmID)
|
|
RELEASE_BINK_MOVIE(bmID)
|
|
RETURN TRUE
|
|
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
|