- now show scenario logo files when user selects a scenario with a loading screen

This commit is contained in:
Mark Vejvoda 2011-03-30 22:14:51 +00:00
parent 4344a958d6
commit 438bedd4fa
5 changed files with 55 additions and 25 deletions

View File

@ -199,8 +199,8 @@ Texture2D * Game::findFactionLogoTexture(const GameSettings *settings, Logger *l
return result;
}
string Game::extractScenarioLogoFile(const GameSettings *settings, string factionLogoFilter,
string &result, Logger *logger, bool & loadingImageUsed) {
string Game::extractScenarioLogoFile(const GameSettings *settings, string &result,
bool &loadingImageUsed, Logger *logger, string factionLogoFilter) {
string scenarioDir = "";
if(settings->getScenarioDir() != "") {
scenarioDir = settings->getScenarioDir();
@ -208,6 +208,9 @@ string Game::extractScenarioLogoFile(const GameSettings *settings, string factio
scenarioDir = scenarioDir.erase(scenarioDir.size() - 4, 4);
scenarioDir = scenarioDir.erase(scenarioDir.size() - settings->getScenario().size(), settings->getScenario().size() + 1);
}
//printf("!!! extractScenarioLogoFile scenarioDir [%s] factionLogoFilter [%s]\n",scenarioDir.c_str(),factionLogoFilter.c_str());
vector<string> loadScreenList;
findAll(scenarioDir + factionLogoFilter, loadScreenList, false, false);
if(loadScreenList.size() > 0) {
@ -227,8 +230,8 @@ string Game::extractScenarioLogoFile(const GameSettings *settings, string factio
return scenarioDir;
}
string Game::extractFactionLogoFile(bool &loadingImageUsed, string factionName, Logger *logger,
string scenarioDir, string techName, string factionLogoFilter) {
string Game::extractFactionLogoFile(bool &loadingImageUsed, string factionName,
string scenarioDir, string techName, Logger *logger, string factionLogoFilter) {
string result = "";
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] Searching for faction loading screen\n",__FILE__,__FUNCTION__,__LINE__);
@ -305,7 +308,7 @@ string Game::extractFactionLogoFile(bool &loadingImageUsed, string factionName,
}
string Game::extractTechLogoFile(string scenarioDir, string techName,
string factionLogoFilter, Logger *logger, bool &loadingImageUsed) {
bool &loadingImageUsed, Logger *logger,string factionLogoFilter) {
string result = "";
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] Searching for tech loading screen\n",__FILE__,__FUNCTION__,__LINE__);
Config &config = Config::getInstance();
@ -344,16 +347,17 @@ string Game::extractTechLogoFile(string scenarioDir, string techName,
return result;
}
string Game::findFactionLogoFile(const GameSettings *settings, Logger *logger,string factionLogoFilter) {
string Game::findFactionLogoFile(const GameSettings *settings, Logger *logger,
string factionLogoFilter) {
string result = "";
if(settings == NULL) {
result = "";
}
string mapName= settings->getMap();
string tilesetName= settings->getTileset();
string techName= settings->getTech();
string scenarioName= settings->getScenario();
bool loadingImageUsed=false;
string mapName = settings->getMap();
string tilesetName = settings->getTileset();
string techName = settings->getTech();
string scenarioName = settings->getScenario();
bool loadingImageUsed = false;
if(logger != NULL) {
logger->setState(Lang::getInstance().get("Loading"));
@ -370,16 +374,17 @@ string Game::findFactionLogoFile(const GameSettings *settings, Logger *logger,st
string scenarioDir = "";
bool skipCustomLoadScreen = false;
if(skipCustomLoadScreen == false) {
scenarioDir = extractScenarioLogoFile(settings,
factionLogoFilter, result, logger, loadingImageUsed);
scenarioDir = extractScenarioLogoFile(settings, result, loadingImageUsed,
logger, factionLogoFilter);
}
// try to use a faction related loading screen
if(skipCustomLoadScreen == false && loadingImageUsed == false) {
for(int i=0; i < settings->getFactionCount(); ++i ) {
if( settings->getFactionControl(i) == ctHuman ||
(settings->getFactionControl(i) == ctNetwork && settings->getThisFactionIndex() == i)) {
result = extractFactionLogoFile(loadingImageUsed, settings->getFactionTypeName(i),
logger,scenarioDir, techName, factionLogoFilter);
scenarioDir, techName, logger, factionLogoFilter);
break;
}
}
@ -388,7 +393,7 @@ string Game::findFactionLogoFile(const GameSettings *settings, Logger *logger,st
// try to use a tech related loading screen
if(skipCustomLoadScreen == false && loadingImageUsed == false){
result = extractTechLogoFile(scenarioDir, techName,
factionLogoFilter, logger, loadingImageUsed);
loadingImageUsed, logger, factionLogoFilter);
}
return result;
@ -416,24 +421,23 @@ vector<Texture2D *> Game::processTech(string techName) {
factionLogo = Game::extractFactionLogoFile(
loadingImageUsed,
currentFactionName_factionPreview,
NULL,
"",
techName,
NULL,
"preview_screen.*");
if(factionLogo == "") {
factionLogo = Game::extractFactionLogoFile(
loadingImageUsed,
currentFactionName_factionPreview,
NULL,
"",
techName,
NULL,
"loading_screen.*");
}
if(factionLogo != "") {
Texture2D *texture = Renderer::preloadTexture(factionLogo);
logoFiles.push_back(texture);
// Renderer::findFactionLogoTexture(factionLogo);
}
}
}

View File

@ -170,11 +170,11 @@ public:
void endPerformanceTimer();
Vec2i getPerformanceTimerResults();
static Texture2D * findFactionLogoTexture(const GameSettings *settings, Logger *logger,string factionLogoFilter="loading_screen.*", bool useTechDefaultIfFilterNotFound=true);
static string findFactionLogoFile(const GameSettings *settings, Logger *logger, string factionLogoFilter="loading_screen.*");
static string extractScenarioLogoFile(const GameSettings *settings, string factionLogoFilter,string &result, Logger *logger, bool &loadingImageUsed);
static string extractFactionLogoFile(bool &loadingImageUsed, string factionName, Logger *logger,string scenarioDir, string techName, string factionLogoFilter);
static string extractTechLogoFile(string scenarioDir, string techName,string factionLogoFilter, Logger *logger, bool &loadingImageUsed);
static Texture2D * findFactionLogoTexture(const GameSettings *settings, Logger *logger=NULL,string factionLogoFilter="loading_screen.*", bool useTechDefaultIfFilterNotFound=true);
static string findFactionLogoFile(const GameSettings *settings, Logger *logger=NULL, string factionLogoFilter="loading_screen.*");
static string extractScenarioLogoFile(const GameSettings *settings, string &result, bool &loadingImageUsed, Logger *logger=NULL, string factionLogoFilter="loading_screen.*");
static string extractFactionLogoFile(bool &loadingImageUsed, string factionName, string scenarioDir, string techName, Logger *logger=NULL, string factionLogoFilter="loading_screen.*");
static string extractTechLogoFile(string scenarioDir, string techName, bool &loadingImageUsed, Logger *logger=NULL,string factionLogoFilter="loading_screen.*");
bool getGameOver() { return gameOver; }

View File

@ -1821,7 +1821,6 @@ void MenuStateCustomGame::update() {
if(SystemFlags::getSystemSettingType(SystemFlags::debugPerformance).enabled && chrono.getMillis() > 0) chrono.start();
if(enableFactionTexturePreview == true) {
if( currentTechName_factionPreview != gameSettings.getTech() ||
currentFactionName_factionPreview != gameSettings.getFactionTypeName(gameSettings.getThisFactionIndex())) {

View File

@ -35,6 +35,9 @@ MenuStateScenario::MenuStateScenario(Program *program, MainMenu *mainMenu, const
MenuState(program, mainMenu, "scenario")
{
containerName = "Scenario";
enableScenarioTexturePreview=false;
scenarioLogoTexture=NULL;
Lang &lang= Lang::getInstance();
NetworkManager &networkManager= NetworkManager::getInstance();
@ -156,6 +159,10 @@ void MenuStateScenario::render(){
Renderer &renderer= Renderer::getInstance();
if(scenarioLogoTexture != NULL) {
renderer.renderBackground(scenarioLogoTexture);
}
if(mainMessageBox.getEnabled()){
renderer.renderMessageBox(&mainMessageBox);
}
@ -206,7 +213,6 @@ void MenuStateScenario::setScenario(int i){
}
void MenuStateScenario::loadScenarioInfo(string file, ScenarioInfo *scenarioInfo){
Lang &lang= Lang::getInstance();
XmlTree xmlTree;
@ -308,6 +314,24 @@ void MenuStateScenario::loadScenarioInfo(string file, ScenarioInfo *scenarioInfo
else {
scenarioInfo->fogOfWar = true;
}
enableScenarioTexturePreview = true;
if(enableScenarioTexturePreview == true) {
GameSettings gameSettings;
loadGameSettings(scenarioInfo, &gameSettings);
string scenarioLogo = "";
bool loadingImageUsed = false;
Game::extractScenarioLogoFile(&gameSettings, scenarioLogo, loadingImageUsed);
if(scenarioLogo != "") {
scenarioLogoTexture = Renderer::findFactionLogoTexture(scenarioLogo);
}
else {
scenarioLogoTexture = NULL;
}
}
}
void MenuStateScenario::loadGameSettings(const ScenarioInfo *scenarioInfo, GameSettings *gameSettings){

View File

@ -49,6 +49,9 @@ private:
string autoloadScenarioName;
bool enableScenarioTexturePreview;
Texture2D *scenarioLogoTexture;
public:
MenuStateScenario(Program *program, MainMenu *mainMenu, const vector<string> &dirList, string autoloadScenarioName="");