209 lines
6.2 KiB
C++
209 lines
6.2 KiB
C++
#include "../include/config.h"
|
|
#include "../include/GameStateOptions.h"
|
|
#include "../include/GameApp.h"
|
|
#include "../include/OptionItem.h"
|
|
#include "../include/SimpleMenu.h"
|
|
#include "../include/SimplePad.h"
|
|
#include "../include/GameOptions.h"
|
|
#include "../include/Translate.h"
|
|
|
|
GameStateOptions::GameStateOptions(GameApp* parent): GameState(parent) {
|
|
optionsTabs = NULL;
|
|
optionsMenu = NULL;
|
|
mReload = false;
|
|
}
|
|
|
|
|
|
GameStateOptions::~GameStateOptions() {
|
|
|
|
}
|
|
|
|
void GameStateOptions::Start()
|
|
{
|
|
newProfile = "";
|
|
timer = 0;
|
|
mState = SHOW_OPTIONS;
|
|
JRenderer::GetInstance()->EnableVSync(true);
|
|
|
|
WGuiList * optionsList;
|
|
|
|
optionsList = NEW WGuiList("Settings");
|
|
|
|
optionsList->Add(NEW WGuiHeader("General Options"));
|
|
if (GameApp::HasMusic)
|
|
optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::MUSICVOLUME,"Music volume",100,10,100),OptionVolume::getInstance()));
|
|
optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::SFXVOLUME,"SFX volume",100,10,100),OptionVolume::getInstance()));
|
|
optionsList->Add(NEW OptionInteger(Options::OSD, "Display InGame extra information"));
|
|
if (options[Options::DIFFICULTY_MODE_UNLOCKED].number)
|
|
optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::DIFFICULTY,"Difficulty",3,1,0),OptionDifficulty::getInstance()));
|
|
optionsList->Add(NEW OptionInteger(Options::INTERRUPT_SECONDS, "Seconds to pause for an Interrupt", 20, 1));
|
|
optionsList->Add(NEW OptionInteger(Options::INTERRUPTMYSPELLS, "Interrupt my spells"));
|
|
optionsList->Add(NEW OptionInteger(Options::INTERRUPTMYABILITIES, "Interrupt my abilities"));
|
|
optionsTabs = NEW WGuiTabMenu();
|
|
optionsTabs->Add(optionsList);
|
|
|
|
optionsList = NEW WGuiList("Game");
|
|
optionsList->Add(NEW WGuiHeader("Interface Options"));
|
|
optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::CLOSEDHAND,"Closed hand",1,1,0)));
|
|
optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::HANDDIRECTION,"Hand direction",1,1,0)));
|
|
optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::MANADISPLAY,"Mana display",2,1,0)));
|
|
optionsList->Add(NEW OptionInteger(Options::REVERSETRIGGERS, "Reverse left and right triggers"));
|
|
optionsList->Add(NEW OptionInteger(Options::DISABLECARDS,"Disable card image loading"));
|
|
optionsTabs->Add(optionsList);
|
|
|
|
optionsList = NEW WGuiList("User");
|
|
optionsList->Add(NEW WGuiHeader("User Options"));
|
|
|
|
WDecoConfirm * cPrf = NEW WDecoConfirm(this,NEW OptionProfile(mParent,this));
|
|
cPrf->confirm = "Use this Profile";
|
|
OptionDirectory * od = NEW OptionTheme();
|
|
WDecoConfirm * cThm = NEW WDecoConfirm(this,od);
|
|
cThm->confirm = "Use this Theme";
|
|
|
|
optionsList->Add(NEW WGuiSplit(cPrf,cThm));
|
|
optionsList->Add(NEW WGuiButton(NEW WGuiHeader("New Profile"),-102,4,this));
|
|
optionsTabs->Add(optionsList);
|
|
|
|
optionsList = NEW WGuiList("Credits");
|
|
optionsList->failMsg = "";
|
|
optionsTabs->Add(optionsList);
|
|
|
|
JLBFont * mFont = resources.GetJLBFont("f3");
|
|
optionsMenu = NEW SimpleMenu(-102, this,mFont, 50,170);
|
|
optionsMenu->Add(1, "Save & Back to Main Menu");
|
|
optionsMenu->Add(2, "Back to Main Menu");
|
|
optionsMenu->Add(3, "Cancel");
|
|
|
|
optionsTabs->Current()->Entering(0);
|
|
}
|
|
|
|
|
|
void GameStateOptions::End()
|
|
{
|
|
JRenderer::GetInstance()->EnableVSync(false);
|
|
SAFE_DELETE(optionsTabs);
|
|
SAFE_DELETE(optionsMenu);
|
|
}
|
|
|
|
|
|
void GameStateOptions::Update(float dt)
|
|
{
|
|
timer += dt;
|
|
|
|
if(options.keypadActive()){
|
|
options.keypadUpdate(dt);
|
|
|
|
if(newProfile != ""){
|
|
newProfile = options.keypadFinish();
|
|
if(newProfile != ""){
|
|
options[Options::ACTIVE_PROFILE] = newProfile;
|
|
options.reloadProfile(false);
|
|
optionsTabs->Reload();
|
|
}
|
|
newProfile = "";
|
|
}
|
|
}
|
|
else switch(mState){
|
|
default:
|
|
case SHOW_OPTIONS:
|
|
optionsTabs->Update(dt);
|
|
|
|
if (mEngine->ReadButton() == PSP_CTRL_START){
|
|
mState = SHOW_OPTIONS_MENU;
|
|
}
|
|
break;
|
|
case SHOW_OPTIONS_MENU:
|
|
optionsMenu->Update(dt);
|
|
break;
|
|
}
|
|
if(mReload){
|
|
options.reloadProfile(true);
|
|
optionsTabs->Reload();
|
|
mReload = false;
|
|
}
|
|
}
|
|
|
|
void GameStateOptions::Render()
|
|
{
|
|
//Erase
|
|
JRenderer::GetInstance()->ClearScreen(ARGB(0,0,0,0));
|
|
|
|
const char * const CreditsText[] = {
|
|
"Wagic, The Homebrew?! by Wololo",
|
|
"",
|
|
"updates, new cards, and more on http://wololo.net/wagic",
|
|
"Many thanks to the people who help this project",
|
|
"",
|
|
"",
|
|
"Art: Julio, Jeck, J",
|
|
"",
|
|
"Dev Team: Abrasax, Daddy32, Dr.Solomat, J,",
|
|
"Jeck, Leungclj, Superhiro, Psyringe, Wololo",
|
|
"",
|
|
"Thanks to everyone who contributes code/content on the forums!",
|
|
"",
|
|
"Developed with the JGE++ Library (http://jge.khors.com)",
|
|
"Player's avatar from http://mathieuchoinet.blogspot.com, under CC License",
|
|
"Background picture and some art from the KDE project, www.kde.org",
|
|
"SFX From www.soundsnap.com",
|
|
"",
|
|
"Music by Celestial Aeon Project, http://www.jamendo.com",
|
|
"",
|
|
"",
|
|
"This work is not related to or endorsed by Wizards of the Coast, Inc",
|
|
"",
|
|
"Please support this project with donations at http://wololo.net/wagic",
|
|
};
|
|
|
|
JLBFont * mFont = resources.GetJLBFont("magic");
|
|
mFont->SetColor(ARGB(255,200,200,200));
|
|
mFont->SetScale(1.0);
|
|
float startpos = 272 - timer * 10;
|
|
float pos = startpos;
|
|
int size = sizeof(CreditsText) / sizeof(CreditsText[0]);
|
|
|
|
for (int i = 0; i < size; i++){
|
|
pos = startpos +20*i;
|
|
if (pos > -20){
|
|
mFont->DrawString(_(CreditsText[i]).c_str(),SCREEN_WIDTH/2,pos ,JGETEXT_CENTER);
|
|
}
|
|
}
|
|
|
|
if (pos < -20)
|
|
timer = 0;
|
|
|
|
mFont->SetScale(1.f);
|
|
|
|
optionsTabs->Render();
|
|
|
|
if(mState == SHOW_OPTIONS_MENU)
|
|
optionsMenu->Render();
|
|
|
|
if(options.keypadActive())
|
|
options.keypadRender();
|
|
}
|
|
|
|
void GameStateOptions::ButtonPressed(int controllerId, int controlId)
|
|
{
|
|
//Exit menu?
|
|
if(controllerId == -102)
|
|
switch (controlId){
|
|
case 1:
|
|
optionsTabs->save();
|
|
case 2:
|
|
mParent->SetNextState(GAME_STATE_MENU);
|
|
break;
|
|
case 3:
|
|
mState = SHOW_OPTIONS;
|
|
break;
|
|
case 4:
|
|
options.keypadStart("",&newProfile);
|
|
options.keypadTitle("New Profile");
|
|
break;
|
|
case 5:
|
|
mReload = true;
|
|
break;
|
|
}
|
|
else
|
|
optionsTabs->ButtonPressed(controllerId, controlId);
|
|
}; |