mirror of
https://github.com/glest/glest-source.git
synced 2025-08-14 12:23:59 +02:00
fonts
options menu ingame resolution change ( game restart needed ) everything not really poolished yet!
This commit is contained in:
@@ -29,7 +29,10 @@ FogOfWarSmoothing=true
|
|||||||
FogOfWarSmoothingFrameSkip=3
|
FogOfWarSmoothingFrameSkip=3
|
||||||
FontConsole=-*-*-*-*-*-*-12-*-*-*-*-*-*-*
|
FontConsole=-*-*-*-*-*-*-12-*-*-*-*-*-*-*
|
||||||
FontDisplay=-*-*-*-*-*-*-12-*-*-*-*-*-*-*
|
FontDisplay=-*-*-*-*-*-*-12-*-*-*-*-*-*-*
|
||||||
FontMenu=-*-*-*-*-*-*-12-*-*-*-*-*-*-*
|
FontMenuBig=-*-*-bold-*-*-*-16-*-*-*-*-*-*-*
|
||||||
|
FontMenuNormal=-*-*-*-*-*-*-12-*-*-*-*-*-*-*
|
||||||
|
FontMenuSmall=-*-*-*-*-*-*-10-*-*-*-*-*-*-*
|
||||||
|
FontMenuVeryBig=-*-*-bold-*-*-*-20-*-*-*-*-*-*-*
|
||||||
Lang=english
|
Lang=english
|
||||||
MaxLights=3
|
MaxLights=3
|
||||||
NetPlayerName=SoftCoder
|
NetPlayerName=SoftCoder
|
||||||
|
147
source/glest_game/global/core_data.cpp
Normal file
147
source/glest_game/global/core_data.cpp
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
// ==============================================================
|
||||||
|
// This file is part of Glest (www.glest.org)
|
||||||
|
//
|
||||||
|
// Copyright (C) 2001-2008 Marti<74>o Figueroa
|
||||||
|
//
|
||||||
|
// You can redistribute this code and/or modify it under
|
||||||
|
// the terms of the GNU General Public License as published
|
||||||
|
// by the Free Software Foundation; either version 2 of the
|
||||||
|
// License, or (at your option) any later version
|
||||||
|
// ==============================================================
|
||||||
|
|
||||||
|
#include "core_data.h"
|
||||||
|
|
||||||
|
#include "logger.h"
|
||||||
|
#include "renderer.h"
|
||||||
|
#include "graphics_interface.h"
|
||||||
|
#include "config.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include "leak_dumper.h"
|
||||||
|
|
||||||
|
using namespace Shared::Sound;
|
||||||
|
using namespace Shared::Graphics;
|
||||||
|
using namespace Shared::Util;
|
||||||
|
|
||||||
|
namespace Glest{ namespace Game{
|
||||||
|
|
||||||
|
// =====================================================
|
||||||
|
// class CoreData
|
||||||
|
// =====================================================
|
||||||
|
|
||||||
|
// ===================== PUBLIC ========================
|
||||||
|
|
||||||
|
CoreData &CoreData::getInstance(){
|
||||||
|
static CoreData coreData;
|
||||||
|
return coreData;
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreData::~CoreData(){
|
||||||
|
deleteValues(waterSounds.getSounds().begin(), waterSounds.getSounds().end());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CoreData::load(){
|
||||||
|
const string dir="data/core";
|
||||||
|
Logger::getInstance().add("Core data");
|
||||||
|
|
||||||
|
Renderer &renderer= Renderer::getInstance();
|
||||||
|
|
||||||
|
//textures
|
||||||
|
backgroundTexture= renderer.newTexture2D(rsGlobal);
|
||||||
|
backgroundTexture->setMipmap(false);
|
||||||
|
backgroundTexture->getPixmap()->load(dir+"/menu/textures/back.tga");
|
||||||
|
|
||||||
|
fireTexture= renderer.newTexture2D(rsGlobal);
|
||||||
|
fireTexture->setFormat(Texture::fAlpha);
|
||||||
|
fireTexture->getPixmap()->init(1);
|
||||||
|
fireTexture->getPixmap()->load(dir+"/misc_textures/fire_particle.tga");
|
||||||
|
|
||||||
|
snowTexture= renderer.newTexture2D(rsGlobal);
|
||||||
|
snowTexture->setMipmap(false);
|
||||||
|
snowTexture->setFormat(Texture::fAlpha);
|
||||||
|
snowTexture->getPixmap()->init(1);
|
||||||
|
snowTexture->getPixmap()->load(dir+"/misc_textures/snow_particle.tga");
|
||||||
|
|
||||||
|
customTexture= renderer.newTexture2D(rsGlobal);
|
||||||
|
customTexture->getPixmap()->load("data/core/menu/textures/custom_texture.tga");
|
||||||
|
|
||||||
|
logoTexture= renderer.newTexture2D(rsGlobal);
|
||||||
|
logoTexture->setMipmap(false);
|
||||||
|
logoTexture->getPixmap()->load(dir+"/menu/textures/logo.tga");
|
||||||
|
|
||||||
|
waterSplashTexture= renderer.newTexture2D(rsGlobal);
|
||||||
|
waterSplashTexture->setFormat(Texture::fAlpha);
|
||||||
|
waterSplashTexture->getPixmap()->init(1);
|
||||||
|
waterSplashTexture->getPixmap()->load(dir+"/misc_textures/water_splash.tga");
|
||||||
|
|
||||||
|
buttonSmallTexture= renderer.newTexture2D(rsGlobal);
|
||||||
|
buttonSmallTexture->getPixmap()->load(dir+"/menu/textures/button_small.tga");
|
||||||
|
|
||||||
|
buttonBigTexture= renderer.newTexture2D(rsGlobal);
|
||||||
|
buttonBigTexture->getPixmap()->load(dir+"/menu/textures/button_big.tga");
|
||||||
|
|
||||||
|
//display font
|
||||||
|
Config &config= Config::getInstance();
|
||||||
|
string displayFontName= config.getString("FontDisplay");
|
||||||
|
|
||||||
|
displayFont= renderer.newFont(rsGlobal);
|
||||||
|
displayFont->setType(displayFontName);
|
||||||
|
displayFont->setSize(computeFontSize(15));
|
||||||
|
|
||||||
|
//menu fonts
|
||||||
|
string menuFontNameSmall= config.getString("FontMenuSmall");
|
||||||
|
|
||||||
|
menuFontSmall= renderer.newFont(rsGlobal);
|
||||||
|
menuFontSmall->setType(menuFontNameSmall);
|
||||||
|
menuFontSmall->setSize(computeFontSize(10));
|
||||||
|
|
||||||
|
string menuFontNameNormal= config.getString("FontMenuNormal");
|
||||||
|
menuFontNormal= renderer.newFont(rsGlobal);
|
||||||
|
menuFontNormal->setType(menuFontNameNormal);
|
||||||
|
menuFontNormal->setSize(computeFontSize(12));
|
||||||
|
menuFontNormal->setWidth(Font::wBold);
|
||||||
|
|
||||||
|
string menuFontNameBig= config.getString("FontMenuBig");
|
||||||
|
menuFontBig= renderer.newFont(rsGlobal);
|
||||||
|
menuFontBig->setType(menuFontNameBig);
|
||||||
|
menuFontBig->setSize(computeFontSize(16));
|
||||||
|
|
||||||
|
string menuFontNameVeryBig= config.getString("FontMenuVeryBig");
|
||||||
|
menuFontVeryBig= renderer.newFont(rsGlobal);
|
||||||
|
menuFontVeryBig->setType(menuFontNameVeryBig);
|
||||||
|
menuFontVeryBig->setSize(computeFontSize(20));
|
||||||
|
|
||||||
|
//console font
|
||||||
|
string consoleFontName= Config::getInstance().getString("FontConsole");
|
||||||
|
|
||||||
|
consoleFont= renderer.newFont(rsGlobal);
|
||||||
|
consoleFont->setType(consoleFontName);
|
||||||
|
consoleFont->setSize(computeFontSize(16));
|
||||||
|
|
||||||
|
//sounds
|
||||||
|
clickSoundA.load(dir+"/menu/sound/click_a.wav");
|
||||||
|
clickSoundB.load(dir+"/menu/sound/click_b.wav");
|
||||||
|
clickSoundC.load(dir+"/menu/sound/click_c.wav");
|
||||||
|
introMusic.open(dir+"/menu/music/intro_music.ogg");
|
||||||
|
introMusic.setNext(&menuMusic);
|
||||||
|
menuMusic.open(dir+"/menu/music/menu_music.ogg");
|
||||||
|
menuMusic.setNext(&menuMusic);
|
||||||
|
waterSounds.resize(6);
|
||||||
|
for(int i=0; i<6; ++i){
|
||||||
|
waterSounds[i]= new StaticSound();
|
||||||
|
waterSounds[i]->load(dir+"/water_sounds/water"+intToStr(i)+".wav");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int CoreData::computeFontSize(int size){
|
||||||
|
int screenH= Config::getInstance().getInt("ScreenHeight");
|
||||||
|
int rs= size*screenH/750;
|
||||||
|
if(rs<12){
|
||||||
|
rs= 12;
|
||||||
|
}
|
||||||
|
return rs;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ================== PRIVATE ========================
|
||||||
|
|
||||||
|
}}//end namespace
|
@@ -1,7 +1,7 @@
|
|||||||
// ==============================================================
|
// ==============================================================
|
||||||
// This file is part of Glest (www.glest.org)
|
// This file is part of Glest (www.glest.org)
|
||||||
//
|
//
|
||||||
// Copyright (C) 2001-2008 Marti<74>o Figueroa
|
// Copyright (C) 2001-2008 Marti<74>o Figueroa
|
||||||
//
|
//
|
||||||
// You can redistribute this code and/or modify it under
|
// You can redistribute this code and/or modify it under
|
||||||
// the terms of the GNU General Public License as published
|
// the terms of the GNU General Public License as published
|
||||||
@@ -58,7 +58,7 @@ void BattleEnd::render(){
|
|||||||
renderer.reset2d();
|
renderer.reset2d();
|
||||||
renderer.renderBackground(CoreData::getInstance().getBackgroundTexture());
|
renderer.renderBackground(CoreData::getInstance().getBackgroundTexture());
|
||||||
|
|
||||||
textRenderer->begin(CoreData::getInstance().getMenuFontBig());
|
textRenderer->begin(CoreData::getInstance().getMenuFontNormal());
|
||||||
|
|
||||||
int lm= 20;
|
int lm= 20;
|
||||||
int bm= 100;
|
int bm= 100;
|
||||||
|
@@ -33,101 +33,43 @@ MenuStateOptions::MenuStateOptions(Program *program, MainMenu *mainMenu):
|
|||||||
{
|
{
|
||||||
Lang &lang= Lang::getInstance();
|
Lang &lang= Lang::getInstance();
|
||||||
Config &config= Config::getInstance();
|
Config &config= Config::getInstance();
|
||||||
|
//modeinfos=list<ModeInfo> ();
|
||||||
|
Shared::Platform::getFullscreenVideoModes(&modeInfos);
|
||||||
activeInputLabel=NULL;
|
activeInputLabel=NULL;
|
||||||
|
|
||||||
//create
|
int leftline=640;
|
||||||
buttonOk.init(200, 150, 100);
|
int rightline=640;
|
||||||
buttonAbort.init(310, 150, 100);
|
int leftLabelStart=50;
|
||||||
buttonAutoConfig.init(450, 150, 125);
|
int leftColumnStart=leftLabelStart+150;
|
||||||
|
int rightLabelStart=500;
|
||||||
|
int rightColumnStart=rightLabelStart+150;
|
||||||
|
int buttonRowPos=20;
|
||||||
|
int captionOffset=75;
|
||||||
|
|
||||||
//labels
|
|
||||||
labelVolumeFx.init(200, 530);
|
|
||||||
labelVolumeAmbient.init(200, 500);
|
|
||||||
labelVolumeMusic.init(200, 470);
|
|
||||||
|
|
||||||
labelLang.init(200, 400);
|
|
||||||
labelPlayerNameLabel.init(200,370);
|
|
||||||
labelPlayerName.init(350,370);
|
|
||||||
|
|
||||||
labelFilter.init(200, 340);
|
leftline-=30;
|
||||||
labelShadows.init(200, 310);
|
labelAudioSection.init(leftLabelStart+captionOffset, leftline);
|
||||||
labelTextures3D.init(200, 280);
|
labelAudioSection.setFont(CoreData::getInstance().getMenuFontVeryBig());
|
||||||
labelLights.init(200, 250);
|
labelAudioSection.setText(lang.get("Audio"));
|
||||||
labelUnitParticles.init(200,220);
|
leftline-=30;
|
||||||
|
|
||||||
//list boxes
|
//soundboxes
|
||||||
listBoxVolumeFx.init(350, 530, 80);
|
labelVolumeFx.init(leftLabelStart, leftline);
|
||||||
listBoxVolumeAmbient.init(350, 500, 80);
|
|
||||||
listBoxVolumeMusic.init(350, 470, 80);
|
|
||||||
listBoxMusicSelect.init(350, 440, 150);
|
|
||||||
|
|
||||||
listBoxLang.init(350, 400, 170);
|
|
||||||
|
|
||||||
listBoxFilter.init(350, 340, 170);
|
|
||||||
listBoxShadows.init(350, 310, 170);
|
|
||||||
listBoxTextures3D.init(350, 280, 80);
|
|
||||||
listBoxLights.init(350, 250, 80);
|
|
||||||
listBoxUnitParticles.init(350,220,80);
|
|
||||||
|
|
||||||
//set text
|
|
||||||
buttonOk.setText(lang.get("Ok"));
|
|
||||||
buttonAbort.setText(lang.get("Abort"));
|
|
||||||
buttonAutoConfig.setText(lang.get("AutoConfig"));
|
|
||||||
labelLang.setText(lang.get("Language"));
|
|
||||||
labelPlayerNameLabel.setText(lang.get("Playername"));
|
|
||||||
labelShadows.setText(lang.get("Shadows"));
|
|
||||||
labelFilter.setText(lang.get("Filter"));
|
|
||||||
labelTextures3D.setText(lang.get("Textures3D"));
|
|
||||||
labelLights.setText(lang.get("MaxLights"));
|
|
||||||
labelUnitParticles.setText(lang.get("ShowUnitParticles"));
|
|
||||||
labelVolumeFx.setText(lang.get("FxVolume"));
|
labelVolumeFx.setText(lang.get("FxVolume"));
|
||||||
|
listBoxVolumeFx.init(leftColumnStart, leftline, 80);
|
||||||
|
leftline-=30;
|
||||||
|
|
||||||
|
labelVolumeAmbient.init(leftLabelStart, leftline);
|
||||||
|
listBoxVolumeAmbient.init(leftColumnStart, leftline, 80);
|
||||||
labelVolumeAmbient.setText(lang.get("AmbientVolume"));
|
labelVolumeAmbient.setText(lang.get("AmbientVolume"));
|
||||||
|
leftline-=30;
|
||||||
|
|
||||||
|
labelVolumeMusic.init(leftLabelStart, leftline);
|
||||||
|
listBoxVolumeMusic.init(leftColumnStart, leftline, 80);
|
||||||
labelVolumeMusic.setText(lang.get("MusicVolume"));
|
labelVolumeMusic.setText(lang.get("MusicVolume"));
|
||||||
|
leftline-=30;
|
||||||
|
|
||||||
//sound
|
|
||||||
|
|
||||||
//lang
|
|
||||||
vector<string> langResults;
|
|
||||||
findAll("data/lang/*.lng", langResults, true);
|
|
||||||
if(langResults.empty()){
|
|
||||||
throw runtime_error("There is no lang file");
|
|
||||||
}
|
|
||||||
listBoxLang.setItems(langResults);
|
|
||||||
listBoxLang.setSelectedItem(config.getString("Lang"));
|
|
||||||
|
|
||||||
//playerName
|
|
||||||
labelPlayerName.setText(config.getString("NetPlayerName",Socket::getHostName().c_str()));
|
|
||||||
|
|
||||||
//shadows
|
|
||||||
for(int i= 0; i<Renderer::sCount; ++i){
|
|
||||||
listBoxShadows.pushBackItem(lang.get(Renderer::shadowsToStr(static_cast<Renderer::Shadows>(i))));
|
|
||||||
}
|
|
||||||
|
|
||||||
string str= config.getString("Shadows");
|
|
||||||
listBoxShadows.setSelectedItemIndex(clamp(Renderer::strToShadows(str), 0, Renderer::sCount-1));
|
|
||||||
|
|
||||||
//filter
|
|
||||||
listBoxFilter.pushBackItem("Bilinear");
|
|
||||||
listBoxFilter.pushBackItem("Trilinear");
|
|
||||||
listBoxFilter.setSelectedItem(config.getString("Filter"));
|
|
||||||
|
|
||||||
//textures 3d
|
|
||||||
listBoxTextures3D.pushBackItem(lang.get("No"));
|
|
||||||
listBoxTextures3D.pushBackItem(lang.get("Yes"));
|
|
||||||
listBoxTextures3D.setSelectedItemIndex(clamp(config.getBool("Textures3D"), false, true));
|
|
||||||
|
|
||||||
//textures 3d
|
|
||||||
listBoxUnitParticles.pushBackItem(lang.get("No"));
|
|
||||||
listBoxUnitParticles.pushBackItem(lang.get("Yes"));
|
|
||||||
listBoxUnitParticles.setSelectedItemIndex(clamp(config.getBool("UnitParticles"), 0, 1));
|
|
||||||
|
|
||||||
//lights
|
|
||||||
for(int i= 1; i<=8; ++i){
|
|
||||||
listBoxLights.pushBackItem(intToStr(i));
|
|
||||||
}
|
|
||||||
listBoxLights.setSelectedItemIndex(clamp(config.getInt("MaxLights")-1, 0, 7));
|
|
||||||
|
|
||||||
//sound
|
|
||||||
for(int i=0; i<=100; i+=5){
|
for(int i=0; i<=100; i+=5){
|
||||||
listBoxVolumeFx.pushBackItem(intToStr(i));
|
listBoxVolumeFx.pushBackItem(intToStr(i));
|
||||||
listBoxVolumeAmbient.pushBackItem(intToStr(i));
|
listBoxVolumeAmbient.pushBackItem(intToStr(i));
|
||||||
@@ -137,6 +79,106 @@ MenuStateOptions::MenuStateOptions(Program *program, MainMenu *mainMenu):
|
|||||||
listBoxVolumeAmbient.setSelectedItem(intToStr(config.getInt("SoundVolumeAmbient")/5*5));
|
listBoxVolumeAmbient.setSelectedItem(intToStr(config.getInt("SoundVolumeAmbient")/5*5));
|
||||||
listBoxVolumeMusic.setSelectedItem(intToStr(config.getInt("SoundVolumeMusic")/5*5));
|
listBoxVolumeMusic.setSelectedItem(intToStr(config.getInt("SoundVolumeMusic")/5*5));
|
||||||
|
|
||||||
|
|
||||||
|
leftline-=30;
|
||||||
|
labelMiscSection.init(leftLabelStart+captionOffset, leftline);
|
||||||
|
labelMiscSection.setFont(CoreData::getInstance().getMenuFontVeryBig());
|
||||||
|
labelMiscSection.setText(lang.get("Misc"));
|
||||||
|
leftline-=30;
|
||||||
|
|
||||||
|
//lang
|
||||||
|
labelLang.init(leftLabelStart, leftline);
|
||||||
|
labelLang.setText(lang.get("Language"));
|
||||||
|
listBoxLang.init(leftColumnStart, leftline, 170);
|
||||||
|
vector<string> langResults;
|
||||||
|
findAll("data/lang/*.lng", langResults, true);
|
||||||
|
if(langResults.empty()){
|
||||||
|
throw runtime_error("There is no lang file");
|
||||||
|
}
|
||||||
|
listBoxLang.setItems(langResults);
|
||||||
|
listBoxLang.setSelectedItem(config.getString("Lang"));
|
||||||
|
leftline-=30;
|
||||||
|
|
||||||
|
//playerName
|
||||||
|
labelPlayerNameLabel.init(leftLabelStart,leftline);
|
||||||
|
labelPlayerNameLabel.setText(lang.get("Playername"));
|
||||||
|
|
||||||
|
labelPlayerName.init(leftColumnStart,leftline);
|
||||||
|
labelPlayerName.setText(config.getString("NetPlayerName",Socket::getHostName().c_str()));
|
||||||
|
leftline-=30;
|
||||||
|
|
||||||
|
leftline-=30;
|
||||||
|
labelVideoSection.init(leftLabelStart+captionOffset, leftline);
|
||||||
|
labelVideoSection.setFont(CoreData::getInstance().getMenuFontVeryBig());
|
||||||
|
labelVideoSection.setText(lang.get("Video"));
|
||||||
|
leftline-=30;
|
||||||
|
|
||||||
|
//resolution
|
||||||
|
labelScreenModes.init(leftLabelStart, leftline);
|
||||||
|
labelScreenModes.setText(lang.get("Resolution"));
|
||||||
|
listBoxScreenModes.init(leftColumnStart, leftline, 170);
|
||||||
|
for(list<ModeInfo>::const_iterator it= modeInfos.begin(); it!=modeInfos.end(); ++it){
|
||||||
|
listBoxScreenModes.pushBackItem((*it).getString());
|
||||||
|
}
|
||||||
|
listBoxScreenModes.setSelectedItem(config.getString("ScreenWidth")+"x"+config.getString("ScreenHeight"));
|
||||||
|
leftline-=30;
|
||||||
|
|
||||||
|
//filter
|
||||||
|
labelFilter.init(leftLabelStart, leftline);
|
||||||
|
labelFilter.setText(lang.get("Filter"));
|
||||||
|
listBoxFilter.init(leftColumnStart, leftline, 170);
|
||||||
|
listBoxFilter.pushBackItem("Bilinear");
|
||||||
|
listBoxFilter.pushBackItem("Trilinear");
|
||||||
|
listBoxFilter.setSelectedItem(config.getString("Filter"));
|
||||||
|
leftline-=30;
|
||||||
|
|
||||||
|
//shadows
|
||||||
|
labelShadows.init(leftLabelStart, leftline);
|
||||||
|
labelShadows.setText(lang.get("Shadows"));
|
||||||
|
listBoxShadows.init(leftColumnStart, leftline, 170);
|
||||||
|
for(int i= 0; i<Renderer::sCount; ++i){
|
||||||
|
listBoxShadows.pushBackItem(lang.get(Renderer::shadowsToStr(static_cast<Renderer::Shadows>(i))));
|
||||||
|
}
|
||||||
|
string str= config.getString("Shadows");
|
||||||
|
listBoxShadows.setSelectedItemIndex(clamp(Renderer::strToShadows(str), 0, Renderer::sCount-1));
|
||||||
|
leftline-=30;
|
||||||
|
|
||||||
|
//textures 3d
|
||||||
|
labelTextures3D.init(leftLabelStart, leftline);
|
||||||
|
listBoxTextures3D.init(leftColumnStart, leftline, 80);
|
||||||
|
labelTextures3D.setText(lang.get("Textures3D"));
|
||||||
|
listBoxTextures3D.pushBackItem(lang.get("No"));
|
||||||
|
listBoxTextures3D.pushBackItem(lang.get("Yes"));
|
||||||
|
listBoxTextures3D.setSelectedItemIndex(clamp(config.getBool("Textures3D"), false, true));
|
||||||
|
leftline-=30;
|
||||||
|
|
||||||
|
//lights
|
||||||
|
labelLights.init(leftLabelStart, leftline);
|
||||||
|
labelLights.setText(lang.get("MaxLights"));
|
||||||
|
listBoxLights.init(leftColumnStart, leftline, 80);
|
||||||
|
for(int i= 1; i<=8; ++i){
|
||||||
|
listBoxLights.pushBackItem(intToStr(i));
|
||||||
|
}
|
||||||
|
listBoxLights.setSelectedItemIndex(clamp(config.getInt("MaxLights")-1, 0, 7));
|
||||||
|
leftline-=30;
|
||||||
|
|
||||||
|
//unit particles
|
||||||
|
labelUnitParticles.init(leftLabelStart,leftline);
|
||||||
|
labelUnitParticles.setText(lang.get("ShowUnitParticles"));
|
||||||
|
listBoxUnitParticles.init(leftColumnStart,leftline,80);
|
||||||
|
listBoxUnitParticles.pushBackItem(lang.get("No"));
|
||||||
|
listBoxUnitParticles.pushBackItem(lang.get("Yes"));
|
||||||
|
listBoxUnitParticles.setSelectedItemIndex(clamp(config.getBool("UnitParticles"), 0, 1));
|
||||||
|
leftline-=30;
|
||||||
|
|
||||||
|
// buttons
|
||||||
|
buttonOk.init(200, buttonRowPos, 100);
|
||||||
|
buttonOk.setText(lang.get("Ok"));
|
||||||
|
buttonAbort.setText(lang.get("Abort"));
|
||||||
|
buttonAbort.init(310, buttonRowPos, 100);
|
||||||
|
buttonAutoConfig.setText(lang.get("AutoConfig"));
|
||||||
|
buttonAutoConfig.init(450, buttonRowPos, 125);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuStateOptions::mouseClick(int x, int y, MouseButton mouseButton){
|
void MenuStateOptions::mouseClick(int x, int y, MouseButton mouseButton){
|
||||||
@@ -174,6 +216,7 @@ void MenuStateOptions::mouseClick(int x, int y, MouseButton mouseButton){
|
|||||||
listBoxVolumeFx.mouseClick(x, y);
|
listBoxVolumeFx.mouseClick(x, y);
|
||||||
listBoxVolumeAmbient.mouseClick(x, y);
|
listBoxVolumeAmbient.mouseClick(x, y);
|
||||||
listBoxVolumeMusic.mouseClick(x, y);
|
listBoxVolumeMusic.mouseClick(x, y);
|
||||||
|
listBoxScreenModes.mouseClick(x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,6 +234,7 @@ void MenuStateOptions::mouseMove(int x, int y, const MouseState *ms){
|
|||||||
listBoxTextures3D.mouseMove(x, y);
|
listBoxTextures3D.mouseMove(x, y);
|
||||||
listBoxUnitParticles.mouseMove(x, y);
|
listBoxUnitParticles.mouseMove(x, y);
|
||||||
listBoxLights.mouseMove(x, y);
|
listBoxLights.mouseMove(x, y);
|
||||||
|
listBoxScreenModes.mouseMove(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuStateOptions::keyDown(char key){
|
void MenuStateOptions::keyDown(char key){
|
||||||
@@ -249,6 +293,11 @@ void MenuStateOptions::render(){
|
|||||||
renderer.renderLabel(&labelVolumeFx);
|
renderer.renderLabel(&labelVolumeFx);
|
||||||
renderer.renderLabel(&labelVolumeAmbient);
|
renderer.renderLabel(&labelVolumeAmbient);
|
||||||
renderer.renderLabel(&labelVolumeMusic);
|
renderer.renderLabel(&labelVolumeMusic);
|
||||||
|
renderer.renderLabel(&labelVideoSection);
|
||||||
|
renderer.renderLabel(&labelAudioSection);
|
||||||
|
renderer.renderLabel(&labelMiscSection);
|
||||||
|
renderer.renderLabel(&labelScreenModes);
|
||||||
|
renderer.renderListBox(&listBoxScreenModes);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuStateOptions::saveConfig(){
|
void MenuStateOptions::saveConfig(){
|
||||||
@@ -276,6 +325,19 @@ void MenuStateOptions::saveConfig(){
|
|||||||
CoreData::getInstance().getMenuMusic()->setVolume(strToInt(listBoxVolumeMusic.getSelectedItem())/100.f);
|
CoreData::getInstance().getMenuMusic()->setVolume(strToInt(listBoxVolumeMusic.getSelectedItem())/100.f);
|
||||||
config.setString("SoundVolumeMusic", listBoxVolumeMusic.getSelectedItem());
|
config.setString("SoundVolumeMusic", listBoxVolumeMusic.getSelectedItem());
|
||||||
|
|
||||||
|
//just for the moment ....
|
||||||
|
string currentResolution=config.getString("ScreenWidth")+"x"+config.getString("ScreenHeight");
|
||||||
|
string selectedResolution=listBoxScreenModes.getSelectedItem();
|
||||||
|
if(currentResolution!=selectedResolution){
|
||||||
|
for(list<ModeInfo>::const_iterator it= modeInfos.begin(); it!=modeInfos.end(); ++it){
|
||||||
|
if((*it).getString()==selectedResolution)
|
||||||
|
{
|
||||||
|
config.setInt("ScreenWidth",(*it).width);
|
||||||
|
config.setInt("ScreenHeight",(*it).height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
config.save();
|
config.save();
|
||||||
Renderer::getInstance().loadConfig();
|
Renderer::getInstance().loadConfig();
|
||||||
SoundRenderer::getInstance().loadConfig();
|
SoundRenderer::getInstance().loadConfig();
|
||||||
|
@@ -44,11 +44,18 @@ private:
|
|||||||
GraphicListBox listBoxVolumeFx;
|
GraphicListBox listBoxVolumeFx;
|
||||||
GraphicListBox listBoxVolumeAmbient;
|
GraphicListBox listBoxVolumeAmbient;
|
||||||
GraphicListBox listBoxVolumeMusic;
|
GraphicListBox listBoxVolumeMusic;
|
||||||
GraphicListBox listBoxMusicSelect;
|
|
||||||
GraphicLabel labelPlayerName;
|
GraphicLabel labelPlayerName;
|
||||||
GraphicLabel labelPlayerNameLabel;
|
GraphicLabel labelPlayerNameLabel;
|
||||||
GraphicLabel *activeInputLabel;
|
GraphicLabel *activeInputLabel;
|
||||||
|
|
||||||
|
GraphicLabel labelScreenModes;
|
||||||
|
GraphicListBox listBoxScreenModes;
|
||||||
|
list<ModeInfo> modeInfos;
|
||||||
|
|
||||||
|
GraphicLabel labelVideoSection;
|
||||||
|
GraphicLabel labelAudioSection;
|
||||||
|
GraphicLabel labelMiscSection;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MenuStateOptions(Program *program, MainMenu *mainMenu);
|
MenuStateOptions(Program *program, MainMenu *mainMenu);
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
#include <list>
|
||||||
|
|
||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
|
||||||
@@ -23,6 +25,7 @@
|
|||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
using std::list;
|
||||||
using std::exception;
|
using std::exception;
|
||||||
|
|
||||||
using Shared::Platform::int64;
|
using Shared::Platform::int64;
|
||||||
@@ -76,6 +79,20 @@ private:
|
|||||||
int64 queryCounter(int multiplier) const;
|
int64 queryCounter(int multiplier) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// =====================================================
|
||||||
|
// class ModeInfo
|
||||||
|
// =====================================================
|
||||||
|
class ModeInfo {
|
||||||
|
public:
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
int depth;
|
||||||
|
|
||||||
|
ModeInfo(int width, int height, int depth);
|
||||||
|
|
||||||
|
string getString() const;
|
||||||
|
};
|
||||||
|
|
||||||
// =====================================================
|
// =====================================================
|
||||||
// class PlatformExceptionHandler
|
// class PlatformExceptionHandler
|
||||||
// =====================================================
|
// =====================================================
|
||||||
@@ -101,6 +118,7 @@ void createDirectoryPaths(string Path);
|
|||||||
string extractDirectoryPathFromFile(string filename);
|
string extractDirectoryPathFromFile(string filename);
|
||||||
string extractExtension(const string& filename);
|
string extractExtension(const string& filename);
|
||||||
|
|
||||||
|
void getFullscreenVideoModes(list<ModeInfo> *modeinfos);
|
||||||
void getFullscreenVideoInfo(int &colorBits,int &screenWidth,int &screenHeight);
|
void getFullscreenVideoInfo(int &colorBits,int &screenWidth,int &screenHeight);
|
||||||
bool changeVideoMode(int resH, int resW, int colorBits, int refreshFrequency);
|
bool changeVideoMode(int resH, int resW, int colorBits, int refreshFrequency);
|
||||||
void restoreVideoMode(bool exitingApp=false);
|
void restoreVideoMode(bool exitingApp=false);
|
||||||
|
@@ -509,6 +509,51 @@ void getFullscreenVideoInfo(int &colorBits,int &screenWidth,int &screenHeight) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void getFullscreenVideoModes(list<ModeInfo> *modeinfos) {
|
||||||
|
// Get the current video hardware information
|
||||||
|
//const SDL_VideoInfo* vidInfo = SDL_GetVideoInfo();
|
||||||
|
//colorBits = vidInfo->vfmt->BitsPerPixel;
|
||||||
|
//screenWidth = vidInfo->current_w;
|
||||||
|
//screenHeight = vidInfo->current_h;
|
||||||
|
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
|
/* Get available fullscreen/hardware modes */
|
||||||
|
SDL_Rect**modes = SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE);
|
||||||
|
|
||||||
|
/* Check if there are any modes available */
|
||||||
|
if (modes == (SDL_Rect**)0) {
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] no hardware modes available.\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
|
const SDL_VideoInfo* vidInfo = SDL_GetVideoInfo();
|
||||||
|
modeinfos->push_back(ModeInfo(vidInfo->current_w,vidInfo->current_h,vidInfo->vfmt->BitsPerPixel));
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] adding only current resolution: %d x %d.\n",__FILE__,__FUNCTION__,__LINE__,vidInfo->current_w,vidInfo->current_h);
|
||||||
|
}
|
||||||
|
/* Check if our resolution is restricted */
|
||||||
|
else if (modes == (SDL_Rect**)-1) {
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] all resolutions available.\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
|
const SDL_VideoInfo* vidInfo = SDL_GetVideoInfo();
|
||||||
|
modeinfos->push_back(ModeInfo(vidInfo->current_w,vidInfo->current_h,vidInfo->vfmt->BitsPerPixel));
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] adding only current resolution: %d x %d.\n",__FILE__,__FUNCTION__,__LINE__,vidInfo->current_w,vidInfo->current_h);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
/* Print valid modes */
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] available Modes are:\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
|
int bestW = -1;
|
||||||
|
int bestH = -1;
|
||||||
|
for(int i=0; modes[i]; ++i) {
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"%d x %d\n",modes[i]->w, modes[i]->h,modes[i]->x);
|
||||||
|
modeinfos->push_back(ModeInfo(modes[i]->w,modes[i]->h,modes[i]->x));
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] adding resolution: %d x %d.\n",__FILE__,__FUNCTION__,__LINE__,modes[i]->w,modes[i]->h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool changeVideoMode(int resW, int resH, int colorBits, int ) {
|
bool changeVideoMode(int resW, int resH, int colorBits, int ) {
|
||||||
Private::shouldBeFullscreen = true;
|
Private::shouldBeFullscreen = true;
|
||||||
return true;
|
return true;
|
||||||
@@ -592,4 +637,19 @@ bool isKeyDown(int virtualKey) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// =====================================
|
||||||
|
// ModeInfo
|
||||||
|
// =====================================
|
||||||
|
|
||||||
|
ModeInfo::ModeInfo(int w, int h, int d) {
|
||||||
|
width=w;
|
||||||
|
height=h;
|
||||||
|
depth=d;
|
||||||
|
}
|
||||||
|
|
||||||
|
string ModeInfo::getString() const{
|
||||||
|
return intToStr(width)+"x"+intToStr(height);
|
||||||
|
}
|
||||||
|
|
||||||
}}//end namespace
|
}}//end namespace
|
||||||
|
Reference in New Issue
Block a user