- updated load game screen and added some missing language text

This commit is contained in:
Mark Vejvoda 2012-03-17 03:32:20 +00:00
parent 7f46cf2749
commit 5584121aa7
3 changed files with 98 additions and 35 deletions

View File

@ -3643,10 +3643,11 @@ void Game::loadGame(string name,Program *programPtr,bool isMasterserverMode) {
//const XmlNode *versionNode= rootNode->getChild("megaglest-saved-game");
const XmlNode *versionNode= rootNode;
Lang &lang= Lang::getInstance();
string gameVer = versionNode->getAttribute("version")->getValue();
if(gameVer != glestVersionString) {
char szBuf[4096]="";
sprintf(szBuf,"saved game version does match your application version: [%s] --> [%s]",gameVer.c_str(),glestVersionString.c_str());
sprintf(szBuf,lang.get("SavedGameBadVersion").c_str(),gameVer.c_str(),glestVersionString.c_str());
throw runtime_error(szBuf);
}

View File

@ -97,7 +97,8 @@ MenuStateLoadGame::MenuStateLoadGame(Program *program, MainMenu *mainMenu):
infoTextLabel.init(550, 350);
// infoTextLabel.setFont(CoreData::getInstance().getMenuFontBig());
// infoTextLabel.setFont3D(CoreData::getInstance().getMenuFontBig3D());
infoTextLabel.setText("Info block for the current slot, maybe screenshot above \ntest\ntest2");
//infoTextLabel.setText("Info block for the current slot, maybe screenshot above \ntest\ntest2");
infoTextLabel.setText("");
abortButton.registerGraphicComponent(containerName,"abortButton");
abortButton.init(xPos, yPos, buttonWidth);
@ -117,10 +118,9 @@ MenuStateLoadGame::MenuStateLoadGame(Program *program, MainMenu *mainMenu):
slotsScrollBar.setVisibleSize(slotsToRender);
slotsScrollBar.setVisibleStart(0);
listFiles(20,slotLinesYBase,460,slotsLineHeight);
listFiles();
slotsScrollBar.setElementCount(filenames.size());
GraphicComponent::applyAllCustomProperties(containerName);
}
@ -137,6 +137,7 @@ MenuStateLoadGame::~MenuStateLoadGame() {
delete previewTexture;
previewTexture=NULL;
}
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] END\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
}
@ -148,7 +149,13 @@ void MenuStateLoadGame::clearSlots() {
}
}
void MenuStateLoadGame::listFiles(int keyButtonsXBase, int keyButtonsYBase, int keyButtonsWidth, int keyButtonsHeight) {
void MenuStateLoadGame::listFiles() {
int keyButtonsXBase = 20;
int keyButtonsYBase = slotLinesYBase;
int keyButtonsWidth = 460;
int keyButtonsHeight = slotsLineHeight;
clearSlots();
// Save the file now
vector<string> paths;
paths.push_back(saveGameDir);
@ -183,43 +190,53 @@ void MenuStateLoadGame::mouseClick(int x, int y, MouseButton mouseButton){
CoreData &coreData= CoreData::getInstance();
SoundRenderer &soundRenderer= SoundRenderer::getInstance();
if(abortButton.mouseClick(x, y)){
if(abortButton.mouseClick(x, y)) {
soundRenderer.playFx(coreData.getClickSoundB());
mainMenu->setState(new MenuStateRoot(program, mainMenu));
}
else if(deleteButton.mouseClick(x, y)){
else if(deleteButton.mouseClick(x, y)) {
soundRenderer.playFx(coreData.getClickSoundB());
if(selectedButton==NULL)
{
if(selectedButton == NULL) {
Lang &lang= Lang::getInstance();
console.addStdMessage(lang.get("NothingSelected"));
console.addStdMessage("NothingSelected");
}
else
{
string slotname=selectedButton->getText();
string filename=saveGameDir+selectedButton->getText()+".xml";
string jpgfilename=saveGameDir+selectedButton->getText()+".xml.jpg";
console.addStdMessage("Trying to delete file: '"+filename+"'");
for(int i=0;i<slots.size();i++){
if(slots[i]==selectedButton){
else {
string slotname = selectedButton->getText();
string filename = saveGameDir + selectedButton->getText() + ".xml";
string jpgfilename = saveGameDir + selectedButton->getText() + ".xml.jpg";
Lang &lang= Lang::getInstance();
char szBuf[8096]="";
sprintf(szBuf,lang.get("LoadGameDeletingFile","",true).c_str(),filename.c_str());
console.addLine(szBuf);
for(int i = 0; i < slots.size(); i++) {
if(slots[i] == selectedButton) {
//deleteSlot(i);
if(removeFile(filename) == true) {
listFiles();
slotsScrollBar.setElementCount(filenames.size());
}
break;
}
}
}
//mainMenu->setState(new MenuStateRoot(program, mainMenu));
}
else if(loadButton.mouseClick(x, y)){
else if(loadButton.mouseClick(x, y)) {
soundRenderer.playFx(coreData.getClickSoundB());
if(selectedButton==NULL)
{
if(selectedButton == NULL) {
Lang &lang= Lang::getInstance();
console.addStdMessage(lang.get("NothingSelected"));
console.addStdMessage("NothingSelected");
}
else
{
string filename=saveGameDir+selectedButton->getText()+".xml";
console.addStdMessage("Trying to load file: '"+filename+"'");
else {
string filename = saveGameDir + selectedButton->getText() + ".xml";
Lang &lang= Lang::getInstance();
char szBuf[8096]="";
sprintf(szBuf,lang.get("LoadGameLoadingFile","",true).c_str(),filename.c_str());
console.addLine(szBuf);
Game::loadGame(filename,program,false);
return;
@ -232,22 +249,67 @@ void MenuStateLoadGame::mouseClick(int x, int y, MouseButton mouseButton){
else {
if(slotsScrollBar.getElementCount()!=0){
for(int i = slotsScrollBar.getVisibleStart(); i <= slotsScrollBar.getVisibleEnd(); ++i) {
if(slots[i]->mouseClick(x, y) && selectedButton!=slots[i]) {
needsToBeFreedTexture=previewTexture;
selectedButton=slots[i];
string filename=saveGameDir+selectedButton->getText()+".xml.jpg";
if(fileExists(filename)){
if(slots[i]->mouseClick(x, y) && selectedButton != slots[i]) {
needsToBeFreedTexture = previewTexture;
selectedButton = slots[i];
string filename = saveGameDir + selectedButton->getText()+".xml";
string screenShotFilename = filename + ".jpg";
if(fileExists(screenShotFilename)) {
previewTexture = GraphicsInterface::getInstance().getFactory()->newTexture2D();
if(previewTexture) {
previewTexture->setMipmap(true);
previewTexture->load(filename);
previewTexture->load(screenShotFilename);
previewTexture->init();
}
}
else
{
else {
previewTexture=NULL;
}
if(fileExists(filename)) {
Lang &lang= Lang::getInstance();
XmlTree xmlTree(XML_RAPIDXML_ENGINE);
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("Before load of XML\n");
std::map<string,string> mapExtraTagReplacementValues;
xmlTree.load(filename, Properties::getTagReplacementValues(&mapExtraTagReplacementValues),true);
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("After load of XML\n");
const XmlNode *rootNode= xmlTree.getRootNode();
if(rootNode->hasChild("megaglest-saved-game") == true) {
rootNode = rootNode->getChild("megaglest-saved-game");
}
const XmlNode *versionNode= rootNode;
string gameVer = versionNode->getAttribute("version")->getValue();
if(gameVer != glestVersionString) {
char szBuf[4096]="";
sprintf(szBuf,lang.get("SavedGameBadVersion").c_str(),gameVer.c_str(),glestVersionString.c_str());
infoTextLabel.setText(szBuf);
}
else {
XmlNode *gameNode = rootNode->getChild("Game");
GameSettings newGameSettings;
newGameSettings.loadGame(gameNode);
//LoadSavedGameInfo=Map: %s\nTileset: %s\nTech: %s\nScenario: %s\n# players: %d\nFaction: %s
char szBuf[4096]="";
sprintf(szBuf,lang.get("LoadSavedGameInfo").c_str(),
newGameSettings.getMap().c_str(),
newGameSettings.getTileset().c_str(),
newGameSettings.getTech().c_str(),
newGameSettings.getScenario().c_str(),
newGameSettings.getFactionCount(),
(newGameSettings.getThisFactionIndex() >= 0 &&
newGameSettings.getThisFactionIndex() < newGameSettings.getFactionCount() ?
newGameSettings.getFactionTypeName(newGameSettings.getThisFactionIndex()).c_str() : ""));
infoTextLabel.setText(szBuf);
}
}
else {
infoTextLabel.setText("");
}
break;
}
}

View File

@ -63,7 +63,7 @@ public:
private:
void clearSlots();
void deleteSlot(int i);
void listFiles(int keyButtonsXBase, int keyButtonsYBase, int keyButtonsWidth, int keyButtonsHeight);
void listFiles();
};