This commit is contained in:
parent
f29a89e2dd
commit
129f920240
7 changed files with 196 additions and 123 deletions
|
@ -55,6 +55,30 @@ ui/map/c1_l3.gfx
|
||||||
ui/map/c1_l4.gfx
|
ui/map/c1_l4.gfx
|
||||||
ui/map/c1_boss.gfx
|
ui/map/c1_boss.gfx
|
||||||
ui/map/c1_fair.gfx
|
ui/map/c1_fair.gfx
|
||||||
|
ui/map/c2_l1.gfx
|
||||||
|
ui/map/c2_l2.gfx
|
||||||
|
ui/map/c2_l3.gfx
|
||||||
|
ui/map/c2_l4.gfx
|
||||||
|
ui/map/c2_boss.gfx
|
||||||
|
ui/map/c2_fair.gfx
|
||||||
|
ui/map/c3_l1.gfx
|
||||||
|
ui/map/c3_l2.gfx
|
||||||
|
ui/map/c3_l3.gfx
|
||||||
|
ui/map/c3_l4.gfx
|
||||||
|
ui/map/c3_boss.gfx
|
||||||
|
ui/map/c3_fair.gfx
|
||||||
|
ui/map/c4_l1.gfx
|
||||||
|
ui/map/c4_l2.gfx
|
||||||
|
ui/map/c4_l3.gfx
|
||||||
|
ui/map/c4_l4.gfx
|
||||||
|
ui/map/c4_boss.gfx
|
||||||
|
ui/map/c4_fair.gfx
|
||||||
|
ui/map/c5_l1.gfx
|
||||||
|
ui/map/c5_l2.gfx
|
||||||
|
ui/map/c5_l3.gfx
|
||||||
|
ui/map/c5_l4.gfx
|
||||||
|
ui/map/c5_boss.gfx
|
||||||
|
ui/map/c5_fair.gfx
|
||||||
|
|
||||||
levels/CHAPTER01_LEVEL01.Lvl
|
levels/CHAPTER01_LEVEL01.Lvl
|
||||||
levels/CHAPTER01_LEVEL01.Tex
|
levels/CHAPTER01_LEVEL01.Tex
|
||||||
|
|
|
@ -376,7 +376,11 @@ GFX_DATA_OUT += $(BACKDROPS_OUT)
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
MAPSCREENS_IN_DIR := $(GRAF_DIR)/ui/map
|
MAPSCREENS_IN_DIR := $(GRAF_DIR)/ui/map
|
||||||
MAPSCREENS_IN := map_background \
|
MAPSCREENS_IN := map_background \
|
||||||
c1_l1 c1_l2 c1_l3 c1_l4 c1_boss c1_fair
|
c1_l1 c1_l2 c1_l3 c1_l4 c1_boss c1_fair \
|
||||||
|
c2_l1 c2_l2 c2_l3 c2_l4 c2_boss c2_fair \
|
||||||
|
c3_l1 c3_l2 c3_l3 c3_l4 c3_boss c3_fair \
|
||||||
|
c4_l1 c4_l2 c4_l3 c4_l4 c4_boss c4_fair \
|
||||||
|
c5_l1 c5_l2 c5_l3 c5_l4 c5_boss c5_fair
|
||||||
|
|
||||||
MAPSCREENS_OUT_DIR := $(DATA_OUT)/ui/map
|
MAPSCREENS_OUT_DIR := $(DATA_OUT)/ui/map
|
||||||
MAPSCREENS_OUT := $(foreach SCREEN,$(MAPSCREENS_IN),$(MAPSCREENS_OUT_DIR)/$(SCREEN).gfx)
|
MAPSCREENS_OUT := $(foreach SCREEN,$(MAPSCREENS_IN),$(MAPSCREENS_OUT_DIR)/$(SCREEN).gfx)
|
||||||
|
|
|
@ -66,8 +66,8 @@
|
||||||
#include "Dstructs.h"
|
#include "Dstructs.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __GAME_GAME_H__
|
#ifndef __MAP_MAP_H__
|
||||||
#include "game\game.h"
|
#include "map\map.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -284,10 +284,10 @@ void CFrontEndScene::setMode(FrontEndMode _newMode)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open new mode
|
// Open new mode
|
||||||
if(_newMode==MODE__EXIT_TO_GAME)
|
if(_newMode==MODE__EXIT_TO_MAP)
|
||||||
{
|
{
|
||||||
m_exitToGame=true;
|
m_exitToGame=true;
|
||||||
GameState::setNextScene(&GameScene);
|
GameState::setNextScene(&MapScene);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -56,7 +56,7 @@ public:
|
||||||
|
|
||||||
MODE__NONE,
|
MODE__NONE,
|
||||||
|
|
||||||
MODE__EXIT_TO_GAME,
|
MODE__EXIT_TO_MAP,
|
||||||
} FrontEndMode;
|
} FrontEndMode;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
|
|
@ -167,7 +167,9 @@ void CFrontEndStart::render()
|
||||||
setRGB3(g4,50, 0,50);
|
setRGB3(g4,50, 0,50);
|
||||||
AddPrimToList(g4,MAX_OT-1);
|
AddPrimToList(g4,MAX_OT-1);
|
||||||
|
|
||||||
|
#if 0
|
||||||
m_guiFrame->render();
|
m_guiFrame->render();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
|
@ -178,6 +180,7 @@ void CFrontEndStart::render()
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CFrontEndStart::think(int _frames)
|
void CFrontEndStart::think(int _frames)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
if(!CFader::isFading())
|
if(!CFader::isFading())
|
||||||
{
|
{
|
||||||
m_guiFrame->think(_frames);
|
m_guiFrame->think(_frames);
|
||||||
|
@ -195,6 +198,7 @@ void CFrontEndStart::think(int _frames)
|
||||||
CFader::setFadingOut();
|
CFader::setFadingOut();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
|
@ -205,7 +209,7 @@ void CFrontEndStart::think(int _frames)
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
int CFrontEndStart::isReadyToExit()
|
int CFrontEndStart::isReadyToExit()
|
||||||
{
|
{
|
||||||
return !CFader::isFading()&&m_shuttingDown;
|
return !CFader::isFading();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
|
@ -216,14 +220,7 @@ int CFrontEndStart::isReadyToExit()
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
CFrontEndScene::FrontEndMode CFrontEndStart::getNextMode()
|
CFrontEndScene::FrontEndMode CFrontEndStart::getNextMode()
|
||||||
{
|
{
|
||||||
if(m_selectedSlot==NO_SLOT_SELECTED)
|
return CFrontEndScene::MODE__EXIT_TO_MAP;
|
||||||
{
|
|
||||||
return CFrontEndScene::MODE__MAIN_TITLES;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return CFrontEndScene::MODE__EXIT_TO_GAME;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*===========================================================================
|
/*===========================================================================
|
||||||
|
|
|
@ -30,8 +30,8 @@
|
||||||
#include "gfx\prim.h"
|
#include "gfx\prim.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __FRONTEND_FRONTEND_H__
|
#ifndef __GAME_GAME_H__
|
||||||
#include "frontend\frontend.h"
|
#include "game\game.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __GFX_FADER_H__
|
#ifndef __GFX_FADER_H__
|
||||||
|
@ -46,14 +46,6 @@
|
||||||
#include "fileio\fileio.h"
|
#include "fileio\fileio.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __GUI_GFRAME_H__
|
|
||||||
#include "gui\gframe.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __GUI_GFACTORY_H__
|
|
||||||
#include "gui\gfactory.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __MATHTABLE_HEADER__
|
#ifndef __MATHTABLE_HEADER__
|
||||||
#include "utils\mathtab.h"
|
#include "utils\mathtab.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -93,58 +85,49 @@
|
||||||
CMapScene MapScene;
|
CMapScene MapScene;
|
||||||
|
|
||||||
|
|
||||||
|
CMapScene::sMapLevelData CMapScene::s_mapLevelData[5]=
|
||||||
|
{
|
||||||
|
// Chapter 1
|
||||||
|
{
|
||||||
|
{ MAP_C1_L1_GFX, MAP_C1_L2_GFX, MAP_C1_L3_GFX, MAP_C1_L4_GFX, MAP_C1_BOSS_GFX, MAP_C1_FAIR_GFX },
|
||||||
|
{ 0, 1, 2, 3, -1, 20 },
|
||||||
|
{ FRM__C1_L1_JELLY, FRM__C1_L2_SEAWEED, FRM__C1_L3_SEANUTBUTTER, FRM__C1_L4_BREADSLICE },
|
||||||
|
},
|
||||||
|
// Chapter 2
|
||||||
|
{
|
||||||
|
{ MAP_C2_L1_GFX, MAP_C2_L2_GFX, MAP_C2_L3_GFX, MAP_C2_L4_GFX, MAP_C2_BOSS_GFX, MAP_C2_FAIR_GFX },
|
||||||
|
{ 4, 5, 6, 7, -1, 21 },
|
||||||
|
{ FRM__C2_L1_FALSETEETH, FRM__C2_L2_KELPKREAM, FRM__C2_L3_MUDPACK, FRM__C2_L4_SPONGE },
|
||||||
|
},
|
||||||
|
// Chapter 3
|
||||||
|
{
|
||||||
|
{ MAP_C3_L1_GFX, MAP_C3_L2_GFX, MAP_C3_L3_GFX, MAP_C3_L4_GFX, MAP_C3_BOSS_GFX, MAP_C3_FAIR_GFX },
|
||||||
|
{ 8, 9, 10, 11, -1, 22 },
|
||||||
|
{ FRM__C3_L1_SLIPPERS, FRM__C3_L2_CLAMBRA, FRM__C3_L3_STARFISHMASK, FRM__C3_L4_SUPERPANTZ },
|
||||||
|
},
|
||||||
|
// Chapter 4
|
||||||
|
{
|
||||||
|
{ MAP_C4_L1_GFX, MAP_C4_L2_GFX, MAP_C4_L3_GFX, MAP_C4_L4_GFX, MAP_C4_BOSS_GFX, MAP_C4_FAIR_GFX },
|
||||||
|
{ 12, 13, 14, 15, -1, 23 },
|
||||||
|
{ FRM__C4_COIN, FRM__C4_COIN, FRM__C4_COIN, FRM__C4_KELPBAR },
|
||||||
|
},
|
||||||
|
// Chapter 5
|
||||||
|
{
|
||||||
|
{ MAP_C5_L1_GFX, MAP_C5_L2_GFX, MAP_C5_L3_GFX, MAP_C5_L4_GFX, MAP_C5_BOSS_GFX, MAP_C5_FAIR_GFX },
|
||||||
|
{ 16, 17, 18, 19, -1, 24 },
|
||||||
|
{ FRM__C5_L1_HAMMER, FRM__C5_L2_ARIEL, FRM__C5_L3_OILCAN, FRM__C5_L4_WRENCH },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
extern int s_globalLevelSelectThing;
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
Function:
|
Function:
|
||||||
Purpose:
|
Purpose:
|
||||||
Params:
|
Params:
|
||||||
Returns:
|
Returns:
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
enum
|
|
||||||
{
|
|
||||||
MAP_PARCHMENT_WIDTH=496,
|
|
||||||
MAP_PARCHMENT_HEIGHT=190,
|
|
||||||
MAP_PARCHMENT_START_X=(512-MAP_PARCHMENT_WIDTH)/2,
|
|
||||||
MAP_PARCHMENT_START_Y=20,
|
|
||||||
|
|
||||||
MAP_LEVEL_WIDTH=140,
|
|
||||||
MAP_LEVEL_HEIGHT=60,
|
|
||||||
MAP_LEVEL_TOP_BORDER=20,
|
|
||||||
MAP_LEVEL_Y_SPACING=8,
|
|
||||||
MAP_LEVEL_X_SPACING=4,
|
|
||||||
|
|
||||||
|
|
||||||
MAP_INSTRUCTIONS_WIDTH=416,
|
|
||||||
MAP_INSTRUCTIONS_HEIGHT=32,
|
|
||||||
MAP_INSTRUCTIONS_BOTTOM_OFFSET=40,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static int s_levelMaps[5][6]=
|
|
||||||
{
|
|
||||||
{ MAP_C1_L1_GFX, MAP_C1_L2_GFX, MAP_C1_L3_GFX, MAP_C1_L4_GFX, MAP_C1_BOSS_GFX, MAP_C1_FAIR_GFX },
|
|
||||||
{ MAP_C1_L1_GFX, MAP_C1_L2_GFX, MAP_C1_L3_GFX, MAP_C1_L4_GFX, MAP_C1_BOSS_GFX, MAP_C1_FAIR_GFX },
|
|
||||||
{ MAP_C1_L1_GFX, MAP_C1_L2_GFX, MAP_C1_L3_GFX, MAP_C1_L4_GFX, MAP_C1_BOSS_GFX, MAP_C1_FAIR_GFX },
|
|
||||||
{ MAP_C1_L1_GFX, MAP_C1_L2_GFX, MAP_C1_L3_GFX, MAP_C1_L4_GFX, MAP_C1_BOSS_GFX, MAP_C1_FAIR_GFX },
|
|
||||||
{ MAP_C1_L1_GFX, MAP_C1_L2_GFX, MAP_C1_L3_GFX, MAP_C1_L4_GFX, MAP_C1_BOSS_GFX, MAP_C1_FAIR_GFX },
|
|
||||||
};
|
|
||||||
static int s_questItems[5][4]=
|
|
||||||
{
|
|
||||||
{ FRM__C1_L1_JELLY, FRM__C1_L2_SEAWEED, FRM__C1_L3_SEANUTBUTTER, FRM__C1_L4_BREADSLICE },
|
|
||||||
{ FRM__C2_L1_FALSETEETH, FRM__C2_L2_KELPKREAM, FRM__C2_L3_MUDPACK, FRM__C2_L4_SPONGE },
|
|
||||||
{ FRM__C3_L1_SLIPPERS, FRM__C3_L2_CLAMBRA, FRM__C3_L3_STARFISHMASK, FRM__C3_L4_SUPERPANTZ },
|
|
||||||
{ FRM__C4_COIN, FRM__C4_COIN, FRM__C4_COIN, FRM__C4_KELPBAR },
|
|
||||||
{ FRM__C5_L1_HAMMER, FRM__C5_L2_ARIEL, FRM__C5_L3_OILCAN, FRM__C5_L4_WRENCH },
|
|
||||||
};
|
|
||||||
static int s_levelNumbers[5][6]=
|
|
||||||
{
|
|
||||||
{ 0, 1, 2, 3, 4, 25 },
|
|
||||||
{ 5, 6, 7, 8, 9, 26 },
|
|
||||||
{ 10, 11, 12, 13, 14, 27 },
|
|
||||||
{ 15, 16, 17, 18, 19, 28 },
|
|
||||||
{ 20, 21, 22, 23, 24, 29 },
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
void CMapScene::init()
|
void CMapScene::init()
|
||||||
{
|
{
|
||||||
m_font=new ("map screen font") FontBank();
|
m_font=new ("map screen font") FontBank();
|
||||||
|
@ -158,46 +141,15 @@ void CMapScene::init()
|
||||||
m_spriteBank->load(SPRITES_SPRITES_SPR);
|
m_spriteBank->load(SPRITES_SPRITES_SPR);
|
||||||
|
|
||||||
|
|
||||||
// Generate the map background image
|
m_currentChapterSelection=0;
|
||||||
int i,x,y,xpos,ypos;
|
m_currentLevelSelection=0;
|
||||||
m_screenImage=MemAlloc(512*256*2,"MapScreen");
|
m_screenImage=MemAlloc(512*256*2,"MapScreen");
|
||||||
memset(m_screenImage,0,512*256*2);
|
generateMapScreenImage();
|
||||||
copyImageToScreen(MAP_MAP_BACKGROUND_GFX,MAP_PARCHMENT_START_X,MAP_PARCHMENT_START_Y,MAP_PARCHMENT_WIDTH,MAP_PARCHMENT_HEIGHT);
|
|
||||||
i=0;
|
|
||||||
ypos=MAP_PARCHMENT_START_Y+MAP_LEVEL_TOP_BORDER;
|
|
||||||
for(y=0;y<2;y++)
|
|
||||||
{
|
|
||||||
xpos=256-((MAP_LEVEL_WIDTH*3)/2)-MAP_LEVEL_X_SPACING;
|
|
||||||
for(x=0;x<3;x++)
|
|
||||||
{
|
|
||||||
if(isLevelOpen(m_currentChapterSelection,i))
|
|
||||||
{
|
|
||||||
copyImageToScreen(s_levelMaps[m_currentChapterSelection][i],xpos,ypos,MAP_LEVEL_WIDTH,MAP_LEVEL_HEIGHT);
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
xpos+=MAP_LEVEL_WIDTH+MAP_LEVEL_X_SPACING;
|
|
||||||
}
|
|
||||||
ypos+=MAP_LEVEL_HEIGHT+MAP_LEVEL_Y_SPACING;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetScreenImage((u8*)m_screenImage);
|
SetScreenImage((u8*)m_screenImage);
|
||||||
|
|
||||||
// Generate the ui box at the bottom of the screen
|
|
||||||
m_guiFrame=new ("Conversation GUI") CGUIControlFrame();
|
|
||||||
m_guiFrame->init(0);
|
|
||||||
m_guiFrame->setObjectXYWH((512-MAP_INSTRUCTIONS_WIDTH)/2,256-MAP_INSTRUCTIONS_BOTTOM_OFFSET-MAP_INSTRUCTIONS_HEIGHT,MAP_INSTRUCTIONS_WIDTH,MAP_INSTRUCTIONS_HEIGHT);
|
|
||||||
// m_guiFrame->setOt(OT_POS);
|
|
||||||
m_guiFrame->setFlags(CGUIObject::FLAG_DRAWBORDER);
|
|
||||||
|
|
||||||
|
|
||||||
m_readyToExit=false;
|
m_readyToExit=false;
|
||||||
// CFader::setFadingIn(CFader::BLACK_FADE);
|
// CFader::setFadingIn(CFader::BLACK_FADE);
|
||||||
|
|
||||||
|
|
||||||
m_currentChapterSelection=0;
|
|
||||||
m_currentLevelSelection=0;
|
|
||||||
m_pointerPos.vx=256;
|
|
||||||
m_pointerPos.vy=-50;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -209,7 +161,6 @@ void CMapScene::init()
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CMapScene::shutdown()
|
void CMapScene::shutdown()
|
||||||
{
|
{
|
||||||
m_guiFrame->shutdown();
|
|
||||||
ClearScreenImage();
|
ClearScreenImage();
|
||||||
MemFree(m_screenImage);
|
MemFree(m_screenImage);
|
||||||
m_spriteBank->dump(); delete m_spriteBank;
|
m_spriteBank->dump(); delete m_spriteBank;
|
||||||
|
@ -242,7 +193,7 @@ void CMapScene::render()
|
||||||
{
|
{
|
||||||
sprintf(spatCount,"%d/%d",getSpatulaCollectedCount(m_currentChapterSelection,i),getSpatulaAvailableCount(m_currentChapterSelection,i));
|
sprintf(spatCount,"%d/%d",getSpatulaCollectedCount(m_currentChapterSelection,i),getSpatulaAvailableCount(m_currentChapterSelection,i));
|
||||||
m_font->print(xpos,ypos,spatCount);
|
m_font->print(xpos,ypos,spatCount);
|
||||||
fh=m_spriteBank->getFrameHeader(s_questItems[m_currentChapterSelection][i]);
|
fh=m_spriteBank->getFrameHeader(s_mapLevelData[m_currentChapterSelection].m_questItemFrames[i]);
|
||||||
ft4=m_spriteBank->printFT4Scaled(fh,xpos+MAP_LEVEL_WIDTH-fh->W,ypos+MAP_LEVEL_HEIGHT-fh->H,0,0,10,128);
|
ft4=m_spriteBank->printFT4Scaled(fh,xpos+MAP_LEVEL_WIDTH-fh->W,ypos+MAP_LEVEL_HEIGHT-fh->H,0,0,10,128);
|
||||||
if(!hasQuestItemBeenCollected(m_currentChapterSelection,i))
|
if(!hasQuestItemBeenCollected(m_currentChapterSelection,i))
|
||||||
{
|
{
|
||||||
|
@ -258,7 +209,12 @@ void CMapScene::render()
|
||||||
fh=m_spriteBank->getFrameHeader(FRM__MAPPOINTER);
|
fh=m_spriteBank->getFrameHeader(FRM__MAPPOINTER);
|
||||||
m_spriteBank->printFT4(fh,m_pointerPos.vx-(fh->W/2),m_pointerPos.vy-(fh->H/2),0,0,9);
|
m_spriteBank->printFT4(fh,m_pointerPos.vx-(fh->W/2),m_pointerPos.vy-(fh->H/2),0,0,9);
|
||||||
|
|
||||||
m_guiFrame->render();
|
char buf[100];
|
||||||
|
sprintf(buf,"Chapter %d, Level %d",m_currentChapterSelection+1,m_currentLevelSelection+1);
|
||||||
|
m_font->setColour(0,255,0);
|
||||||
|
m_font->print(24,24,buf);
|
||||||
|
m_font->setColour(0,0,0);
|
||||||
|
m_font->print(25,25,buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -272,6 +228,18 @@ void CMapScene::think(int _frames)
|
||||||
{
|
{
|
||||||
if(!CFader::isFading()&&!m_readyToExit)
|
if(!CFader::isFading()&&!m_readyToExit)
|
||||||
{
|
{
|
||||||
|
// Change chapter
|
||||||
|
if(PadGetDown(0)&PAD_UP)
|
||||||
|
{
|
||||||
|
if(++m_currentChapterSelection>4)m_currentChapterSelection=0;
|
||||||
|
generateMapScreenImage();
|
||||||
|
}
|
||||||
|
else if(PadGetDown(0)&PAD_DOWN)
|
||||||
|
{
|
||||||
|
if(--m_currentChapterSelection<0)m_currentChapterSelection=4;
|
||||||
|
generateMapScreenImage();
|
||||||
|
}
|
||||||
|
|
||||||
// Move cursor
|
// Move cursor
|
||||||
if(PadGetDown(0)&PAD_LEFT)
|
if(PadGetDown(0)&PAD_LEFT)
|
||||||
{
|
{
|
||||||
|
@ -292,13 +260,7 @@ void CMapScene::think(int _frames)
|
||||||
|
|
||||||
// Calc where the pointer should be
|
// Calc where the pointer should be
|
||||||
m_pointerSin=(m_pointerSin+(_frames*70))&4095;
|
m_pointerSin=(m_pointerSin+(_frames*70))&4095;
|
||||||
m_pointerTarget.vx=256-((MAP_LEVEL_WIDTH*3)/2)-MAP_LEVEL_X_SPACING+
|
m_pointerTarget=getPointerTargetPosition();
|
||||||
((m_currentLevelSelection%3)*(MAP_LEVEL_WIDTH+MAP_LEVEL_X_SPACING))+
|
|
||||||
(MAP_LEVEL_WIDTH/2);
|
|
||||||
m_pointerTarget.vy=MAP_PARCHMENT_START_Y+MAP_LEVEL_TOP_BORDER+
|
|
||||||
((m_currentLevelSelection/3)*(MAP_LEVEL_HEIGHT+MAP_LEVEL_Y_SPACING))+
|
|
||||||
(MAP_LEVEL_HEIGHT)+
|
|
||||||
(msin(m_pointerSin)*4>>12);
|
|
||||||
|
|
||||||
// Move the pointer
|
// Move the pointer
|
||||||
for(int i=0;i<_frames;i++)
|
for(int i=0;i<_frames;i++)
|
||||||
|
@ -334,11 +296,11 @@ void CMapScene::think(int _frames)
|
||||||
|
|
||||||
if(PadGetDown(0)&(PAD_CROSS|PAD_START))
|
if(PadGetDown(0)&(PAD_CROSS|PAD_START))
|
||||||
{
|
{
|
||||||
|
s_globalLevelSelectThing=s_mapLevelData[m_currentChapterSelection].m_globalLevelNumbers[m_currentLevelSelection];
|
||||||
m_readyToExit=true;
|
m_readyToExit=true;
|
||||||
// CFader::setFadingOut(CFader::BLACK_FADE);
|
// CFader::setFadingOut(CFader::BLACK_FADE);
|
||||||
GameState::setNextScene(&FrontEndScene);
|
GameState::setNextScene(&GameScene);
|
||||||
}
|
}
|
||||||
m_guiFrame->think(_frames);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -354,6 +316,42 @@ int CMapScene::readyToShutdown()
|
||||||
return m_readyToExit&&!CFader::isFading();
|
return m_readyToExit&&!CFader::isFading();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
|
void CMapScene::generateMapScreenImage()
|
||||||
|
{
|
||||||
|
int i,x,y,xpos,ypos;
|
||||||
|
|
||||||
|
|
||||||
|
m_currentLevelSelection=0;
|
||||||
|
memset(m_screenImage,0,512*256*2);
|
||||||
|
copyImageToScreen(MAP_MAP_BACKGROUND_GFX,MAP_PARCHMENT_START_X,MAP_PARCHMENT_START_Y,MAP_PARCHMENT_WIDTH,MAP_PARCHMENT_HEIGHT);
|
||||||
|
i=0;
|
||||||
|
ypos=MAP_PARCHMENT_START_Y+MAP_LEVEL_TOP_BORDER;
|
||||||
|
for(y=0;y<2;y++)
|
||||||
|
{
|
||||||
|
xpos=256-((MAP_LEVEL_WIDTH*3)/2)-MAP_LEVEL_X_SPACING;
|
||||||
|
for(x=0;x<3;x++)
|
||||||
|
{
|
||||||
|
if(isLevelOpen(m_currentChapterSelection,i))
|
||||||
|
{
|
||||||
|
copyImageToScreen(s_mapLevelData[m_currentChapterSelection].m_mapFiles[i],xpos,ypos,MAP_LEVEL_WIDTH,MAP_LEVEL_HEIGHT);
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
xpos+=MAP_LEVEL_WIDTH+MAP_LEVEL_X_SPACING;
|
||||||
|
}
|
||||||
|
ypos+=MAP_LEVEL_HEIGHT+MAP_LEVEL_Y_SPACING;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_pointerPos=getPointerTargetPosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
Function:
|
Function:
|
||||||
Purpose:
|
Purpose:
|
||||||
|
@ -380,6 +378,26 @@ void CMapScene::copyImageToScreen(int _file,int _x,int _y,int _w,int _h)
|
||||||
MemFree(image);
|
MemFree(image);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
|
DVECTOR CMapScene::getPointerTargetPosition()
|
||||||
|
{
|
||||||
|
DVECTOR pos;
|
||||||
|
pos.vx=256-((MAP_LEVEL_WIDTH*3)/2)-MAP_LEVEL_X_SPACING+
|
||||||
|
((m_currentLevelSelection%3)*(MAP_LEVEL_WIDTH+MAP_LEVEL_X_SPACING))+
|
||||||
|
(MAP_LEVEL_WIDTH/2);
|
||||||
|
pos.vy=MAP_PARCHMENT_START_Y+MAP_LEVEL_TOP_BORDER+
|
||||||
|
((m_currentLevelSelection/3)*(MAP_LEVEL_HEIGHT+MAP_LEVEL_Y_SPACING))+
|
||||||
|
(MAP_LEVEL_HEIGHT)+
|
||||||
|
(msin(m_pointerSin)*4>>12);
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
Function:
|
Function:
|
||||||
Purpose:
|
Purpose:
|
||||||
|
@ -388,12 +406,12 @@ void CMapScene::copyImageToScreen(int _file,int _x,int _y,int _w,int _h)
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
int CMapScene::isLevelOpen(int _chapter,int _level)
|
int CMapScene::isLevelOpen(int _chapter,int _level)
|
||||||
{
|
{
|
||||||
return true;//_level<4;
|
return _level!=4; // no boss levels atm..
|
||||||
}
|
}
|
||||||
|
|
||||||
int CMapScene::getSpatulaCollectedCount(int _chapter,int _level)
|
int CMapScene::getSpatulaCollectedCount(int _chapter,int _level)
|
||||||
{
|
{
|
||||||
return 10+_level;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CMapScene::getSpatulaAvailableCount(int _chapter,int _level)
|
int CMapScene::getSpatulaAvailableCount(int _chapter,int _level)
|
||||||
|
@ -403,7 +421,7 @@ int CMapScene::getSpatulaAvailableCount(int _chapter,int _level)
|
||||||
|
|
||||||
int CMapScene::hasQuestItemBeenCollected(int _chapter,int _level)
|
int CMapScene::hasQuestItemBeenCollected(int _chapter,int _level)
|
||||||
{
|
{
|
||||||
return _level<2;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,36 @@ public:
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
MAP_PARCHMENT_WIDTH=496,
|
||||||
|
MAP_PARCHMENT_HEIGHT=190,
|
||||||
|
MAP_PARCHMENT_START_X=(512-MAP_PARCHMENT_WIDTH)/2,
|
||||||
|
MAP_PARCHMENT_START_Y=20,
|
||||||
|
|
||||||
|
MAP_LEVEL_WIDTH=140,
|
||||||
|
MAP_LEVEL_HEIGHT=60,
|
||||||
|
MAP_LEVEL_TOP_BORDER=20,
|
||||||
|
MAP_LEVEL_Y_SPACING=8,
|
||||||
|
MAP_LEVEL_X_SPACING=4,
|
||||||
|
|
||||||
|
|
||||||
|
MAP_INSTRUCTIONS_WIDTH=416,
|
||||||
|
MAP_INSTRUCTIONS_HEIGHT=32,
|
||||||
|
MAP_INSTRUCTIONS_BOTTOM_OFFSET=40,
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int m_mapFiles[6];
|
||||||
|
int m_globalLevelNumbers[6];
|
||||||
|
int m_questItemFrames[4];
|
||||||
|
} sMapLevelData;
|
||||||
|
|
||||||
|
|
||||||
|
void generateMapScreenImage();
|
||||||
void copyImageToScreen(int _file,int _x,int _y,int _w,int _h);
|
void copyImageToScreen(int _file,int _x,int _y,int _w,int _h);
|
||||||
|
DVECTOR getPointerTargetPosition();
|
||||||
int isLevelOpen(int _chapter,int _level);
|
int isLevelOpen(int _chapter,int _level);
|
||||||
int getSpatulaCollectedCount(int _chapter,int _level);
|
int getSpatulaCollectedCount(int _chapter,int _level);
|
||||||
int getSpatulaAvailableCount(int _chapter,int _level);
|
int getSpatulaAvailableCount(int _chapter,int _level);
|
||||||
|
@ -62,7 +91,6 @@ private:
|
||||||
|
|
||||||
char *m_screenImage;
|
char *m_screenImage;
|
||||||
|
|
||||||
class CGUIControlFrame *m_guiFrame;
|
|
||||||
class SpriteBank *m_spriteBank;
|
class SpriteBank *m_spriteBank;
|
||||||
|
|
||||||
int m_currentChapterSelection;
|
int m_currentChapterSelection;
|
||||||
|
@ -71,6 +99,8 @@ private:
|
||||||
DVECTOR m_pointerTarget;
|
DVECTOR m_pointerTarget;
|
||||||
int m_pointerSin;
|
int m_pointerSin;
|
||||||
|
|
||||||
|
static sMapLevelData s_mapLevelData[5];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue