From 25ce2449ae575db773ba0f35764501c4cc1d94b8 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 26 Feb 2001 20:42:25 +0000 Subject: [PATCH] --- makefile.gaz | 2 ++ source/game/game.cpp | 11 ++++---- source/pickups/pballoon.cpp | 6 ++++ source/pickups/pbubmix.cpp | 11 -------- source/pickups/pbubmix.h | 1 - source/pickups/phealth.cpp | 11 -------- source/pickups/phealth.h | 1 - source/pickups/pickup.cpp | 28 ++++++++++++++++--- source/pickups/pickup.h | 8 ++++-- source/pickups/pjlammo.cpp | 11 -------- source/pickups/pjlammo.h | 1 - source/pickups/plife.cpp | 11 -------- source/pickups/plife.h | 1 - source/pickups/pquest.cpp | 11 -------- source/pickups/pquest.h | 1 - source/pickups/pshoes.cpp | 11 -------- source/pickups/pshoes.h | 1 - source/pickups/pspatula.cpp | 11 -------- source/pickups/pspatula.h | 1 - source/player/player.cpp | 12 ++++---- source/player/player.h | 7 +++-- source/thing/thing.cpp | 5 ++++ source/thing/thing.h | 1 + .../spongebob project/spongebob project.dsp | 28 ++++++++++++++++--- 24 files changed, 84 insertions(+), 108 deletions(-) diff --git a/makefile.gaz b/makefile.gaz index 2dca6c5ea..86b6d476e 100644 --- a/makefile.gaz +++ b/makefile.gaz @@ -186,6 +186,8 @@ system_src := main \ clickcount \ except +thing_src := thing + utils_src := utils \ sincos diff --git a/source/game/game.cpp b/source/game/game.cpp index 70668e740..c285a5f49 100644 --- a/source/game/game.cpp +++ b/source/game/game.cpp @@ -84,6 +84,8 @@ CGameScene GameScene; /*****************************************************************************/ void CGameScene::init() { + CThingManager::init(); + SetIdentNoTrans(&CamMtx); CamMtx.t[2]=ZPos; @@ -159,8 +161,7 @@ void CGameScene::shutdown() { m_pauseMenu->shutdown(); delete m_pauseMenu; - m_player->shutdown(); delete m_player; - CThing::shutdownAndDeleteAllThings(); + CThingManager::shutdown(); Level.shutdown(); CConversation::shutdown(); @@ -174,7 +175,7 @@ void CGameScene::render() m_pauseMenu->render(); CConversation::render(); - CThing::renderAllThings(); + CThingManager::renderAllThings(); Level.render(); } @@ -200,7 +201,7 @@ void CGameScene::think(int _frames) !m_pauseMenu->isActive()) { DVECTOR camPos; - CThing::thinkAllThings(_frames); + CThingManager::thinkAllThings(_frames); camPos=m_player->getCameraPos(); //PKG // if(camPos.vx<0){camPos.vx=0;PAUL_DBGMSG("cx<0");} @@ -245,7 +246,7 @@ CPlayer * CGameScene::getPlayer() /*****************************************************************************/ void CGameScene::sendEvent( GAME_EVENT evt, CThing *sourceThing ) { - CThing::processEventAllThings(evt, sourceThing); + CThingManager::processEventAllThings(evt, sourceThing); } /*****************************************************************************/ diff --git a/source/pickups/pballoon.cpp b/source/pickups/pballoon.cpp index f0e39e29a..f44bb1f1f 100644 --- a/source/pickups/pballoon.cpp +++ b/source/pickups/pballoon.cpp @@ -73,8 +73,13 @@ ---------------------------------------------------------------------- */ void CBalloonPickup::init() { + sFrameHdr *fh; + CBaseRespawningPickup::init(); m_sin=0; + + fh=getSpriteBank()->getFrameHeader(FRM__BALLOON); + setCollisionSize(fh->W,fh->H); } /*---------------------------------------------------------------------- @@ -151,6 +156,7 @@ void CBalloonPickup::renderPickup(DVECTOR *_pos) x=_pos->vx-(fh->W/2); y=_pos->vy-(fh->H/2); sprites->printFT4(fh,x+xo1,y,0,0,PICKUPS_OT_POS); +setCollisionCentreOffset(xo1,0); x=_pos->vx; y=_pos->vy+(fh->H/2); diff --git a/source/pickups/pbubmix.cpp b/source/pickups/pbubmix.cpp index 9866a1c93..1a143b18a 100644 --- a/source/pickups/pbubmix.cpp +++ b/source/pickups/pbubmix.cpp @@ -65,17 +65,6 @@ void CBubbleMixturePickup::init() m_sin=0; } -/*---------------------------------------------------------------------- - Function: - Purpose: - Params: - Returns: - ---------------------------------------------------------------------- */ -void CBubbleMixturePickup::shutdown() -{ - CBasePickup::shutdown(); -} - /*---------------------------------------------------------------------- Function: Purpose: diff --git a/source/pickups/pbubmix.h b/source/pickups/pbubmix.h index d4a7a4445..3a1e048ee 100644 --- a/source/pickups/pbubmix.h +++ b/source/pickups/pbubmix.h @@ -38,7 +38,6 @@ class CBubbleMixturePickup : public CBasePickup { public: virtual void init(); - virtual void shutdown(); virtual void collect(class CPlayer *_player); diff --git a/source/pickups/phealth.cpp b/source/pickups/phealth.cpp index bddcb9848..f07073406 100644 --- a/source/pickups/phealth.cpp +++ b/source/pickups/phealth.cpp @@ -65,17 +65,6 @@ void CBaseHealthPickup::init() m_sin=0; } -/*---------------------------------------------------------------------- - Function: - Purpose: - Params: - Returns: - ---------------------------------------------------------------------- */ -void CBaseHealthPickup::shutdown() -{ - CBasePickup::shutdown(); -} - /*---------------------------------------------------------------------- Function: Purpose: diff --git a/source/pickups/phealth.h b/source/pickups/phealth.h index 83b89995b..2f45c92a9 100644 --- a/source/pickups/phealth.h +++ b/source/pickups/phealth.h @@ -38,7 +38,6 @@ class CBaseHealthPickup : public CBasePickup { public: virtual void init(); - virtual void shutdown(); virtual void collect(class CPlayer *_player); diff --git a/source/pickups/pickup.cpp b/source/pickups/pickup.cpp index 0016bc343..293b5469f 100644 --- a/source/pickups/pickup.cpp +++ b/source/pickups/pickup.cpp @@ -103,7 +103,7 @@ ---------------------------------------------------------------------- */ void CBasePickup::init() { - CThing::init(); + CPickupThing::init(); m_spriteBank=new ("pickup sprite") SpriteBank(); m_spriteBank->load(INGAMEFX_INGAMEFX_SPR); @@ -118,7 +118,7 @@ void CBasePickup::init() void CBasePickup::shutdown() { m_spriteBank->dump(); delete m_spriteBank; - CThing::shutdown(); + CPickupThing::shutdown(); } /*---------------------------------------------------------------------- @@ -130,7 +130,7 @@ void CBasePickup::shutdown() #include "pad\pads.h" void CBasePickup::think(int _frames) { - CThing::think(_frames); + CPickupThing::think(_frames); thinkPickup(_frames); if(PadGetDown(0)&PAD_L2) @@ -150,7 +150,7 @@ void CBasePickup::render() DVECTOR ofs,pos; int visibilityRadius; - CThing::render(); + CPickupThing::render(); ofs=CLevel::getCameraPos(); pos.vx=Pos.vx-ofs.vx; @@ -167,6 +167,26 @@ void CBasePickup::render() */ } +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CBasePickup::collidedWith(CThing *_thisThing) +{ + switch(_thisThing->getThingType()) + { + case TYPE_PLAYER: + collect((CPlayer*)_thisThing); + break; + + default: + ASSERT(0); + break; + } +} + /*---------------------------------------------------------------------- Function: Purpose: diff --git a/source/pickups/pickup.h b/source/pickups/pickup.h index 5172dbd80..8a0c31fd6 100644 --- a/source/pickups/pickup.h +++ b/source/pickups/pickup.h @@ -18,8 +18,8 @@ Includes -------- */ -#ifndef __GAME_THING_H__ -#include "game/thing.h" +#ifndef __GAME_TPICKUP_H__ +#include "thing/tpickup.h" #endif @@ -52,7 +52,7 @@ PICKUP_TYPE; Structure defintions -------------------- */ -class CBasePickup : public CThing +class CBasePickup : public CPickupThing { public: virtual void init(); @@ -76,6 +76,8 @@ protected: virtual void thinkPickup(int _Frames) {;} virtual void renderPickup(DVECTOR *_pos)=0; + virtual void collidedWith(CThing *_thisThing); + private: class SpriteBank *m_spriteBank; diff --git a/source/pickups/pjlammo.cpp b/source/pickups/pjlammo.cpp index f7bf4d22d..72609f217 100644 --- a/source/pickups/pjlammo.cpp +++ b/source/pickups/pjlammo.cpp @@ -65,17 +65,6 @@ void CJellyLauncherAmmoPickup::init() m_rattle=0; } -/*---------------------------------------------------------------------- - Function: - Purpose: - Params: - Returns: - ---------------------------------------------------------------------- */ -void CJellyLauncherAmmoPickup::shutdown() -{ - CBasePickup::shutdown(); -} - /*---------------------------------------------------------------------- Function: Purpose: diff --git a/source/pickups/pjlammo.h b/source/pickups/pjlammo.h index 8a29284ca..5b58b2381 100644 --- a/source/pickups/pjlammo.h +++ b/source/pickups/pjlammo.h @@ -38,7 +38,6 @@ class CJellyLauncherAmmoPickup : public CBasePickup { public: virtual void init(); - virtual void shutdown(); virtual void collect(class CPlayer *_player); diff --git a/source/pickups/plife.cpp b/source/pickups/plife.cpp index f453380ed..187c726a3 100644 --- a/source/pickups/plife.cpp +++ b/source/pickups/plife.cpp @@ -65,17 +65,6 @@ void CLifePickup::init() m_sin=0; } -/*---------------------------------------------------------------------- - Function: - Purpose: - Params: - Returns: - ---------------------------------------------------------------------- */ -void CLifePickup::shutdown() -{ - CBasePickup::shutdown(); -} - /*---------------------------------------------------------------------- Function: Purpose: diff --git a/source/pickups/plife.h b/source/pickups/plife.h index 47e6120d0..85a0fb8c8 100644 --- a/source/pickups/plife.h +++ b/source/pickups/plife.h @@ -38,7 +38,6 @@ class CLifePickup : public CBasePickup { public: virtual void init(); - virtual void shutdown(); virtual void collect(class CPlayer *_player); diff --git a/source/pickups/pquest.cpp b/source/pickups/pquest.cpp index b2eced0c3..e481040cf 100644 --- a/source/pickups/pquest.cpp +++ b/source/pickups/pquest.cpp @@ -69,17 +69,6 @@ void CBaseQuestItemPickup::init() m_pingFrame=0; } -/*---------------------------------------------------------------------- - Function: - Purpose: - Params: - Returns: - ---------------------------------------------------------------------- */ -void CBaseQuestItemPickup::shutdown() -{ - CBasePickup::shutdown(); -} - /*---------------------------------------------------------------------- Function: Purpose: diff --git a/source/pickups/pquest.h b/source/pickups/pquest.h index f0629c962..545206f36 100644 --- a/source/pickups/pquest.h +++ b/source/pickups/pquest.h @@ -38,7 +38,6 @@ class CBaseQuestItemPickup : public CBasePickup { public: virtual void init(); - virtual void shutdown(); virtual void collect(class CPlayer *_player); diff --git a/source/pickups/pshoes.cpp b/source/pickups/pshoes.cpp index 8c44d27db..eab4332de 100644 --- a/source/pickups/pshoes.cpp +++ b/source/pickups/pshoes.cpp @@ -65,17 +65,6 @@ void CShoesPickup::init() m_sin=0; } -/*---------------------------------------------------------------------- - Function: - Purpose: - Params: - Returns: - ---------------------------------------------------------------------- */ -void CShoesPickup::shutdown() -{ - CBasePickup::shutdown(); -} - /*---------------------------------------------------------------------- Function: Purpose: diff --git a/source/pickups/pshoes.h b/source/pickups/pshoes.h index 199acd519..fb63b5b31 100644 --- a/source/pickups/pshoes.h +++ b/source/pickups/pshoes.h @@ -38,7 +38,6 @@ class CShoesPickup : public CBasePickup { public: virtual void init(); - virtual void shutdown(); virtual void collect(class CPlayer *_player); diff --git a/source/pickups/pspatula.cpp b/source/pickups/pspatula.cpp index 6b8e2d66e..b1bb4e6c1 100644 --- a/source/pickups/pspatula.cpp +++ b/source/pickups/pspatula.cpp @@ -61,17 +61,6 @@ void CSpatulaPickup::init() m_glint=0; } -/*---------------------------------------------------------------------- - Function: - Purpose: - Params: - Returns: - ---------------------------------------------------------------------- */ -void CSpatulaPickup::shutdown() -{ - CBasePickup::shutdown(); -} - /*---------------------------------------------------------------------- Function: Purpose: diff --git a/source/pickups/pspatula.h b/source/pickups/pspatula.h index e79931e07..614f3c368 100644 --- a/source/pickups/pspatula.h +++ b/source/pickups/pspatula.h @@ -38,7 +38,6 @@ class CSpatulaPickup : public CBasePickup { public: virtual void init(); - virtual void shutdown(); virtual void collect(class CPlayer *_player); diff --git a/source/player/player.cpp b/source/player/player.cpp index d3806f85b..345336b5b 100644 --- a/source/player/player.cpp +++ b/source/player/player.cpp @@ -47,8 +47,8 @@ /* Data ---- */ -#ifndef __ANIM_PLAYER_ANIM_HEADER__ -#include +#ifndef __ANIM_SPONGEBOB_HEADER__ +#include #endif @@ -178,7 +178,7 @@ void CPlayer::init() sActorHdr *Hdr=m_skel.Load(ACTORS_SPONGEBOB_A3D); m_skel.Init(Hdr); TPLoadTex(ACTORS_SPONGEBOB_TEX); - m_skel.setAnimDatabase(CAnimDB::Load(ANIMS_PLAYER_ABK)); + m_skel.setAnimDatabase(CAnimDB::Load(ACTORS_SPONGEBOB_ABK)); // Temporary default respawn pos... should realy be set with setRespawnPos() from the level (pkg) @@ -209,6 +209,9 @@ m_skel.setAng(512); s_debugFont.initialise(&standardFont); s_debugFont.setJustification(FontBank::JUST_LEFT); #endif + + setCollisionSize(25,50); + setCollisionCentreOffset(0,-25); } /*---------------------------------------------------------------------- @@ -405,7 +408,7 @@ void CPlayer::thinkVerticalMovement() { // Landed from a jump with no x movement setState(STATE_IDLE); - setAnimNo(ANIM_PLAYER_ANIM_JUMPEND); + setAnimNo(ANIM_SPONGEBOB_JUMPEND); } } } @@ -1162,6 +1165,5 @@ PLAYERINPUT CPlayer::readPadInput() return input; } - /*=========================================================================== end */ diff --git a/source/player/player.h b/source/player/player.h index e0743c810..a7871066f 100644 --- a/source/player/player.h +++ b/source/player/player.h @@ -18,8 +18,8 @@ Includes -------- */ -#ifndef __GAME_THING_H__ -#include "game/thing.h" +#ifndef __THING_TPLAYER_H__ +#include "thing/tplayer.h" #endif #ifndef __GFX_SKELSPNG_H__ @@ -134,7 +134,7 @@ struct PlayerMetrics }; -class CPlayer : public CThing +class CPlayer : public CPlayerThing { public: enum @@ -277,6 +277,7 @@ private: DVECTOR m_mapCameraEdges; DVECTOR m_mapEdge; DVECTOR m_respawnPos; + }; diff --git a/source/thing/thing.cpp b/source/thing/thing.cpp index 75529100d..9161295d2 100644 --- a/source/thing/thing.cpp +++ b/source/thing/thing.cpp @@ -45,6 +45,7 @@ ---- */ CThing *CThingManager::s_thingLists[CThing::MAX_TYPE]={NULL,NULL}; +int CThingManager::s_initialised=false; /*---------------------------------------------------------------------- @@ -57,10 +58,12 @@ void CThingManager::init() { int i; + ASSERT(!s_initialised); for(i=0;i