Jeck - [JGE recompile needed] Shop cleanup, Interface enhancements.
Added basic transition system that works with GameApp's phases. Currently does a fade-out between elements, which works well in some places and not-so-well in others. We'll definitely want to think about where and where not to use it... they'd work a lot better if we could spawn a thread to handle loading the next state while transitioning. Also cleaned up the shop a bit, so it uses ReadButton() instead of GetButtonClick()-- hence the slight change to JGE. Added a tiled image for the task board, which loads conservatively (I tried 128x128, but it didn't look as good).
This commit is contained in:
@@ -26,9 +26,7 @@ void GameStateShop::Create(){
|
||||
void GameStateShop::Start()
|
||||
{
|
||||
menu = NULL;
|
||||
|
||||
|
||||
mStage = STAGE_SHOP_SHOP;
|
||||
mStage = STAGE_FADE_IN;
|
||||
|
||||
//alternateRender doesn't lock, so lock our thumbnails for hgeDistort.
|
||||
altThumb[0] = resources.RetrieveTexture("artifact_thumb.jpg", RETRIEVE_LOCK);
|
||||
@@ -53,7 +51,6 @@ void GameStateShop::Start()
|
||||
shop = NULL;
|
||||
taskList = NULL;
|
||||
load();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -138,7 +135,9 @@ void GameStateShop::Update(float dt)
|
||||
{
|
||||
// mParent->effect->UpdateSmall(dt);
|
||||
// mParent->effect->UpdateBig(dt);
|
||||
if (mStage == STAGE_SHOP_MENU){
|
||||
u32 btn;
|
||||
switch(mStage){
|
||||
case STAGE_SHOP_MENU:
|
||||
if (menu){
|
||||
menu->Update(dt);
|
||||
}else{
|
||||
@@ -147,16 +146,32 @@ void GameStateShop::Update(float dt)
|
||||
menu->Add(14,"See available tasks");
|
||||
menu->Add(13, "Cancel");
|
||||
}
|
||||
}else{
|
||||
if (mEngine->GetButtonClick(PSP_CTRL_START)){
|
||||
mStage = STAGE_SHOP_MENU;
|
||||
}
|
||||
if (mStage == STAGE_SHOP_TASKS){
|
||||
if ( (mEngine->GetButtonClick(PSP_CTRL_CROSS)) ||
|
||||
(mEngine->GetButtonClick(PSP_CTRL_TRIANGLE)) ) {
|
||||
mStage = STAGE_SHOP_SHOP;
|
||||
break;
|
||||
case STAGE_SHOP_TASKS:
|
||||
if(menu){
|
||||
menu->Update(dt);
|
||||
return;
|
||||
}
|
||||
if(taskList){
|
||||
btn = mEngine->ReadButton();
|
||||
taskList->Update(dt);
|
||||
if ( taskList->getState() != TaskList::TASKS_INACTIVE){
|
||||
if( btn == PSP_CTRL_CROSS || btn == PSP_CTRL_TRIANGLE ){
|
||||
taskList->End();
|
||||
return;
|
||||
}else if(taskList->getState() == TaskList::TASKS_ACTIVE && btn == PSP_CTRL_START ){
|
||||
if(!menu){
|
||||
menu = NEW SimpleMenu(11,this,Constants::MENU_FONT,SCREEN_WIDTH/2-100,20);
|
||||
menu->Add(12,"Save & Back to Main Menu");
|
||||
menu->Add(15,"Close tasks");
|
||||
menu->Add(13, "Cancel");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
mStage = STAGE_SHOP_SHOP;
|
||||
}
|
||||
|
||||
#ifdef TESTSUITE
|
||||
if ((mEngine->GetButtonClick(PSP_CTRL_SQUARE)) && (taskList)) {
|
||||
taskList->passOneDay();
|
||||
@@ -167,15 +182,25 @@ void GameStateShop::Update(float dt)
|
||||
taskList->save();
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
if (mEngine->GetButtonClick(PSP_CTRL_SQUARE)){
|
||||
break;
|
||||
case STAGE_SHOP_SHOP:
|
||||
btn = mEngine->ReadButton();
|
||||
if (btn == PSP_CTRL_START){
|
||||
mStage = STAGE_SHOP_MENU;
|
||||
return;
|
||||
}else if(btn == PSP_CTRL_SQUARE){
|
||||
load();
|
||||
}
|
||||
if (shop)
|
||||
if (shop){
|
||||
shop->CheckUserInput(btn);
|
||||
shop->Update(dt);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case STAGE_FADE_IN:
|
||||
mParent->DoAnimation(TRANSITION_FADE_IN);
|
||||
mStage = STAGE_SHOP_SHOP;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -184,43 +209,51 @@ void GameStateShop::Render()
|
||||
//Erase
|
||||
JRenderer * r = JRenderer::GetInstance();
|
||||
r->ClearScreen(ARGB(0,0,0,0));
|
||||
|
||||
if(mStage == STAGE_FADE_IN)
|
||||
return;
|
||||
|
||||
if (mBg) r->RenderQuad(mBg,0,0);
|
||||
|
||||
|
||||
if (shop)
|
||||
shop->Render();
|
||||
|
||||
if (mStage == STAGE_SHOP_TASKS) {
|
||||
if (!taskList) {
|
||||
taskList = NEW TaskList();
|
||||
}
|
||||
if (mStage == STAGE_SHOP_TASKS && taskList) {
|
||||
taskList->Render();
|
||||
}
|
||||
|
||||
if (mStage == STAGE_SHOP_MENU && menu){
|
||||
if (menu){
|
||||
menu->Render();
|
||||
}
|
||||
}
|
||||
|
||||
void GameStateShop::ButtonPressed(int controllerId, int controlId)
|
||||
{
|
||||
switch (controllerId){
|
||||
case 10:
|
||||
if (shop) shop->pricedialog(controlId);
|
||||
break;
|
||||
case 11:
|
||||
if (controlId == 12){
|
||||
if (shop) shop->saveAll();
|
||||
if (taskList) taskList->save();
|
||||
mParent->SetNextState(GAME_STATE_MENU);
|
||||
} else if (controlId == 14){
|
||||
mStage = STAGE_SHOP_TASKS;
|
||||
} else {
|
||||
mStage = STAGE_SHOP_SHOP;
|
||||
}
|
||||
break;
|
||||
if (controllerId == 10){
|
||||
if (shop)
|
||||
shop->pricedialog(controlId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
else{
|
||||
switch(controlId){
|
||||
case 12:
|
||||
if (shop) shop->saveAll();
|
||||
if (taskList) taskList->save();
|
||||
mParent->DoTransition(TRANSITION_FADE,GAME_STATE_MENU);
|
||||
mStage = STAGE_SHOP_SHOP;
|
||||
break;
|
||||
case 14:
|
||||
mStage = STAGE_SHOP_TASKS;
|
||||
if (!taskList)
|
||||
taskList = NEW TaskList();
|
||||
taskList->Start();
|
||||
break;
|
||||
case 15:
|
||||
if(taskList)
|
||||
taskList->End();
|
||||
break;
|
||||
default:
|
||||
mStage = STAGE_SHOP_SHOP;
|
||||
}
|
||||
SAFE_DELETE(menu);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user