diff --git a/data/DataCache.scr b/data/DataCache.scr index 92e7d1ecf..a65d64720 100644 --- a/data/DataCache.scr +++ b/data/DataCache.scr @@ -33,6 +33,13 @@ sfx/ingame.vh demo/demo____.dmo backdrop/credits.gfx backdrop/sky.gfx +loadingscreens/culture.gfx +loadingscreens/karate.gfx +loadingscreens/monitor.gfx +loadingscreens/pickles.gfx +loadingscreens/pineapple.gfx +loadingscreens/pizza.gfx +loadingscreens/teenage.gfx memcard/memhead.bin levels/levelBackGfx.spr diff --git a/makefile.gfx b/makefile.gfx index 91ba3a457..99831d082 100644 --- a/makefile.gfx +++ b/makefile.gfx @@ -384,6 +384,28 @@ GRAF_DIRS_TO_MAKE += $(BACKDROPS_OUT_DIR) GFX_DATA_OUT += $(BACKDROPS_OUT) +#---------------------------------------------------------------------------- +# Loading screens +#---------------------------------------------------------------------------- +LOADINGSCREENS_IN_DIR := $(GRAF_DIR)/loadingscreens +LOADINGSCREENS_IN := culture karate monitor pickles pineapple pizza teenage + +LOADINGSCREENS_OUT_DIR := $(DATA_OUT)/loadingscreens +LOADINGSCREENS_OUT := $(foreach SCREEN,$(LOADINGSCREENS_IN),$(LOADINGSCREENS_OUT_DIR)/$(SCREEN).gfx) + +loadingscreens : $(LOADINGSCREENS_OUT) + +cleanloadingscreens : + @$(RM) -f $(LOADINGSCREENS_OUT) + @$(ECHO) Loadingscreens Cleaned + +$(LOADINGSCREENS_OUT_DIR)/%.gfx : $(LOADINGSCREENS_IN_DIR)/%.tga + @$(TGA2GFX) $< $@ + +GRAF_DIRS_TO_MAKE += $(LOADINGSCREENS_OUT_DIR) +GFX_DATA_OUT += $(LOADINGSCREENS_OUT) + + #---------------------------------------------------------------------------- # Sound FX #---------------------------------------------------------------------------- diff --git a/source/gfx/fader.cpp b/source/gfx/fader.cpp index 72969de6f..6973de333 100644 --- a/source/gfx/fader.cpp +++ b/source/gfx/fader.cpp @@ -142,6 +142,7 @@ void CFader::render() } case BLACK_FADE: + case WHITE_FADE: { POLY_F4 *f4; POLY_FT3 *ft3; @@ -155,7 +156,7 @@ void CFader::render() setPolyFT3(ft3); setShadeTex(ft3,1); setSemiTrans(ft3,1); - ft3->tpage=(2<<5); + ft3->tpage=(s_fadeStyle==BLACK_FADE?2:1<<5); setXY3(ft3,512,512,512,512,512,512); AddPrimToList(ft3,0); break; @@ -199,6 +200,7 @@ void CFader::render() } case BLACK_FADE: + case WHITE_FADE: { POLY_F4 *f4; POLY_FT3 *ft3; @@ -214,7 +216,7 @@ void CFader::render() setPolyFT3(ft3); setShadeTex(ft3,1); setSemiTrans(ft3,1); - ft3->tpage=(2<<5); + ft3->tpage=(s_fadeStyle==BLACK_FADE?2:1<<5); setXY3(ft3,512,512,512,512,512,512); AddPrimToList(ft3,0); break; @@ -237,6 +239,9 @@ void CFader::render() case BLACK_FADE: setRGB0(f4,0,0,0); break; + case WHITE_FADE: + setRGB0(f4,255,255,255); + break; } AddPrimToList(f4,0); return; @@ -291,6 +296,7 @@ void CFader::think(int _frames) } case BLACK_FADE: + case WHITE_FADE: { if(s_fadeValue<0) { @@ -331,6 +337,7 @@ void CFader::setFadingOut(FADE_STYLE _style) s_fadeValue=256+FADE_BORDER_SIZE; break; case BLACK_FADE: + case WHITE_FADE: s_fadeValue=255; break; } @@ -354,6 +361,7 @@ void CFader::setFadingIn(FADE_STYLE _style) s_fadeValue=256+FADE_BORDER_SIZE; break; case BLACK_FADE: + case WHITE_FADE: s_fadeValue=255; break; } diff --git a/source/gfx/fader.h b/source/gfx/fader.h index 259323a31..9cb4fd6c0 100644 --- a/source/gfx/fader.h +++ b/source/gfx/fader.h @@ -36,6 +36,7 @@ public: { BUBBLE_FADE, BLACK_FADE, + WHITE_FADE, } FADE_STYLE; static void render(); diff --git a/source/level/level.cpp b/source/level/level.cpp index 110a1e8e6..7e4146f40 100644 --- a/source/level/level.cpp +++ b/source/level/level.cpp @@ -16,6 +16,8 @@ #include "level\layertile3d.h" #include "level\layercollision.h" +#include "gfx\font.h" + #ifndef __TRIGGERS_TLEVEXIT_H__ #include "triggers\tlevexit.h" #endif @@ -24,6 +26,10 @@ #include "sound\sound.h" #endif +#ifndef __VID_HEADER_ +#include "system\vid.h" +#endif + #include "pad\pads.h" DVECTOR CLevel::MapPos; @@ -384,6 +390,48 @@ void CLevel::init() if (s_globalLevelSelectThing>=LvlTableSize) s_globalLevelSelectThing=0; } + // Loading screen + if(s_globalLevelSelectThing%12==0) + { + FileEquate loadingScreens[6]= + { + LOADINGSCREENS_PINEAPPLE_GFX, + LOADINGSCREENS_CULTURE_GFX, + LOADINGSCREENS_PICKLES_GFX, + LOADINGSCREENS_MONITOR_GFX, + LOADINGSCREENS_KARATE_GFX, + LOADINGSCREENS_PIZZA_GFX, + }; + FontBank font; + int chapter,level; + char buf[128]; + u8 *s_image; + int i; + + font.initialise(&standardFont); + font.setJustification(FontBank::JUST_CENTRE); + chapter=s_globalLevelSelectThing/(12*4); + if(chapter>5)chapter=5; + level=((s_globalLevelSelectThing%(12*4))/12); + sprintf(buf,"LOADING CHAPTER %d LEVEL %d",chapter+1,level+1); + s_image=CFileIO::loadFile(loadingScreens[chapter]); + ASSERT(s_image); + SetScreenImage(s_image); + for(i=0;i<2;i++) + { + font.print(256,128,buf); + PrimDisplay(); + VSync(0); + VidSwapDraw(); + } + ClearScreenImage(); + MemFree(s_image); + VSync(20); + font.dump(); + } + + + for (int i=0; iprint(40,40,posBuf); //!! m_actorGfx.Render(this); //!! m_currentPlayerModeClass->render(); //!! SetGeomOffset(SCREEN_GEOM_CENTRE_X,SCREEN_GEOM_CENTRE_Y); - DVECTOR Pos={256,128}; - m_actorGfx->Render(Pos,m_animNo,m_animFrame,0); + DVECTOR Pos= + { + SCREEN_GEOM_CENTRE_X+m_playerScreenGeomPos.vx-m_actorGfx->getFrameWidth(m_animNo,m_animFrame/2), + SCREEN_GEOM_CENTRE_Y+m_playerScreenGeomPos.vy + }; + m_actorGfx->Render(Pos,m_animNo,m_animFrame>>sbanimspeed,m_facing==FACING_RIGHT?0:1); m_currentPlayerModeClass->render(); } @@ -616,11 +622,7 @@ int CPlayer::getFacing() } void CPlayer::setFacing(int _facing) { - if(m_facing!=_facing) - { - m_facing=_facing; -//!! m_actorGfx.setDir(_facing); - } + m_facing=_facing; } @@ -672,7 +674,7 @@ void CPlayer::setAnimFrame(int _animFrame) } int CPlayer::getAnimFrameCount() { - return m_actorGfx->getFrameCount(m_animNo); + return m_actorGfx->getFrameCount(m_animNo)<getHeightFromGround( Pos.vx, Pos.vy, 16 ); - - platformHeight = newPos.vy - Pos.vy; - - if ( platformHeight > colHeight ) - { - m_onPlatform = false; - } - else - { - colHeight = platformHeight; - } - } - - if ( m_onPlatform ) - { - // have collided with a platform - - m_moveVel.vy=0; - Pos = newPos; - - if ( !m_prevOnPlatform ) - { -// if( m_currentMode != PLAYER_MODE_BALLOON ) - { - m_fallFrames=0; - - if(m_currentState==STATE_BUTTFALL) - { - // Landed from a butt bounce - setState(STATE_BUTTLAND); - } - else if(m_currentState==STATE_FALLFAR) - { - // Landed from a painfully long fall - setState(STATE_IDLE); - takeDamage(DAMAGE__FALL); - m_moveVel.vx=0; - CSoundMediator::playSfx(CSoundMediator::SFX_SPONGEBOB_LAND_AFTER_FALL); - } - else if(m_moveVel.vx) - { - // Landed from a jump with x movement - setState(STATE_RUN); - } - else - { - // Landed from a jump with no x movement - setState(STATE_IDLE); - setAnimNo(ANIM_SPONGEBOB_JUMPEND); - } - } - } - else - { - //Pos.vx += m_platform->getPos().vx - m_prevPlatformPos.vx; - } - - // Move the camera offset - m_playerScreenGeomPos.vx=SCREEN_GEOM_PLAYER_OFS_X+((MAP2D_BLOCKSTEPSIZE*m_cameraScrollPos.vx)>>8); - m_playerScreenGeomPos.vy=SCREEN_GEOM_PLAYER_OFS_Y+((MAP2D_BLOCKSTEPSIZE*m_cameraScrollPos.vy)>>8); - m_cameraOffset.vx=MAP2D_CENTRE_X+((MAP2D_BLOCKSTEPSIZE*(-m_cameraScrollPos.vx))>>8); - m_cameraOffset.vy=MAP2D_CENTRE_Y+((MAP2D_BLOCKSTEPSIZE*(-m_cameraScrollPos.vy))>>8); - - - m_cameraPos.vx=Pos.vx+m_cameraOffset.vx; - m_cameraPos.vy=Pos.vy+m_cameraOffset.vy; - - - // Limit camera scroll to the edges of the map - if(m_cameraPos.vx<0) - { - m_playerScreenGeomPos.vx+=m_cameraPos.vx; - m_cameraPos.vx=0; - m_cameraScrollDir=0; - } - else if(m_cameraPos.vx>m_mapCameraEdges.vx) - { - m_playerScreenGeomPos.vx-=m_mapCameraEdges.vx-m_cameraPos.vx; - m_cameraPos.vx=m_mapCameraEdges.vx; - m_cameraScrollDir=0; - } - if(m_cameraPos.vy<0) - { - m_playerScreenGeomPos.vy+=m_cameraPos.vy; - m_cameraPos.vy=0; - m_cameraScrollDir=0; - } - else if(m_cameraPos.vy>m_mapCameraEdges.vy) - { - m_playerScreenGeomPos.vy-=m_mapCameraEdges.vy-m_cameraPos.vy; - m_cameraPos.vy=m_mapCameraEdges.vy; - m_cameraScrollDir=0; - } - - this->updateCollisionArea(); - - m_prevPlatformPos = m_platform->getPos(); - } - else - { - newPlatform->removeChild( this ); - } -} -*/ - /*---------------------------------------------------------------------- Function: Purpose: diff --git a/source/player/psidle.cpp b/source/player/psidle.cpp index 194a4afe7..276c447f8 100644 --- a/source/player/psidle.cpp +++ b/source/player/psidle.cpp @@ -257,13 +257,9 @@ void CPlayerStateIdle::setNextIdleAnim(CPlayerModeBase *_playerMode) static IdleAnims s_unarmedIdleAnims[]= { // start frame loop frame end frame loop count -//!! { -1, ANIM_SPONGEBOB_IDLEBREATHE, -1, 4 }, // default -//!! { -1, ANIM_SPONGEBOB_IDLEBREATHE, -1, 10 }, -//!! { ANIM_SPONGEBOB_FACEFRONT, ANIM_SPONGEBOB_IDLEHOOLA, ANIM_SPONGEBOB_FACEBACK, 5 }, -//!! { ANIM_SPONGEBOB_FACEFRONT, ANIM_SPONGEBOB_IDLEWIGGLEARM, ANIM_SPONGEBOB_FACEBACK, 5 }, -//!! { -1, ANIM_SPONGEBOB_IDLELOOK, -1, 1 }, -//!! { -1, ANIM_SPONGEBOB_IDLEWIND, -1, 1 }, - { -1, ANIM_SPONGEBOB_IDLEHOOLA, -1, 4 }, // default + { -1, ANIM_SPONGEBOB_IDLEBREATH, -1, 4 }, // default + { -1, ANIM_SPONGEBOB_IDLEBREATH, -1, 10 }, + { -1, ANIM_SPONGEBOB_IDLEWIND, -1, 1 }, }; static int s_numUnarmedIdleAnims=sizeof(s_unarmedIdleAnims)/sizeof(IdleAnims); @@ -287,10 +283,9 @@ int CPlayerStateUnarmedIdle::getNumIdleAnims() static IdleAnims s_coralBlowerIdleAnims[]= { // start frame loop frame end frame loop count -//!! { -1, ANIM_SPONGEBOB_IDLEBREATHE, -1, 4 }, // default -//!! { -1, ANIM_SPONGEBOB_IDLEBREATHE, -1, 10 }, -//!! { -1, ANIM_SPONGEBOB_IDLELOOK, -1, 1 }, - { -1, ANIM_SPONGEBOB_IDLEHOOLA, -1, 1 }, + { -1, ANIM_SPONGEBOB_IDLEBREATH, -1, 4 }, // default + { -1, ANIM_SPONGEBOB_IDLEBREATH, -1, 10 }, + { -1, ANIM_SPONGEBOB_IDLEWEAPON, -1, 1 }, }; static int s_numCoralBlowerIdleAnims=sizeof(s_coralBlowerIdleAnims)/sizeof(IdleAnims); IdleAnims *CPlayerStateCoralBlowerIdle::getIdleAnimsDb(int _animNo) diff --git a/users/paul/spongebob project/spongebob project.dsp b/users/paul/spongebob project/spongebob project.dsp index 33b6bfae5..dbe41ae0f 100644 --- a/users/paul/spongebob project/spongebob project.dsp +++ b/users/paul/spongebob project/spongebob project.dsp @@ -369,11 +369,11 @@ SOURCE=..\..\..\source\game\pause.h # PROP Default_Filter "" # Begin Source File -SOURCE=..\..\..\source\gfx\actorpool.cpp +SOURCE=..\..\..\source\gfx\actor.cpp # End Source File # Begin Source File -SOURCE=..\..\..\source\gfx\actorpool.h +SOURCE=..\..\..\source\gfx\actor.h # End Source File # Begin Source File @@ -429,22 +429,6 @@ SOURCE=..\..\..\source\gfx\primplus.h # End Source File # Begin Source File -SOURCE=..\..\..\source\gfx\skel.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\..\source\gfx\skel.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\source\gfx\skelspng.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\..\source\gfx\skelspng.h -# End Source File -# Begin Source File - SOURCE=..\..\..\source\gfx\sprbank.cpp # End Source File # Begin Source File