diff --git a/source/enemy/npcdata.cpp b/source/enemy/npcdata.cpp index 9934d1cd2..3f3520f1c 100644 --- a/source/enemy/npcdata.cpp +++ b/source/enemy/npcdata.cpp @@ -1250,45 +1250,60 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = CNpcEnemy::NPC_UNIT_TYPE CNpcEnemy::mapEditConvertTable[NPC_UNIT_TYPE_MAX] = { - NPC_SMALL_JELLYFISH_1, - NPC_SMALL_JELLYFISH_2, - NPC_MOTHER_JELLYFISH, - NPC_ANEMONE_1, - NPC_ANEMONE_2, - NPC_ANEMONE_3, - NPC_BABY_OCTOPUS, - NPC_BALL_BLOB, - NPC_BOOGER_MONSTER, - NPC_PRICKLY_BUG, - NPC_CLAM_JUMP, - NPC_CLAM_STATIC, - NPC_EYEBALL, - NPC_FLAMING_SKULL, - NPC_FLYING_DUTCHMAN, - NPC_GHOST, - NPC_PARASITIC_WORM, - NPC_HERMIT_CRAB, - NPC_IRON_DOGFISH, - NPC_PUFFA_FISH, - NPC_SEA_SNAKE, - NPC_SHARK_MAN, - NPC_SUB_SHARK, - NPC_SKELETAL_FISH, - NPC_SPIDER_CRAB, - NPC_SQUID_DART, - NPC_SKULL_STOMPER, - NPC_DUST_DEVIL, - NPC_FALLING_ITEM, - NPC_FISH_HOOK, - NPC_PENDULUM, - NPC_FIREBALL, - NPC_SAW_BLADE, - NPC_FISH_FOLK, - NPC_ANGLER_FISH, - NPC_MINE, - NPC_ZOMBIE_FISH_FOLK, - NPC_NINJA_STARFISH, - NPC_GHOST_PIRATE, - NPC_OIL_BLOB, - NPC_PARASITIC_WORM_SEGMENT, + NPC_SMALL_JELLYFISH_1, + NPC_SMALL_JELLYFISH_2, + NPC_MOTHER_JELLYFISH, + NPC_ANEMONE_1, + NPC_ANEMONE_2, + NPC_ANEMONE_3, + NPC_BABY_OCTOPUS, + NPC_BALL_BLOB, + NPC_BOOGER_MONSTER, + NPC_PRICKLY_BUG, + NPC_CLAM_JUMP, + NPC_CLAM_STATIC, + NPC_EYEBALL, + NPC_FLAMING_SKULL, + NPC_FLYING_DUTCHMAN, + NPC_GHOST, + NPC_PARASITIC_WORM, + NPC_HERMIT_CRAB, + NPC_IRON_DOGFISH, + NPC_PUFFA_FISH, + NPC_SEA_SNAKE, + NPC_SHARK_MAN, + NPC_SUB_SHARK, + NPC_SKELETAL_FISH, + NPC_SPIDER_CRAB, + NPC_SQUID_DART, + NPC_SKULL_STOMPER, + NPC_DUST_DEVIL, + NPC_FALLING_ITEM, + NPC_FISH_HOOK, + NPC_PENDULUM, + NPC_FIREBALL, + NPC_SAW_BLADE, + NPC_FISH_FOLK, + NPC_ANGLER_FISH, + NPC_MINE, + NPC_ZOMBIE_FISH_FOLK, + NPC_NINJA_STARFISH, + NPC_GHOST_PIRATE, + NPC_OIL_BLOB, + NPC_PARASITIC_WORM_SEGMENT, }; + +CNpcPlatform::NPC_PLATFORM_UNIT_TYPE CNpcPlatform::mapEditConvertTable[NPC_PLATFORM_TYPE_MAX] = +{ + NPC_BUBBLE_PLATFORM, + NPC_LINEAR_PLATFORM, + NPC_CIRCULAR_PLATFORM, + NPC_COLLAPSING_BUBBLE_PLATFORM, + NPC_FISH_HOOK_PLATFORM, + NPC_RETRACTING_PLATFORM, + NPC_GEYSER_PLATFORM, + NPC_BOBBING_PLATFORM, + NPC_FALLING_PLATFORM, + NPC_CART_PLATFORM, + NPC_PLAYER_BUBBLE_PLATFORM, +}; \ No newline at end of file diff --git a/source/game/game.cpp b/source/game/game.cpp index 8713e811f..d85d582db 100644 --- a/source/game/game.cpp +++ b/source/game/game.cpp @@ -276,7 +276,9 @@ void CGameScene::initLevel() m_player->setMapSize(Level.getMapSize()); // Init actors (needs moving and tidying + int pointNum; int actorNum; + int platformNum; sThingActor **actorList = Level.getActorList(); if (actorList) @@ -296,7 +298,6 @@ void CGameScene::initLevel() enemy->init(); enemy->setLayerCollision( Level.getCollisionLayer() ); - int pointNum; u16 *PntList=(u16*)MakePtr(actorList[actorNum],sizeof(sThingActor)); u16 newXPos, newYPos; @@ -332,6 +333,50 @@ void CGameScene::initLevel() } } } + + sThingPlatform **platformList = Level.getPlatformList(); + if (platformList) + { + for ( platformNum = 0 ; platformNum < Level.getPlatformCount() ; platformNum++ ) + { + CNpcPlatform *platform; + platform = new ("platform") CNpcPlatform; + ASSERT(platform); + platform->setTypeFromMapEdit( platformList[platformNum]->Type ); + + u16 *PntList=(u16*)MakePtr(platformList[platformNum],sizeof(sThingPlatform)); + + u16 newXPos, newYPos; + + newXPos = (u16) *PntList; + PntList++; + newYPos = (u16) *PntList; + PntList++; + + DVECTOR startPos; + startPos.vx = newXPos; + startPos.vy = newYPos; + + platform->init( startPos ); + platform->setLayerCollision( Level.getCollisionLayer() ); + + platform->addWaypoint( newXPos, newYPos ); + + if ( platformList[platformNum]->PointCount > 1 ) + { + for ( pointNum = 1 ; pointNum < platformList[platformNum]->PointCount ; pointNum++ ) + { + newXPos = (u16) *PntList; + PntList++; + newYPos = (u16) *PntList; + PntList++; + + platform->addWaypoint( newXPos, newYPos ); + } + } + } + } + // Song is loaded/dumped by the level, and played from here. This just gives some // better timing over when it starts (pkg) CSoundMediator::playSong(); diff --git a/source/level/level.h b/source/level/level.h index 0a3517805..8e6ce73cc 100644 --- a/source/level/level.h +++ b/source/level/level.h @@ -36,6 +36,8 @@ public: static DVECTOR getPlayerSpawnPos() {return s_playerSpawnPos;} int getActorCount() {return ActorCount;} sThingActor **getActorList() {return ActorList;} + int getPlatformCount() {return PlatformCount;} + sThingPlatform **getPlatformList() {return PlatformList;} CLayerCollision *getCollisionLayer() {return CollisionLayer;} DVECTOR getMapSize();