This commit is contained in:
parent
cfd949ade6
commit
b25080353f
4 changed files with 292 additions and 116 deletions
|
@ -498,12 +498,12 @@ eng=Are you sure that you want to erase this game?
|
|||
; Map screen
|
||||
; ---------------------------------------------------------------
|
||||
|
||||
[STR__MAP_SCREEN__LEFT_RIGHT_TO_SELECT_LEVEL]
|
||||
eng=Select level
|
||||
[STR__MAP_SCREEN__UP_DOWN_TO_SELECT_CHAPTER]
|
||||
eng=Select chapter
|
||||
[STR__MAP_SCREEN__X_TO_START]
|
||||
eng=Start
|
||||
[STR__MAP_SCREEN__X_FOR_NEXT_CHAPTER]
|
||||
eng=Next chapter
|
||||
[STR__MAP_SCREEN__X_FOR_PREVIOUS_CHAPTER]
|
||||
eng=Previous chapter
|
||||
[STR__MAP_SCREEN__TRIANGLE_TO_SAVE]
|
||||
eng=Save
|
||||
|
||||
|
|
|
@ -253,7 +253,8 @@ UI_GFX_TRANS := +bambootopleft.bmp +bamboobotleft.bmp +bambootopright.bmp +ba
|
|||
faces/sandy.bmp faces/spongebob.bmp faces/squidward.bmp \
|
||||
faces/mermaidman.bmp faces/barnacleboy.bmp faces/gary.bmp \
|
||||
+helpbox1.bmp +helpbox2.bmp +helpbox3.bmp +helpbox4.bmp \
|
||||
+small_balloon.bmp +small_blower.bmp +small_bubblewand.bmp +small_launcher.bmp +small_net.bmp
|
||||
+small_balloon.bmp +small_blower.bmp +small_bubblewand.bmp +small_launcher.bmp +small_net.bmp \
|
||||
map\+map_arrow.bmp
|
||||
UI_GFX_TRANS_IN := $(foreach FILE,$(UI_GFX_TRANS),$(UI_GFX_DIR)/$(FILE))
|
||||
|
||||
####
|
||||
|
|
|
@ -207,15 +207,27 @@ CMapScene::sMapLevelData CMapScene::s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEV
|
|||
};
|
||||
|
||||
|
||||
DVECTOR CMapScene::s_mapLevelPositions[MAP_NUM_LEVELS_PER_CHAPTER]=
|
||||
// Positions of map gfx on the screen
|
||||
DVECTOR CMapScene::s_mapLevelPositions[CMapScene::MAP_NUM_LEVELS_PER_CHAPTER]=
|
||||
{
|
||||
{ 42,49 },
|
||||
{ 186,49 },
|
||||
{ 330,49 },
|
||||
{ 42,113 },
|
||||
{ 330,113 },
|
||||
{ 42,49 }, // MAP_ICON_LEVEL_1
|
||||
{ 186,49 }, // MAP_ICON_LEVEL_2
|
||||
{ 330,49 }, // MAP_ICON_LEVEL_3
|
||||
{ 42,113 }, // MAP_ICON_LEVEL_4
|
||||
{ 330,113 }, // MAP_ICON_LEVEL_BONUS
|
||||
};
|
||||
|
||||
// Cursor positions for all icons
|
||||
DVECTOR CMapScene::s_mapPointerPositions[CMapScene::MAP_NUM_LEVELS_PER_CHAPTER]=
|
||||
{
|
||||
{ 42+(MAP_LEVEL_WIDTH/2),49+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_1
|
||||
{ 186+(MAP_LEVEL_WIDTH/2),49+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_2
|
||||
{ 330+(MAP_LEVEL_WIDTH/2),49+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_3
|
||||
{ 42+(MAP_LEVEL_WIDTH/2),113+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_4
|
||||
{ 330+(MAP_LEVEL_WIDTH/2),113+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_BONUS
|
||||
};
|
||||
|
||||
|
||||
int CMapScene::s_chapterToStartOn=0;
|
||||
int CMapScene::s_levelToStartOn=0;
|
||||
|
||||
|
@ -251,7 +263,7 @@ void CMapScene::init()
|
|||
}
|
||||
|
||||
generateMapScreenImage();
|
||||
m_currentLevelSelection=s_levelToStartOn;
|
||||
m_currentIconSelection=s_levelToStartOn+1;
|
||||
|
||||
m_pointerIcon=new ("MapPointer") CPointerIcon();
|
||||
m_pointerIcon->snapToTarget(getPointerTargetPosition());
|
||||
|
@ -303,7 +315,10 @@ void CMapScene::render()
|
|||
int i;
|
||||
char buf[100];
|
||||
|
||||
if(m_currentIconSelection!=MAP_ICON_PREVIOUS_CHAPTER&&m_currentIconSelection!=MAP_ICON_NEXT_CHAPTER)
|
||||
{
|
||||
m_pointerIcon->render();
|
||||
}
|
||||
|
||||
sb=CGameScene::getSpriteBank();
|
||||
level=&s_mapLevelData[m_currentChapterSelection][0];
|
||||
|
@ -345,9 +360,10 @@ void CMapScene::render()
|
|||
}
|
||||
|
||||
renderInstructions();
|
||||
renderChapterArrows();
|
||||
|
||||
|
||||
sprintf(buf,"Chapter %d, Level %d",m_currentChapterSelection+1,m_currentLevelSelection+1);
|
||||
sprintf(buf,"Chapter %d",m_currentChapterSelection+1);
|
||||
m_font->setColour(0,255,0);
|
||||
m_font->print(24,24,buf);
|
||||
m_font->setColour(0,0,0);
|
||||
|
@ -364,57 +380,42 @@ m_font->print(25,25,buf);
|
|||
void CMapScene::renderInstructions()
|
||||
{
|
||||
// Instructions
|
||||
int renderChapterControls;
|
||||
SpriteBank *sb;
|
||||
sFrameHdr *fh1,*fh2;
|
||||
int width;
|
||||
int x,y;
|
||||
int xText=0;
|
||||
|
||||
|
||||
// If only the first chapter is open then you can't select other ones...
|
||||
renderChapterControls=isChapterOpen(1)?true:false;
|
||||
|
||||
sb=CGameScene::getSpriteBank();
|
||||
m_font->setColour(MAP_INSTRUCTIONS_TEXT_R,MAP_INSTRUCTIONS_TEXT_G,MAP_INSTRUCTIONS_TEXT_B);
|
||||
|
||||
y=MAP_INSTRUCTIONS_YSTART;
|
||||
fh1=sb->getFrameHeader(FRM__BUTL);
|
||||
fh2=sb->getFrameHeader(FRM__BUTR);
|
||||
width=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS+fh2->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT+m_font->getStringWidth(STR__MAP_SCREEN__LEFT_RIGHT_TO_SELECT_LEVEL);
|
||||
x=256-(width/2);
|
||||
sb->printFT4(fh1,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
||||
x+=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS;
|
||||
sb->printFT4(fh2,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
||||
x+=fh2->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT;
|
||||
m_font->print(x,y,STR__MAP_SCREEN__LEFT_RIGHT_TO_SELECT_LEVEL);
|
||||
|
||||
y+=MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES;
|
||||
fh1=sb->getFrameHeader(FRM__BUTU);
|
||||
fh2=sb->getFrameHeader(FRM__BUTD);
|
||||
width=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS+fh2->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT+m_font->getStringWidth(STR__MAP_SCREEN__UP_DOWN_TO_SELECT_CHAPTER);
|
||||
x=256-(width/2);
|
||||
if(renderChapterControls)
|
||||
switch(m_currentIconSelection)
|
||||
{
|
||||
sb->printFT4(fh1,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
||||
}
|
||||
x+=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS;
|
||||
if(renderChapterControls)
|
||||
{
|
||||
sb->printFT4(fh2,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
||||
}
|
||||
x+=fh2->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT;
|
||||
if(renderChapterControls)
|
||||
{
|
||||
m_font->print(x,y,STR__MAP_SCREEN__UP_DOWN_TO_SELECT_CHAPTER);
|
||||
case MAP_ICON_PREVIOUS_CHAPTER:
|
||||
xText=STR__MAP_SCREEN__X_FOR_PREVIOUS_CHAPTER;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_1:
|
||||
case MAP_ICON_LEVEL_2:
|
||||
case MAP_ICON_LEVEL_3:
|
||||
case MAP_ICON_LEVEL_4:
|
||||
case MAP_ICON_LEVEL_BONUS:
|
||||
xText=STR__MAP_SCREEN__X_TO_START;
|
||||
break;
|
||||
case MAP_ICON_NEXT_CHAPTER:
|
||||
xText=STR__MAP_SCREEN__X_FOR_NEXT_CHAPTER;
|
||||
break;
|
||||
}
|
||||
|
||||
y+=MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES;
|
||||
fh1=sb->getFrameHeader(FRM__BUTX);
|
||||
width=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT+m_font->getStringWidth(STR__MAP_SCREEN__X_TO_START);
|
||||
width=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT+m_font->getStringWidth(xText);
|
||||
x=256-(width/2);
|
||||
sb->printFT4(fh1,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
||||
x+=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT;
|
||||
m_font->print(x,y,STR__MAP_SCREEN__X_TO_START);
|
||||
m_font->print(x,y,xText);
|
||||
|
||||
y+=MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES;
|
||||
fh1=sb->getFrameHeader(FRM__BUTT);
|
||||
|
@ -426,6 +427,46 @@ void CMapScene::renderInstructions()
|
|||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void CMapScene::renderChapterArrows()
|
||||
{
|
||||
SpriteBank *sb;
|
||||
sFrameHdr *fh;
|
||||
int x,y;
|
||||
POLY_FT4 *ft4;
|
||||
|
||||
sb=CGameScene::getSpriteBank();
|
||||
fh=sb->getFrameHeader(FRM__MAP_ARROW);
|
||||
|
||||
x=256;
|
||||
if(m_currentChapterSelection>0&&isChapterOpen(m_currentChapterSelection-1))
|
||||
{
|
||||
int selected=false;
|
||||
y=MAP_ARROW_PREVIOUS_Y-fh->H;
|
||||
if(m_currentIconSelection==MAP_ICON_PREVIOUS_CHAPTER)
|
||||
{
|
||||
selected=true;
|
||||
}
|
||||
ft4=sb->printFT4Scaled(fh,x,y,0,0,0,selected?512:256);
|
||||
}
|
||||
if(m_currentChapterSelection<5&&isChapterOpen(m_currentChapterSelection+1))
|
||||
{
|
||||
int selected=false;
|
||||
y=MAP_ARROW_NEXT_Y-fh->H;
|
||||
if(m_currentIconSelection==MAP_ICON_NEXT_CHAPTER)
|
||||
{
|
||||
selected=true;
|
||||
}
|
||||
ft4=sb->printFT4Scaled(fh,x,y,0,1,0,selected?512:256);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
|
@ -436,6 +477,8 @@ void CMapScene::think(int _frames)
|
|||
{
|
||||
if(!CFader::isFading()&&!m_readyToExit)
|
||||
{
|
||||
CURSOR_MOVE_STATE cursor=CURSOR_DIDNT_MOVE;
|
||||
|
||||
if(m_musicStarted==false)
|
||||
{
|
||||
m_musicStarted=true;
|
||||
|
@ -443,80 +486,180 @@ void CMapScene::think(int _frames)
|
|||
}
|
||||
|
||||
int pad=PadGetDown(0);
|
||||
|
||||
// Change chapter
|
||||
if(pad&PAD_UP)
|
||||
{
|
||||
int nextChapter=m_currentChapterSelection;
|
||||
do
|
||||
{
|
||||
nextChapter++;
|
||||
if(nextChapter==MAP_NUM_CHAPTERS)nextChapter=0;
|
||||
}
|
||||
while(!isChapterOpen(nextChapter));
|
||||
if(nextChapter!=m_currentChapterSelection)
|
||||
{
|
||||
m_currentChapterSelection=nextChapter;
|
||||
generateMapScreenImage();
|
||||
}
|
||||
}
|
||||
else if(pad&PAD_DOWN)
|
||||
{
|
||||
int nextChapter=m_currentChapterSelection;
|
||||
do
|
||||
{
|
||||
nextChapter--;
|
||||
if(nextChapter<0)nextChapter=MAP_NUM_CHAPTERS-1;
|
||||
}
|
||||
while(!isChapterOpen(nextChapter));
|
||||
if(nextChapter!=m_currentChapterSelection)
|
||||
{
|
||||
m_currentChapterSelection=nextChapter;
|
||||
generateMapScreenImage();
|
||||
}
|
||||
}
|
||||
#ifdef __VERSION_DEBUG__
|
||||
else if(pad&PAD_L1)
|
||||
if(pad&PAD_L1)
|
||||
{
|
||||
CGameSlotManager::getSlotData()->debugCheatOpenAllLevels();
|
||||
generateMapScreenImage();
|
||||
}
|
||||
#endif
|
||||
|
||||
// Move cursor
|
||||
int lastLevel=m_currentLevelSelection;
|
||||
if(pad&PAD_LEFT)
|
||||
// Move cursor in the gayest way possible..
|
||||
// Hahahaha! It's like a spiders nest! (pkg and proud of it)
|
||||
if(m_currentIconSelection!=MAP_ICON_PREVIOUS_CHAPTER&&m_currentIconSelection!=MAP_ICON_NEXT_CHAPTER)
|
||||
{
|
||||
do
|
||||
{
|
||||
if(--m_currentLevelSelection<0)m_currentLevelSelection=MAP_NUM_LEVELS_PER_CHAPTER-1;
|
||||
m_previousIconSelection=m_currentIconSelection;
|
||||
}
|
||||
if(pad&PAD_UP)
|
||||
{
|
||||
cursor=CURSOR_MOVED;
|
||||
switch(m_currentIconSelection)
|
||||
{
|
||||
case MAP_ICON_PREVIOUS_CHAPTER:
|
||||
break;
|
||||
case MAP_ICON_LEVEL_1:
|
||||
case MAP_ICON_LEVEL_2:
|
||||
case MAP_ICON_LEVEL_3:
|
||||
if(m_currentChapterSelection>0&&isChapterOpen(m_currentChapterSelection-1))m_currentIconSelection=MAP_ICON_PREVIOUS_CHAPTER;
|
||||
else cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_4:
|
||||
m_currentIconSelection=MAP_ICON_LEVEL_1;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_BONUS:
|
||||
if(isLevelOpen(m_currentChapterSelection,3-1))m_currentIconSelection=MAP_ICON_LEVEL_3;
|
||||
else if(isLevelOpen(m_currentChapterSelection,2-1))m_currentIconSelection=MAP_ICON_LEVEL_2;
|
||||
else m_currentIconSelection=MAP_ICON_LEVEL_1;
|
||||
break;
|
||||
case MAP_ICON_NEXT_CHAPTER:
|
||||
m_currentIconSelection=m_previousIconSelection;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(pad&PAD_DOWN)
|
||||
{
|
||||
int nextChapterAvailable=false;
|
||||
if(m_currentChapterSelection<5&&isChapterOpen(m_currentChapterSelection+1))nextChapterAvailable=true;
|
||||
|
||||
cursor=CURSOR_MOVED;
|
||||
switch(m_currentIconSelection)
|
||||
{
|
||||
case MAP_ICON_PREVIOUS_CHAPTER:
|
||||
m_currentIconSelection=m_previousIconSelection;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_1:
|
||||
case MAP_ICON_LEVEL_2:
|
||||
if(isLevelOpen(m_currentChapterSelection,4-1))m_currentIconSelection=MAP_ICON_LEVEL_4;
|
||||
else if(isLevelOpen(m_currentChapterSelection,5-1))m_currentIconSelection=MAP_ICON_LEVEL_BONUS;
|
||||
else if(nextChapterAvailable)m_currentIconSelection=MAP_ICON_NEXT_CHAPTER;
|
||||
else cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_3:
|
||||
if(isLevelOpen(m_currentChapterSelection,5-1))m_currentIconSelection=MAP_ICON_LEVEL_BONUS;
|
||||
else if(isLevelOpen(m_currentChapterSelection,4-1))m_currentIconSelection=MAP_ICON_LEVEL_4;
|
||||
else if(nextChapterAvailable)m_currentIconSelection=MAP_ICON_NEXT_CHAPTER;
|
||||
else cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_4:
|
||||
case MAP_ICON_LEVEL_BONUS:
|
||||
if(nextChapterAvailable)m_currentIconSelection=MAP_ICON_NEXT_CHAPTER;
|
||||
else cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_NEXT_CHAPTER:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(pad&PAD_LEFT)
|
||||
{
|
||||
cursor=CURSOR_MOVED;
|
||||
switch(m_currentIconSelection)
|
||||
{
|
||||
case MAP_ICON_PREVIOUS_CHAPTER:
|
||||
cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_1:
|
||||
cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_2:
|
||||
m_currentIconSelection=MAP_ICON_LEVEL_1;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_3:
|
||||
m_currentIconSelection=MAP_ICON_LEVEL_2;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_4:
|
||||
cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_BONUS:
|
||||
if(isLevelOpen(m_currentChapterSelection,4-1))m_currentIconSelection=MAP_ICON_LEVEL_4;
|
||||
else cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_NEXT_CHAPTER:
|
||||
cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
}
|
||||
while(!isLevelOpen(m_currentChapterSelection,m_currentLevelSelection));
|
||||
m_pointerIcon->setTarget(getPointerTargetPosition());
|
||||
}
|
||||
else if(pad&PAD_RIGHT)
|
||||
{
|
||||
do
|
||||
cursor=CURSOR_MOVED;
|
||||
switch(m_currentIconSelection)
|
||||
{
|
||||
if(++m_currentLevelSelection>=MAP_NUM_LEVELS_PER_CHAPTER)m_currentLevelSelection=0;
|
||||
case MAP_ICON_PREVIOUS_CHAPTER:
|
||||
cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_1:
|
||||
if(isLevelOpen(m_currentChapterSelection,2-1))m_currentIconSelection=MAP_ICON_LEVEL_2;
|
||||
else cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_2:
|
||||
if(isLevelOpen(m_currentChapterSelection,3-1))m_currentIconSelection=MAP_ICON_LEVEL_3;
|
||||
else cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_3:
|
||||
cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_4:
|
||||
if(isLevelOpen(m_currentChapterSelection,5-1))m_currentIconSelection=MAP_ICON_LEVEL_BONUS;
|
||||
else cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_LEVEL_BONUS:
|
||||
cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
case MAP_ICON_NEXT_CHAPTER:
|
||||
cursor=CURSOR_COULDNT_MOVE;
|
||||
break;
|
||||
}
|
||||
while(!isLevelOpen(m_currentChapterSelection,m_currentLevelSelection));
|
||||
}
|
||||
|
||||
// What did the cursor do?
|
||||
switch(cursor)
|
||||
{
|
||||
case CURSOR_DIDNT_MOVE:
|
||||
break;
|
||||
case CURSOR_MOVED:
|
||||
if(m_currentIconSelection!=MAP_ICON_PREVIOUS_CHAPTER&&m_currentIconSelection!=MAP_ICON_NEXT_CHAPTER)
|
||||
{
|
||||
m_pointerIcon->setTarget(getPointerTargetPosition());
|
||||
}
|
||||
if(lastLevel!=m_currentLevelSelection)
|
||||
{
|
||||
CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__MOVE_CURSOR);
|
||||
break;
|
||||
case CURSOR_COULDNT_MOVE:
|
||||
CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__ERROR,false,true);
|
||||
break;
|
||||
}
|
||||
m_pointerIcon->think(_frames);
|
||||
|
||||
|
||||
// SELECT or SAVE pressed?
|
||||
if(m_pointerIcon->canPointerSelect()&&
|
||||
pad&PAD_CROSS)
|
||||
{
|
||||
CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__OK);
|
||||
s_globalLevelSelectThing=s_mapLevelData[m_currentChapterSelection][m_currentLevelSelection].m_globalLevelNumber;
|
||||
CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__SELECT);
|
||||
switch(m_currentIconSelection)
|
||||
{
|
||||
case MAP_ICON_PREVIOUS_CHAPTER:
|
||||
m_currentChapterSelection--;
|
||||
generateMapScreenImage();
|
||||
break;
|
||||
|
||||
case MAP_ICON_LEVEL_1:
|
||||
case MAP_ICON_LEVEL_2:
|
||||
case MAP_ICON_LEVEL_3:
|
||||
case MAP_ICON_LEVEL_4:
|
||||
case MAP_ICON_LEVEL_BONUS:
|
||||
s_globalLevelSelectThing=s_mapLevelData[m_currentChapterSelection][m_currentIconSelection-1].m_globalLevelNumber;
|
||||
m_readyToExit=true;
|
||||
CFader::setFadingOut();
|
||||
if(m_currentChapterSelection==3-1&&m_currentLevelSelection==1-1)
|
||||
if(m_currentChapterSelection==3-1&&m_currentIconSelection-1==1-1)
|
||||
{
|
||||
// Plankton FMA..
|
||||
CFmaScene::selectFma(CFmaScene::FMA_SCRIPT__PLANKTON);
|
||||
|
@ -526,6 +669,13 @@ void CMapScene::think(int _frames)
|
|||
{
|
||||
GameState::setNextScene(&GameScene);
|
||||
}
|
||||
break;
|
||||
|
||||
case MAP_ICON_NEXT_CHAPTER:
|
||||
m_currentChapterSelection++;
|
||||
generateMapScreenImage();
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(pad&PAD_TRIANGLE)
|
||||
{
|
||||
|
@ -563,7 +713,7 @@ void CMapScene::generateMapScreenImage()
|
|||
|
||||
LZNP_Decode((u8*)m_packedBackgroundImage,(u8*)m_screenImage);
|
||||
|
||||
m_currentLevelSelection=0;
|
||||
m_currentIconSelection=MAP_ICON_LEVEL_1;
|
||||
for(i=0;i<MAP_NUM_LEVELS_PER_CHAPTER;i++)
|
||||
{
|
||||
if(isLevelOpen(m_currentChapterSelection,i))
|
||||
|
@ -616,9 +766,9 @@ DVECTOR CMapScene::getPointerTargetPosition()
|
|||
{
|
||||
DVECTOR pos;
|
||||
|
||||
pos=s_mapLevelPositions[m_currentLevelSelection];
|
||||
pos.vx+=(MAP_LEVEL_WIDTH/2);
|
||||
pos.vy+=MAP_LEVEL_HEIGHT;
|
||||
ASSERT(m_currentIconSelection!=MAP_ICON_PREVIOUS_CHAPTER&&m_currentIconSelection!=MAP_ICON_NEXT_CHAPTER);
|
||||
|
||||
pos=s_mapPointerPositions[m_currentIconSelection-1];
|
||||
|
||||
return pos;
|
||||
}
|
||||
|
|
|
@ -53,15 +53,10 @@ public:
|
|||
private:
|
||||
enum
|
||||
{
|
||||
MAP_PARCHMENT_WIDTH=512,
|
||||
MAP_PARCHMENT_HEIGHT=256,
|
||||
MAP_PARCHMENT_START_X=0,
|
||||
MAP_PARCHMENT_START_Y=0,
|
||||
|
||||
MAP_LEVEL_WIDTH=140,
|
||||
MAP_LEVEL_HEIGHT=60,
|
||||
|
||||
MAP_INSTRUCTIONS_YSTART=170,
|
||||
MAP_INSTRUCTIONS_YSTART=180,
|
||||
MAP_INSTRUCTIONS_BUTTON_Y_OFFSET=3,
|
||||
MAP_INSTRUCTIONS_TEXT_R=128,
|
||||
MAP_INSTRUCTIONS_TEXT_G=64,
|
||||
|
@ -70,6 +65,9 @@ private:
|
|||
MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT=10,
|
||||
MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES=13,
|
||||
|
||||
MAP_ARROW_PREVIOUS_Y=50,
|
||||
MAP_ARROW_NEXT_Y=190,
|
||||
|
||||
MAP_NUM_CHAPTERS=5,
|
||||
MAP_NUM_LEVELS_PER_CHAPTER=5,
|
||||
};
|
||||
|
@ -123,9 +121,35 @@ private:
|
|||
u8 *Gfx;
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
MAP_ICON_PREVIOUS_CHAPTER,
|
||||
MAP_ICON_LEVEL_1,
|
||||
MAP_ICON_LEVEL_2,
|
||||
MAP_ICON_LEVEL_3,
|
||||
MAP_ICON_LEVEL_4,
|
||||
MAP_ICON_LEVEL_BONUS,
|
||||
MAP_ICON_NEXT_CHAPTER,
|
||||
|
||||
NUM_MAP_ICONS,
|
||||
};
|
||||
typedef struct
|
||||
{
|
||||
u8 m_left,m_right,m_up,m_down;
|
||||
} sMapIconMoves;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CURSOR_DIDNT_MOVE,
|
||||
CURSOR_MOVED,
|
||||
CURSOR_COULDNT_MOVE,
|
||||
} CURSOR_MOVE_STATE;
|
||||
|
||||
|
||||
|
||||
void renderPointer();
|
||||
void renderInstructions();
|
||||
void renderChapterArrows();
|
||||
|
||||
|
||||
void generateMapScreenImage();
|
||||
|
@ -145,12 +169,13 @@ private:
|
|||
char *m_packedBackgroundImage;
|
||||
|
||||
int m_currentChapterSelection;
|
||||
int m_currentLevelSelection;
|
||||
int m_currentIconSelection,m_previousIconSelection;
|
||||
class CPointerIcon *m_pointerIcon;
|
||||
|
||||
static sMapLevelGfxTable s_GfxTable[MAP_GFX_MAX];
|
||||
static sMapLevelData s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEVELS_PER_CHAPTER];
|
||||
static DVECTOR s_mapLevelPositions[MAP_NUM_LEVELS_PER_CHAPTER];
|
||||
static DVECTOR s_mapPointerPositions[MAP_NUM_LEVELS_PER_CHAPTER];
|
||||
|
||||
static int s_chapterToStartOn;
|
||||
static int s_levelToStartOn;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue