This commit is contained in:
parent
bd4323bd18
commit
a52ee00ff3
5 changed files with 182 additions and 42 deletions
|
@ -87,6 +87,10 @@
|
||||||
#include "fma\fma.h"
|
#include "fma\fma.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __GAME_GAMESLOT_H__
|
||||||
|
#include "game\gameslot.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include "gfx\actor.h"
|
#include "gfx\actor.h"
|
||||||
|
|
||||||
|
@ -258,14 +262,41 @@ void CGameScene::think(int _frames)
|
||||||
}
|
}
|
||||||
else if(s_levelFinished)
|
else if(s_levelFinished)
|
||||||
{
|
{
|
||||||
|
// Do the gameslot stuff..
|
||||||
|
CGameSlotManager::GameSlot *gameSlot;
|
||||||
|
int level,chapter;
|
||||||
|
int openNextLevel,levelToOpen,chapterToOpen;
|
||||||
|
gameSlot=CGameSlotManager::getSlotData();
|
||||||
|
level=getLevelNumber();
|
||||||
|
chapter=getChapterNumber();
|
||||||
|
|
||||||
|
gameSlot->levelHasBeenCompleted(chapter-1,level-1);
|
||||||
|
if(level!=5&& // Don't open any levels after finishing a bonus level
|
||||||
|
!(level==4&&chapter==5)) // Don't open any levels after finishing final level
|
||||||
|
{
|
||||||
|
if(level!=4)
|
||||||
|
{
|
||||||
|
// Open next level in this chapter..
|
||||||
|
levelToOpen=level+1;
|
||||||
|
chapterToOpen=chapter;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Open first level in next chapter
|
||||||
|
levelToOpen=1;
|
||||||
|
chapterToOpen=chapter+1;
|
||||||
|
}
|
||||||
|
gameSlot->levelIsNowOpen(chapterToOpen-1,levelToOpen-1);
|
||||||
|
}
|
||||||
|
|
||||||
// Level finished - go to map or fma
|
// Level finished - go to map or fma
|
||||||
if(getLevelNumber()==4)
|
if(level==4)
|
||||||
{
|
{
|
||||||
GameState::setNextScene(&FmaScene);
|
GameState::setNextScene(&FmaScene);
|
||||||
}
|
}
|
||||||
else if(getLevelNumber()==5)
|
else if(level==5)
|
||||||
{
|
{
|
||||||
if(getChapterNumber()==5)
|
if(chapter==5)
|
||||||
{
|
{
|
||||||
ShopScene.setGotoPartyScreen();
|
ShopScene.setGotoPartyScreen();
|
||||||
}
|
}
|
||||||
|
|
|
@ -130,6 +130,7 @@ void CGameSlotManager::eraseGameSlot(unsigned int _slot)
|
||||||
slot->m_continues=INITIAL_CONTINUES;
|
slot->m_continues=INITIAL_CONTINUES;
|
||||||
slot->m_maxLevelCompleted=0;
|
slot->m_maxLevelCompleted=0;
|
||||||
|
|
||||||
|
// Clear spatula and kelp token flags
|
||||||
for(i=0;i<NUM_CHAPTERS*NUM_LEVELS_WITH_SPATULAS;i++)
|
for(i=0;i<NUM_CHAPTERS*NUM_LEVELS_WITH_SPATULAS;i++)
|
||||||
{
|
{
|
||||||
for(j=0;j<16;j++)
|
for(j=0;j<16;j++)
|
||||||
|
@ -137,7 +138,6 @@ void CGameSlotManager::eraseGameSlot(unsigned int _slot)
|
||||||
slot->m_spatulaCollectedFlags[i][j]=0;
|
slot->m_spatulaCollectedFlags[i][j]=0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i=0;i<NUM_CHAPTERS;i++)
|
for(i=0;i<NUM_CHAPTERS;i++)
|
||||||
{
|
{
|
||||||
for(j=0;j<16;j++)
|
for(j=0;j<16;j++)
|
||||||
|
@ -151,11 +151,20 @@ void CGameSlotManager::eraseGameSlot(unsigned int _slot)
|
||||||
#else
|
#else
|
||||||
slot->m_kelpTokensHeld=0;
|
slot->m_kelpTokensHeld=0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// No party items held yet
|
||||||
for(i=0;i<CShopScene::NUM_SHOP_ITEM_IDS;i++)
|
for(i=0;i<CShopScene::NUM_SHOP_ITEM_IDS;i++)
|
||||||
{
|
{
|
||||||
slot->m_partyItemsHeld[i]=false;
|
slot->m_partyItemsHeld[i]=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mark all levels except first as NOT_OPEN
|
||||||
|
// On a non-cd build, everything starts as open
|
||||||
|
slot->m_levelCompletionState[0]=LEVELCOMPETESTATE_OPEN;
|
||||||
|
for(i=1;i<NUM_CHAPTERS*(NUM_LEVELS_PER_CHAPTER_WITH_QUEST_ITEMS+NUM_BONUS_LEVELS_PER_CHAPTER);i++)
|
||||||
|
{
|
||||||
|
slot->m_levelCompletionState[i]=LEVELCOMPETESTATE_NOT_OPEN;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,15 @@ public:
|
||||||
|
|
||||||
NUM_CHAPTERS=5,
|
NUM_CHAPTERS=5,
|
||||||
NUM_LEVELS_WITH_SPATULAS=4,
|
NUM_LEVELS_WITH_SPATULAS=4,
|
||||||
|
NUM_LEVELS_PER_CHAPTER_WITH_QUEST_ITEMS=4,
|
||||||
|
NUM_BONUS_LEVELS_PER_CHAPTER=1,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
LEVELCOMPETESTATE_NOT_OPEN, // Level is not available to play
|
||||||
|
LEVELCOMPETESTATE_OPEN, // Level is available to play
|
||||||
|
LEVELCOMPETESTATE_COMPLETED, // Level has been completed
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -64,6 +73,7 @@ public:
|
||||||
unsigned char m_kelpTokenCollectedFlags[NUM_CHAPTERS][16]; // Same again..
|
unsigned char m_kelpTokenCollectedFlags[NUM_CHAPTERS][16]; // Same again..
|
||||||
unsigned char m_kelpTokensHeld;
|
unsigned char m_kelpTokensHeld;
|
||||||
unsigned char m_partyItemsHeld[CShopScene::NUM_SHOP_ITEM_IDS];
|
unsigned char m_partyItemsHeld[CShopScene::NUM_SHOP_ITEM_IDS];
|
||||||
|
unsigned char m_levelCompletionState[NUM_CHAPTERS*(NUM_LEVELS_PER_CHAPTER_WITH_QUEST_ITEMS+NUM_BONUS_LEVELS_PER_CHAPTER)];
|
||||||
|
|
||||||
// Spat functions..
|
// Spat functions..
|
||||||
int getSpatulaCollectedCount(unsigned int _chapter,unsigned int _level)
|
int getSpatulaCollectedCount(unsigned int _chapter,unsigned int _level)
|
||||||
|
@ -150,6 +160,45 @@ public:
|
||||||
ASSERT(!m_partyItemsHeld[_itemNumber]);
|
ASSERT(!m_partyItemsHeld[_itemNumber]);
|
||||||
m_partyItemsHeld[_itemNumber]=true;
|
m_partyItemsHeld[_itemNumber]=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Levels
|
||||||
|
int isLevelOpen(unsigned int _chapter,unsigned int _level)
|
||||||
|
{
|
||||||
|
int index;
|
||||||
|
index=(_chapter*(NUM_LEVELS_PER_CHAPTER_WITH_QUEST_ITEMS+NUM_BONUS_LEVELS_PER_CHAPTER))+_level;
|
||||||
|
return m_levelCompletionState[index]!=(int)LEVELCOMPETESTATE_NOT_OPEN;
|
||||||
|
}
|
||||||
|
int hasQustItemBeenCollected(unsigned int _chapter,unsigned int _level)
|
||||||
|
{
|
||||||
|
int index;
|
||||||
|
index=(_chapter*(NUM_LEVELS_PER_CHAPTER_WITH_QUEST_ITEMS+NUM_BONUS_LEVELS_PER_CHAPTER))+_level;
|
||||||
|
return m_levelCompletionState[index]==(int)LEVELCOMPETESTATE_COMPLETED;
|
||||||
|
}
|
||||||
|
void levelIsNowOpen(unsigned int _chapter,unsigned int _level)
|
||||||
|
{
|
||||||
|
int index;
|
||||||
|
index=(_chapter*(NUM_LEVELS_PER_CHAPTER_WITH_QUEST_ITEMS+NUM_BONUS_LEVELS_PER_CHAPTER))+_level;
|
||||||
|
if(m_levelCompletionState[index]==LEVELCOMPETESTATE_NOT_OPEN)
|
||||||
|
{
|
||||||
|
m_levelCompletionState[index]=LEVELCOMPETESTATE_OPEN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void levelHasBeenCompleted(unsigned int _chapter,unsigned int _level)
|
||||||
|
{
|
||||||
|
int index;
|
||||||
|
index=(_chapter*(NUM_LEVELS_PER_CHAPTER_WITH_QUEST_ITEMS+NUM_BONUS_LEVELS_PER_CHAPTER))+_level;
|
||||||
|
m_levelCompletionState[index]=LEVELCOMPETESTATE_COMPLETED;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __VERSION_DEBUG__
|
||||||
|
void debugCheatOpenAllLevels()
|
||||||
|
{
|
||||||
|
for(int i=1;i<NUM_CHAPTERS*(NUM_LEVELS_PER_CHAPTER_WITH_QUEST_ITEMS+NUM_BONUS_LEVELS_PER_CHAPTER);i++)
|
||||||
|
{
|
||||||
|
m_levelCompletionState[i]=LEVELCOMPETESTATE_OPEN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
} GameSlot;
|
} GameSlot;
|
||||||
|
|
||||||
static void init();
|
static void init();
|
||||||
|
|
|
@ -231,34 +231,36 @@ void CMapScene::render()
|
||||||
// Render spatula/kelp counts and quest items
|
// Render spatula/kelp counts and quest items
|
||||||
for(i=0;i<MAP_NUM_LEVELS_PER_CHAPTER;i++)
|
for(i=0;i<MAP_NUM_LEVELS_PER_CHAPTER;i++)
|
||||||
{
|
{
|
||||||
DVECTOR pos;
|
if(isLevelOpen(m_currentChapterSelection,i))
|
||||||
|
|
||||||
pos=s_mapLevelPositions[i];
|
|
||||||
|
|
||||||
if(!level->m_kelpWorldLevel)
|
|
||||||
{
|
{
|
||||||
sFrameHdr *fh;
|
DVECTOR pos;
|
||||||
POLY_FT4 *ft4;
|
|
||||||
|
|
||||||
// Normal level
|
pos=s_mapLevelPositions[i];
|
||||||
m_font->setColour(253,251,67);
|
|
||||||
sprintf(buf,"%d/%d",CGameSlotManager::getSlotData()->getSpatulaCollectedCount(m_currentChapterSelection,i),level->m_spatulaOrTokenCounts);
|
if(!level->m_kelpWorldLevel)
|
||||||
fh=sb->getFrameHeader(level->m_questItemFrame);
|
|
||||||
ft4=sb->printFT4(fh,pos.vx+MAP_LEVEL_WIDTH-fh->W,pos.vy+MAP_LEVEL_HEIGHT-fh->H,0,0,10);
|
|
||||||
if(!hasQuestItemBeenCollected(m_currentChapterSelection,i))
|
|
||||||
{
|
{
|
||||||
setRGB0(ft4,50,50,50);
|
sFrameHdr *fh;
|
||||||
|
POLY_FT4 *ft4;
|
||||||
|
|
||||||
|
// Normal level
|
||||||
|
m_font->setColour(253,251,67);
|
||||||
|
sprintf(buf,"%d/%d",CGameSlotManager::getSlotData()->getSpatulaCollectedCount(m_currentChapterSelection,i),level->m_spatulaOrTokenCounts);
|
||||||
|
fh=sb->getFrameHeader(level->m_questItemFrame);
|
||||||
|
ft4=sb->printFT4(fh,pos.vx+MAP_LEVEL_WIDTH-fh->W,pos.vy+MAP_LEVEL_HEIGHT-fh->H,0,0,10);
|
||||||
|
if(!hasQuestItemBeenCollected(m_currentChapterSelection,i))
|
||||||
|
{
|
||||||
|
setRGB0(ft4,50,50,50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Bonuse level
|
||||||
|
m_font->setColour(67,251,67);
|
||||||
|
sprintf(buf,"%d/%d",CGameSlotManager::getSlotData()->getKelpTokenCollectedCount(m_currentChapterSelection,i),level->m_spatulaOrTokenCounts);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Bonuse level
|
|
||||||
m_font->setColour(67,251,67);
|
|
||||||
sprintf(buf,"%d/%d",CGameSlotManager::getSlotData()->getKelpTokenCollectedCount(m_currentChapterSelection,i),level->m_spatulaOrTokenCounts);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_font->print(pos.vx,pos.vy,buf);
|
|
||||||
|
|
||||||
|
m_font->print(pos.vx,pos.vy,buf);
|
||||||
|
}
|
||||||
level++;
|
level++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -305,11 +307,16 @@ void CMapScene::renderPointer()
|
||||||
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;
|
||||||
|
|
||||||
|
|
||||||
|
// 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);
|
||||||
|
|
||||||
|
@ -329,11 +336,20 @@ void CMapScene::renderInstructions()
|
||||||
fh2=sb->getFrameHeader(FRM__BUTD);
|
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);
|
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);
|
x=256-(width/2);
|
||||||
sb->printFT4(fh1,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
if(renderChapterControls)
|
||||||
|
{
|
||||||
|
sb->printFT4(fh1,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
||||||
|
}
|
||||||
x+=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS;
|
x+=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS;
|
||||||
sb->printFT4(fh2,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
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;
|
x+=fh2->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT;
|
||||||
m_font->print(x,y,STR__MAP_SCREEN__UP_DOWN_TO_SELECT_CHAPTER);
|
if(renderChapterControls)
|
||||||
|
{
|
||||||
|
m_font->print(x,y,STR__MAP_SCREEN__UP_DOWN_TO_SELECT_CHAPTER);
|
||||||
|
}
|
||||||
|
|
||||||
y+=MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES;
|
y+=MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES;
|
||||||
fh1=sb->getFrameHeader(FRM__BUTX);
|
fh1=sb->getFrameHeader(FRM__BUTX);
|
||||||
|
@ -355,21 +371,50 @@ void CMapScene::think(int _frames)
|
||||||
{
|
{
|
||||||
if(!CFader::isFading()&&!m_readyToExit)
|
if(!CFader::isFading()&&!m_readyToExit)
|
||||||
{
|
{
|
||||||
|
int pad=PadGetDown(0);
|
||||||
|
|
||||||
// Change chapter
|
// Change chapter
|
||||||
if(PadGetDown(0)&PAD_UP)
|
if(pad&PAD_UP)
|
||||||
{
|
{
|
||||||
if(++m_currentChapterSelection>=MAP_NUM_CHAPTERS)m_currentChapterSelection=0;
|
int nextChapter=m_currentChapterSelection;
|
||||||
generateMapScreenImage();
|
do
|
||||||
}
|
{
|
||||||
else if(PadGetDown(0)&PAD_DOWN)
|
nextChapter++;
|
||||||
{
|
if(nextChapter==MAP_NUM_CHAPTERS)nextChapter=0;
|
||||||
if(--m_currentChapterSelection<0)m_currentChapterSelection=MAP_NUM_CHAPTERS-1;
|
}
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
CGameSlotManager::getSlotData()->debugCheatOpenAllLevels();
|
||||||
generateMapScreenImage();
|
generateMapScreenImage();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Move cursor
|
// Move cursor
|
||||||
int lastLevel=m_currentLevelSelection;
|
int lastLevel=m_currentLevelSelection;
|
||||||
if(PadGetDown(0)&PAD_LEFT)
|
if(pad&PAD_LEFT)
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -377,7 +422,7 @@ void CMapScene::think(int _frames)
|
||||||
}
|
}
|
||||||
while(!isLevelOpen(m_currentChapterSelection,m_currentLevelSelection));
|
while(!isLevelOpen(m_currentChapterSelection,m_currentLevelSelection));
|
||||||
}
|
}
|
||||||
else if(PadGetDown(0)&PAD_RIGHT)
|
else if(pad&PAD_RIGHT)
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -438,7 +483,7 @@ void CMapScene::think(int _frames)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_pointerArrivedAtTarget&&
|
if(m_pointerArrivedAtTarget&&
|
||||||
PadGetDown(0)&PAD_CROSS)
|
pad&PAD_CROSS)
|
||||||
{
|
{
|
||||||
CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__OK);
|
CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__OK);
|
||||||
s_globalLevelSelectThing=s_mapLevelData[m_currentChapterSelection][m_currentLevelSelection].m_globalLevelNumber;
|
s_globalLevelSelectThing=s_mapLevelData[m_currentChapterSelection][m_currentLevelSelection].m_globalLevelNumber;
|
||||||
|
@ -540,7 +585,12 @@ DVECTOR CMapScene::getPointerTargetPosition()
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
int CMapScene::isLevelOpen(unsigned int _chapter,unsigned int _level)
|
int CMapScene::isLevelOpen(unsigned int _chapter,unsigned int _level)
|
||||||
{
|
{
|
||||||
return true;
|
return CGameSlotManager::getSlotData()->isLevelOpen(_chapter,_level);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CMapScene::isChapterOpen(unsigned int _chapter)
|
||||||
|
{
|
||||||
|
return CGameSlotManager::getSlotData()->isLevelOpen(_chapter,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CMapScene::getSpatulaCollectedCount(unsigned int _chapter,unsigned int _level)
|
int CMapScene::getSpatulaCollectedCount(unsigned int _chapter,unsigned int _level)
|
||||||
|
@ -550,7 +600,7 @@ int CMapScene::getSpatulaCollectedCount(unsigned int _chapter,unsigned int _lev
|
||||||
|
|
||||||
int CMapScene::hasQuestItemBeenCollected(unsigned int _chapter,unsigned int _level)
|
int CMapScene::hasQuestItemBeenCollected(unsigned int _chapter,unsigned int _level)
|
||||||
{
|
{
|
||||||
return _level&1;
|
return CGameSlotManager::getSlotData()->hasQustItemBeenCollected(_chapter,_level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -91,6 +91,7 @@ private:
|
||||||
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();
|
DVECTOR getPointerTargetPosition();
|
||||||
int isLevelOpen(unsigned int _chapter,unsigned int _level);
|
int isLevelOpen(unsigned int _chapter,unsigned int _level);
|
||||||
|
int isChapterOpen(unsigned int _chapter);
|
||||||
int getSpatulaCollectedCount(unsigned int _chapter,unsigned int _level);
|
int getSpatulaCollectedCount(unsigned int _chapter,unsigned int _level);
|
||||||
int hasQuestItemBeenCollected(unsigned int _chapter,unsigned int _level);
|
int hasQuestItemBeenCollected(unsigned int _chapter,unsigned int _level);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue