diff --git a/makefile.gaz b/makefile.gaz index 86b6d476e..fc9065bbd 100644 --- a/makefile.gaz +++ b/makefile.gaz @@ -94,8 +94,7 @@ game_src := convo \ game \ gamebubs \ gameslot \ - pause \ - thing + pause gfx_src := prim \ tpage \ diff --git a/source/enemy/npc.cpp b/source/enemy/npc.cpp index 2a94f07c0..853596fa6 100644 --- a/source/enemy/npc.cpp +++ b/source/enemy/npc.cpp @@ -54,6 +54,8 @@ class CLayerCollision *CNpc::m_layerCollision; void CNpc::init() { + CEnemyThing::init(); + m_type = NPC_CIRCULAR_PLATFORM; m_heading = m_fireHeading = 0; @@ -77,6 +79,9 @@ void CNpc::init() m_layerCollision = NULL; +//pkg +m_npcPath.initPath(); +//pkg switch ( m_data[this->m_type].initFunc ) { case NPC_INIT_DEFAULT: @@ -277,11 +282,15 @@ void CNpc::init() void CNpc::shutdown() { m_npcPath.removeAllWaypoints(); + + CEnemyThing::shutdown(); } void CNpc::think(int _frames) { + CEnemyThing::think(_frames); + processGenericGetUserDist( _frames, &playerXDist, &playerYDist ); playerXDistSqr = playerXDist * playerXDist; playerYDistSqr = playerYDist * playerYDist; @@ -941,6 +950,7 @@ void CNpc::processTimer(int _frames) void CNpc::render() { + CEnemyThing::render(); } void CNpc::processEvent( GAME_EVENT evt, CThing *sourceThing ) diff --git a/source/enemy/npc.h b/source/enemy/npc.h index f15843cb1..db3f3ec2c 100644 --- a/source/enemy/npc.h +++ b/source/enemy/npc.h @@ -15,7 +15,11 @@ #define __ENEMY_NPC_H__ //#include -#include "Game/Thing.h" + +#ifndef __THING_THING_H__ +#include "thing/thing.h" +#endif + #include "Gfx/Skel.h" #ifndef __ENEMY_NPCPATH_H__ @@ -28,7 +32,7 @@ /*****************************************************************************/ -class CNpc : public CThing +class CNpc : public CEnemyThing { public: enum NPC_UNIT_TYPE diff --git a/source/enemy/npcdata.cpp b/source/enemy/npcdata.cpp index 9f168779c..cf449e3d7 100644 --- a/source/enemy/npcdata.cpp +++ b/source/enemy/npcdata.cpp @@ -33,7 +33,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_GARY @@ -47,7 +47,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 2048, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_FALLING_ITEM @@ -61,7 +61,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 8, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_FISH_HOOK @@ -75,7 +75,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_DUST_DEVIL @@ -89,7 +89,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 2048, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_PENDULUM @@ -103,7 +103,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 2048, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_FIREBALL @@ -117,7 +117,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 40, 2048, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_SAW_BLADE @@ -131,7 +131,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 2048, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_LINEAR_PLATFORM @@ -145,7 +145,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_CIRCULAR_PLATFORM @@ -159,7 +159,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_SMALL_JELLYFISH_1 @@ -173,7 +173,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_SMALL_JELLYFISH_2 @@ -187,7 +187,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_ANEMONE_1 @@ -201,7 +201,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 0, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_ANEMONE_2 @@ -215,7 +215,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 0, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_ANEMONE_3 @@ -229,7 +229,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 0, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_SKELETAL_FISH @@ -243,7 +243,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 2048, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_CLAM @@ -256,7 +256,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 0, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_SQUID_DART @@ -270,7 +270,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 5, 256, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_FISH_FOLK @@ -284,7 +284,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 2, 2048, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_PRICKLY_BUG @@ -298,7 +298,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 1, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_SEA_SNAKE_1 @@ -312,7 +312,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 256, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_SEA_SNAKE_2 @@ -326,7 +326,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 256, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_PUFFA_FISH @@ -340,7 +340,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 2, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_ANGLER_FISH @@ -354,7 +354,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 1, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_HERMIT_CRAB @@ -368,7 +368,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 2, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_MINE @@ -382,7 +382,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 0, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_BOOGER_MONSTER @@ -396,7 +396,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 0, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_SPIDER_CRAB @@ -410,7 +410,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 2048, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_EYEBALL @@ -424,7 +424,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 0, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_BABY_OCTOPUS @@ -438,7 +438,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 2, 512, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_ZOMBIE_FISH_FOLK @@ -452,7 +452,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 2, 2048, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_NINJA_STARFISH @@ -466,7 +466,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 64, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_GHOST @@ -480,7 +480,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 2, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_GHOST_PIRATE @@ -494,7 +494,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 0, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_FLAMING_SKULL @@ -508,7 +508,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 128, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_SHARK_MAN @@ -522,7 +522,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 2048, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_OIL_BLOB @@ -536,7 +536,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 64, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_SKULL_STOMPER @@ -550,7 +550,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 5, 2048, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_MOTHER_JELLYFISH @@ -564,7 +564,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 256, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_SUB_SHARK @@ -578,7 +578,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 256, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_FLYING_DUTCHMAN @@ -592,7 +592,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 256, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, { // NPC_IRON_DOGFISH @@ -606,6 +606,6 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 2048, false, - DAMAGE__LAVA, + DAMAGE__HIT_ENEMY, }, }; \ No newline at end of file diff --git a/source/game/game.cpp b/source/game/game.cpp index c285a5f49..a5fbb00c2 100644 --- a/source/game/game.cpp +++ b/source/game/game.cpp @@ -99,18 +99,18 @@ void CGameScene::init() Level.init(); -#ifdef __USER_charles__ +//#ifdef __USER_charles__ C2dEnemy *enemy; enemy=new ("test enemy") C2dEnemy; enemy->init(); enemy->setLayerCollision( Level.getCollisionLayer() ); -#endif +//#endif #ifdef __USER_paul__ DVECTOR pos={16*10,16*10}; - createPickup(PICKUP__100_PERCENT_LIFE,&pos); - pos.vx+=32; createPickup(PICKUP__50_PERCENT_LIFE,&pos); - pos.vx+=32; createPickup(PICKUP__25_PERCENT_LIFE,&pos); + createPickup(PICKUP__BIG_HEALTH,&pos); + pos.vx+=32; createPickup(PICKUP__MEDIUM_HEALTH,&pos); + pos.vx+=32; createPickup(PICKUP__SMALL_HEALTH,&pos); pos.vx+=32; createPickup(PICKUP__LIFE,&pos); pos.vx+=32; createPickup(PICKUP__SPATULA,&pos); pos.vx+=32; createPickup(PICKUP__JELLY_LAUNCHER_AMMO,&pos); diff --git a/source/game/game.h b/source/game/game.h index 01e953240..f2c70a305 100644 --- a/source/game/game.h +++ b/source/game/game.h @@ -12,10 +12,6 @@ #include "game\event.h" #endif -#ifndef __GAME_THING_H__ -#include "game\thing.h" -#endif - /*****************************************************************************/ class FontBank; @@ -37,7 +33,7 @@ virtual int canPause(); static MATRIX *GetCamMtx() {return(&CamMtx);} class CPlayer *getPlayer(); - void sendEvent( GAME_EVENT evt, CThing *sourceThing ); + void sendEvent( GAME_EVENT evt, class CThing *sourceThing ); static void setReadyToExit() {s_readyToExit=true;} diff --git a/source/pickups/phealth.cpp b/source/pickups/phealth.cpp index f07073406..a2dd323bb 100644 --- a/source/pickups/phealth.cpp +++ b/source/pickups/phealth.cpp @@ -116,11 +116,11 @@ void CBaseHealthPickup::renderPickup(DVECTOR *_pos) Params: Returns: ---------------------------------------------------------------------- */ -int C100HealthPickup::getHealthPoints() +int CLargeHealthPickup::getHealthPoints() { - return 100; + return 5; } -int C100HealthPickup::getFrameNumber() +int CLargeHealthPickup::getFrameNumber() { return FRM__HEALTH100; } @@ -131,11 +131,11 @@ int C100HealthPickup::getFrameNumber() Params: Returns: ---------------------------------------------------------------------- */ -int C50HealthPickup::getHealthPoints() +int CMediumHealthPickup::getHealthPoints() { - return 50; + return 3; } -int C50HealthPickup::getFrameNumber() +int CMediumHealthPickup::getFrameNumber() { return FRM__HEALTH50; } @@ -146,11 +146,11 @@ int C50HealthPickup::getFrameNumber() Params: Returns: ---------------------------------------------------------------------- */ -int C25HealthPickup::getHealthPoints() +int CSmallHealthPickup::getHealthPoints() { - return 25; + return 1; } -int C25HealthPickup::getFrameNumber() +int CSmallHealthPickup::getFrameNumber() { return FRM__HEALTH25; } diff --git a/source/pickups/phealth.h b/source/pickups/phealth.h index 2f45c92a9..cd141f1b7 100644 --- a/source/pickups/phealth.h +++ b/source/pickups/phealth.h @@ -54,21 +54,21 @@ private: }; -class C100HealthPickup : public CBaseHealthPickup +class CLargeHealthPickup : public CBaseHealthPickup { protected: virtual int getHealthPoints(); virtual int getFrameNumber(); }; -class C50HealthPickup : public CBaseHealthPickup +class CMediumHealthPickup : public CBaseHealthPickup { protected: virtual int getHealthPoints(); virtual int getFrameNumber(); }; -class C25HealthPickup : public CBaseHealthPickup +class CSmallHealthPickup : public CBaseHealthPickup { protected: virtual int getHealthPoints(); diff --git a/source/pickups/pickup.cpp b/source/pickups/pickup.cpp index 293b5469f..1cab4b5d2 100644 --- a/source/pickups/pickup.cpp +++ b/source/pickups/pickup.cpp @@ -231,13 +231,15 @@ void CBaseRespawningPickup::init() Params: Returns: ---------------------------------------------------------------------- */ +int respawnFlashFrames=50; void CBaseRespawningPickup::think(int _frames) { - if(m_respawnTime==0) + if(m_respawnTime<=respawnFlashFrames) { CBasePickup::think(_frames); } - else + + if(m_respawnTime) { m_respawnTime-=_frames; if(m_respawnTime<0) @@ -256,7 +258,7 @@ void CBaseRespawningPickup::think(int _frames) void CBaseRespawningPickup::render() { if(m_respawnTime==0|| - m_respawnTime<50&&!(m_respawnTime&3)) + m_respawnTimecheckCollisionAgainst(thing2)) + if(thing1->canCollide()&& + thing1->checkCollisionAgainst(thing2)) { thing1->collidedWith(thing2); } @@ -180,6 +177,7 @@ void CThingManager::addToThingList(CThing *_this) { _this->m_nextThing=s_thingLists[_this->getThingType()]; s_thingLists[_this->getThingType()]=_this; +PAUL_DBGMSG("Added thing type %d",_this->getThingType()); } /*---------------------------------------------------------------------- @@ -226,10 +224,8 @@ void CThing::init() // Add to thing list CThingManager::addToThingList(this); - setCollisionSize(20,20); // Some temporary defaults.. (pkg) setCollisionCentreOffset(0,0); -m_collisionCentreOffset.vx=m_collisionCentreOffset.vy=0; } /*---------------------------------------------------------------------- @@ -304,7 +300,6 @@ void CThing::render() y2=Pos.vy+10-ofs.vy; DrawLine(x1,y1,x2,y2,255,0,0,0); DrawLine(x2,y1,x1,y2,255,0,0,0); - } #endif } @@ -420,8 +415,6 @@ void CThing::setCollisionSize(int _w,int _h) ---------------------------------------------------------------------- */ void CThing::updateCollisionArea() { - DVECTOR size; - m_collisionCentre.vx=Pos.vx+m_collisionCentreOffset.vx; m_collisionCentre.vy=Pos.vy+m_collisionCentreOffset.vy; m_collisionArea.x1=m_collisionCentre.vx-(m_collisionSize.vx/2); @@ -450,29 +443,16 @@ int CThing::checkCollisionAgainst(CThing *_thisThing) if(abs(pos.vx-thisThingPos.vx)getCollisionArea(); -//static int val=0; if(((thisRect.x1>=thatRect.x1&&thisRect.x1<=thatRect.x2)||(thisRect.x2>=thatRect.x1&&thisRect.x2<=thatRect.x2))&& ((thisRect.y1>=thatRect.y1&&thisRect.y1<=thatRect.y2)||(thisRect.y2>=thatRect.y1&&thisRect.y2<=thatRect.y2))) { -//PAUL_DBGMSG("hit %d",val++); collided=true; } - else - { -//PAUL_DBGMSG("close %d",val++); - } - } - else - { -//PAUL_DBGMSG("%03d %03d ( %d%d )", -// abs(Pos.vx-thisThingPos.vx),abs(Pos.vy-thisThingPos.vy), -// abs(Pos.vx-thisThingPos.vx)