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
|
; 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]
|
[STR__MAP_SCREEN__X_TO_START]
|
||||||
eng=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]
|
[STR__MAP_SCREEN__TRIANGLE_TO_SAVE]
|
||||||
eng=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/sandy.bmp faces/spongebob.bmp faces/squidward.bmp \
|
||||||
faces/mermaidman.bmp faces/barnacleboy.bmp faces/gary.bmp \
|
faces/mermaidman.bmp faces/barnacleboy.bmp faces/gary.bmp \
|
||||||
+helpbox1.bmp +helpbox2.bmp +helpbox3.bmp +helpbox4.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))
|
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 },
|
{ 42,49 }, // MAP_ICON_LEVEL_1
|
||||||
{ 186,49 },
|
{ 186,49 }, // MAP_ICON_LEVEL_2
|
||||||
{ 330,49 },
|
{ 330,49 }, // MAP_ICON_LEVEL_3
|
||||||
{ 42,113 },
|
{ 42,113 }, // MAP_ICON_LEVEL_4
|
||||||
{ 330,113 },
|
{ 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_chapterToStartOn=0;
|
||||||
int CMapScene::s_levelToStartOn=0;
|
int CMapScene::s_levelToStartOn=0;
|
||||||
|
|
||||||
|
@ -251,7 +263,7 @@ void CMapScene::init()
|
||||||
}
|
}
|
||||||
|
|
||||||
generateMapScreenImage();
|
generateMapScreenImage();
|
||||||
m_currentLevelSelection=s_levelToStartOn;
|
m_currentIconSelection=s_levelToStartOn+1;
|
||||||
|
|
||||||
m_pointerIcon=new ("MapPointer") CPointerIcon();
|
m_pointerIcon=new ("MapPointer") CPointerIcon();
|
||||||
m_pointerIcon->snapToTarget(getPointerTargetPosition());
|
m_pointerIcon->snapToTarget(getPointerTargetPosition());
|
||||||
|
@ -303,7 +315,10 @@ void CMapScene::render()
|
||||||
int i;
|
int i;
|
||||||
char buf[100];
|
char buf[100];
|
||||||
|
|
||||||
m_pointerIcon->render();
|
if(m_currentIconSelection!=MAP_ICON_PREVIOUS_CHAPTER&&m_currentIconSelection!=MAP_ICON_NEXT_CHAPTER)
|
||||||
|
{
|
||||||
|
m_pointerIcon->render();
|
||||||
|
}
|
||||||
|
|
||||||
sb=CGameScene::getSpriteBank();
|
sb=CGameScene::getSpriteBank();
|
||||||
level=&s_mapLevelData[m_currentChapterSelection][0];
|
level=&s_mapLevelData[m_currentChapterSelection][0];
|
||||||
|
@ -345,9 +360,10 @@ void CMapScene::render()
|
||||||
}
|
}
|
||||||
|
|
||||||
renderInstructions();
|
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->setColour(0,255,0);
|
||||||
m_font->print(24,24,buf);
|
m_font->print(24,24,buf);
|
||||||
m_font->setColour(0,0,0);
|
m_font->setColour(0,0,0);
|
||||||
|
@ -364,57 +380,42 @@ m_font->print(25,25,buf);
|
||||||
void CMapScene::renderInstructions()
|
void CMapScene::renderInstructions()
|
||||||
{
|
{
|
||||||
// Instructions
|
// Instructions
|
||||||
int renderChapterControls;
|
|
||||||
SpriteBank *sb;
|
SpriteBank *sb;
|
||||||
sFrameHdr *fh1,*fh2;
|
sFrameHdr *fh1,*fh2;
|
||||||
int width;
|
int width;
|
||||||
int x,y;
|
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();
|
sb=CGameScene::getSpriteBank();
|
||||||
m_font->setColour(MAP_INSTRUCTIONS_TEXT_R,MAP_INSTRUCTIONS_TEXT_G,MAP_INSTRUCTIONS_TEXT_B);
|
m_font->setColour(MAP_INSTRUCTIONS_TEXT_R,MAP_INSTRUCTIONS_TEXT_G,MAP_INSTRUCTIONS_TEXT_B);
|
||||||
|
|
||||||
y=MAP_INSTRUCTIONS_YSTART;
|
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;
|
switch(m_currentIconSelection)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
sb->printFT4(fh1,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
case MAP_ICON_PREVIOUS_CHAPTER:
|
||||||
}
|
xText=STR__MAP_SCREEN__X_FOR_PREVIOUS_CHAPTER;
|
||||||
x+=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS;
|
break;
|
||||||
if(renderChapterControls)
|
case MAP_ICON_LEVEL_1:
|
||||||
{
|
case MAP_ICON_LEVEL_2:
|
||||||
sb->printFT4(fh2,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
case MAP_ICON_LEVEL_3:
|
||||||
}
|
case MAP_ICON_LEVEL_4:
|
||||||
x+=fh2->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT;
|
case MAP_ICON_LEVEL_BONUS:
|
||||||
if(renderChapterControls)
|
xText=STR__MAP_SCREEN__X_TO_START;
|
||||||
{
|
break;
|
||||||
m_font->print(x,y,STR__MAP_SCREEN__UP_DOWN_TO_SELECT_CHAPTER);
|
case MAP_ICON_NEXT_CHAPTER:
|
||||||
|
xText=STR__MAP_SCREEN__X_FOR_NEXT_CHAPTER;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
y+=MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES;
|
y+=MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES;
|
||||||
fh1=sb->getFrameHeader(FRM__BUTX);
|
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);
|
x=256-(width/2);
|
||||||
sb->printFT4(fh1,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
sb->printFT4(fh1,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
||||||
x+=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT;
|
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;
|
y+=MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES;
|
||||||
fh1=sb->getFrameHeader(FRM__BUTT);
|
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:
|
Function:
|
||||||
Purpose:
|
Purpose:
|
||||||
|
@ -436,6 +477,8 @@ void CMapScene::think(int _frames)
|
||||||
{
|
{
|
||||||
if(!CFader::isFading()&&!m_readyToExit)
|
if(!CFader::isFading()&&!m_readyToExit)
|
||||||
{
|
{
|
||||||
|
CURSOR_MOVE_STATE cursor=CURSOR_DIDNT_MOVE;
|
||||||
|
|
||||||
if(m_musicStarted==false)
|
if(m_musicStarted==false)
|
||||||
{
|
{
|
||||||
m_musicStarted=true;
|
m_musicStarted=true;
|
||||||
|
@ -443,88 +486,195 @@ void CMapScene::think(int _frames)
|
||||||
}
|
}
|
||||||
|
|
||||||
int pad=PadGetDown(0);
|
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__
|
#ifdef __VERSION_DEBUG__
|
||||||
else if(pad&PAD_L1)
|
if(pad&PAD_L1)
|
||||||
{
|
{
|
||||||
CGameSlotManager::getSlotData()->debugCheatOpenAllLevels();
|
CGameSlotManager::getSlotData()->debugCheatOpenAllLevels();
|
||||||
generateMapScreenImage();
|
generateMapScreenImage();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Move cursor
|
// Move cursor in the gayest way possible..
|
||||||
int lastLevel=m_currentLevelSelection;
|
// Hahahaha! It's like a spiders nest! (pkg and proud of it)
|
||||||
if(pad&PAD_LEFT)
|
if(m_currentIconSelection!=MAP_ICON_PREVIOUS_CHAPTER&&m_currentIconSelection!=MAP_ICON_NEXT_CHAPTER)
|
||||||
{
|
{
|
||||||
do
|
m_previousIconSelection=m_currentIconSelection;
|
||||||
|
}
|
||||||
|
if(pad&PAD_UP)
|
||||||
|
{
|
||||||
|
cursor=CURSOR_MOVED;
|
||||||
|
switch(m_currentIconSelection)
|
||||||
{
|
{
|
||||||
if(--m_currentLevelSelection<0)m_currentLevelSelection=MAP_NUM_LEVELS_PER_CHAPTER-1;
|
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)
|
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));
|
|
||||||
m_pointerIcon->setTarget(getPointerTargetPosition());
|
|
||||||
}
|
}
|
||||||
if(lastLevel!=m_currentLevelSelection)
|
|
||||||
|
// What did the cursor do?
|
||||||
|
switch(cursor)
|
||||||
{
|
{
|
||||||
CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__MOVE_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());
|
||||||
|
}
|
||||||
|
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);
|
m_pointerIcon->think(_frames);
|
||||||
|
|
||||||
|
|
||||||
|
// SELECT or SAVE pressed?
|
||||||
if(m_pointerIcon->canPointerSelect()&&
|
if(m_pointerIcon->canPointerSelect()&&
|
||||||
pad&PAD_CROSS)
|
pad&PAD_CROSS)
|
||||||
{
|
{
|
||||||
CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__OK);
|
CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__SELECT);
|
||||||
s_globalLevelSelectThing=s_mapLevelData[m_currentChapterSelection][m_currentLevelSelection].m_globalLevelNumber;
|
switch(m_currentIconSelection)
|
||||||
m_readyToExit=true;
|
|
||||||
CFader::setFadingOut();
|
|
||||||
if(m_currentChapterSelection==3-1&&m_currentLevelSelection==1-1)
|
|
||||||
{
|
{
|
||||||
// Plankton FMA..
|
case MAP_ICON_PREVIOUS_CHAPTER:
|
||||||
CFmaScene::selectFma(CFmaScene::FMA_SCRIPT__PLANKTON);
|
m_currentChapterSelection--;
|
||||||
GameState::setNextScene(&FmaScene);
|
generateMapScreenImage();
|
||||||
}
|
break;
|
||||||
else
|
|
||||||
{
|
case MAP_ICON_LEVEL_1:
|
||||||
GameState::setNextScene(&GameScene);
|
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_currentIconSelection-1==1-1)
|
||||||
|
{
|
||||||
|
// Plankton FMA..
|
||||||
|
CFmaScene::selectFma(CFmaScene::FMA_SCRIPT__PLANKTON);
|
||||||
|
GameState::setNextScene(&FmaScene);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GameState::setNextScene(&GameScene);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MAP_ICON_NEXT_CHAPTER:
|
||||||
|
m_currentChapterSelection++;
|
||||||
|
generateMapScreenImage();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(pad&PAD_TRIANGLE)
|
else if(pad&PAD_TRIANGLE)
|
||||||
|
@ -563,7 +713,7 @@ void CMapScene::generateMapScreenImage()
|
||||||
|
|
||||||
LZNP_Decode((u8*)m_packedBackgroundImage,(u8*)m_screenImage);
|
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++)
|
for(i=0;i<MAP_NUM_LEVELS_PER_CHAPTER;i++)
|
||||||
{
|
{
|
||||||
if(isLevelOpen(m_currentChapterSelection,i))
|
if(isLevelOpen(m_currentChapterSelection,i))
|
||||||
|
@ -616,9 +766,9 @@ DVECTOR CMapScene::getPointerTargetPosition()
|
||||||
{
|
{
|
||||||
DVECTOR pos;
|
DVECTOR pos;
|
||||||
|
|
||||||
pos=s_mapLevelPositions[m_currentLevelSelection];
|
ASSERT(m_currentIconSelection!=MAP_ICON_PREVIOUS_CHAPTER&&m_currentIconSelection!=MAP_ICON_NEXT_CHAPTER);
|
||||||
pos.vx+=(MAP_LEVEL_WIDTH/2);
|
|
||||||
pos.vy+=MAP_LEVEL_HEIGHT;
|
pos=s_mapPointerPositions[m_currentIconSelection-1];
|
||||||
|
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,15 +53,10 @@ public:
|
||||||
private:
|
private:
|
||||||
enum
|
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_WIDTH=140,
|
||||||
MAP_LEVEL_HEIGHT=60,
|
MAP_LEVEL_HEIGHT=60,
|
||||||
|
|
||||||
MAP_INSTRUCTIONS_YSTART=170,
|
MAP_INSTRUCTIONS_YSTART=180,
|
||||||
MAP_INSTRUCTIONS_BUTTON_Y_OFFSET=3,
|
MAP_INSTRUCTIONS_BUTTON_Y_OFFSET=3,
|
||||||
MAP_INSTRUCTIONS_TEXT_R=128,
|
MAP_INSTRUCTIONS_TEXT_R=128,
|
||||||
MAP_INSTRUCTIONS_TEXT_G=64,
|
MAP_INSTRUCTIONS_TEXT_G=64,
|
||||||
|
@ -70,6 +65,9 @@ private:
|
||||||
MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT=10,
|
MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT=10,
|
||||||
MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES=13,
|
MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES=13,
|
||||||
|
|
||||||
|
MAP_ARROW_PREVIOUS_Y=50,
|
||||||
|
MAP_ARROW_NEXT_Y=190,
|
||||||
|
|
||||||
MAP_NUM_CHAPTERS=5,
|
MAP_NUM_CHAPTERS=5,
|
||||||
MAP_NUM_LEVELS_PER_CHAPTER=5,
|
MAP_NUM_LEVELS_PER_CHAPTER=5,
|
||||||
};
|
};
|
||||||
|
@ -123,9 +121,35 @@ private:
|
||||||
u8 *Gfx;
|
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 renderPointer();
|
||||||
void renderInstructions();
|
void renderInstructions();
|
||||||
|
void renderChapterArrows();
|
||||||
|
|
||||||
|
|
||||||
void generateMapScreenImage();
|
void generateMapScreenImage();
|
||||||
|
@ -145,12 +169,13 @@ private:
|
||||||
char *m_packedBackgroundImage;
|
char *m_packedBackgroundImage;
|
||||||
|
|
||||||
int m_currentChapterSelection;
|
int m_currentChapterSelection;
|
||||||
int m_currentLevelSelection;
|
int m_currentIconSelection,m_previousIconSelection;
|
||||||
class CPointerIcon *m_pointerIcon;
|
class CPointerIcon *m_pointerIcon;
|
||||||
|
|
||||||
static sMapLevelGfxTable s_GfxTable[MAP_GFX_MAX];
|
static sMapLevelGfxTable s_GfxTable[MAP_GFX_MAX];
|
||||||
static sMapLevelData s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEVELS_PER_CHAPTER];
|
static sMapLevelData s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEVELS_PER_CHAPTER];
|
||||||
static DVECTOR s_mapLevelPositions[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_chapterToStartOn;
|
||||||
static int s_levelToStartOn;
|
static int s_levelToStartOn;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue