multiplier for CPUs replacing disconnected network player ( not finished yet! , only menu for now )

This commit is contained in:
Titus Tscharntke 2012-09-16 23:42:56 +00:00
parent 78643ddcfc
commit 158195a825
8 changed files with 86 additions and 11 deletions

View File

@ -59,13 +59,14 @@ private:
ControlType factionControls[GameConstants::maxPlayers];
int resourceMultiplierIndex[GameConstants::maxPlayers];
int thisFactionIndex;
int factionCount;
int teams[GameConstants::maxPlayers];
int startLocationIndex[GameConstants::maxPlayers];
int mapFilterIndex;
int fallbackCpuMultiplier;
bool defaultUnits;
bool defaultResources;
bool defaultVictoryConditions;
@ -131,6 +132,7 @@ public:
aiAcceptSwitchTeamPercentChance = 30;
masterserver_admin = -1;
masterserver_admin_factionIndex = -1;
fallbackCpuMultiplier = 1.0f;
}
// default copy constructor will do fine, and will maintain itself ;)
@ -264,6 +266,9 @@ public:
int getAiAcceptSwitchTeamPercentChance() const { return aiAcceptSwitchTeamPercentChance;}
void setAiAcceptSwitchTeamPercentChance(int value) { aiAcceptSwitchTeamPercentChance = value; }
int getFallbackCpuMultiplier() const { return fallbackCpuMultiplier;}
void setFallbackCpuMultiplier(int value) { fallbackCpuMultiplier = value; }
int getMasterserver_admin() const { return masterserver_admin;}
void setMasterserver_admin(int value) { masterserver_admin = value; }

View File

@ -836,6 +836,7 @@ void CoreData::saveGameSettingsToFile(std::string fileName, GameSettings *gameSe
saveGameFile << "FlagTypes1=" << gameSettings->getFlagTypes1() << std::endl;
saveGameFile << "EnableObserverModeAtEndGame=" << gameSettings->getEnableObserverModeAtEndGame() << std::endl;
saveGameFile << "AiAcceptSwitchTeamPercentChance=" << gameSettings->getAiAcceptSwitchTeamPercentChance() << std::endl;
saveGameFile << "FallbackCpuMultiplier=" << gameSettings->getFallbackCpuMultiplier() << std::endl;
saveGameFile << "PathFinderType=" << gameSettings->getPathFinderType() << std::endl;
saveGameFile << "EnableServerControlledAI=" << gameSettings->getEnableServerControlledAI() << std::endl;
saveGameFile << "NetworkFramePeriod=" << gameSettings->getNetworkFramePeriod() << std::endl;
@ -904,6 +905,7 @@ bool CoreData::loadGameSettingsFromFile(std::string fileName, GameSettings *game
gameSettings->setFlagTypes1(properties.getInt("FlagTypes1","0"));
gameSettings->setEnableObserverModeAtEndGame(properties.getBool("EnableObserverModeAtEndGame"));
gameSettings->setAiAcceptSwitchTeamPercentChance(properties.getInt("AiAcceptSwitchTeamPercentChance","30"));
gameSettings->setFallbackCpuMultiplier(properties.getInt("FallbackCpuMultiplier","1"));
gameSettings->setPathFinderType(static_cast<PathFinderType>(properties.getInt("PathFinderType",intToStr(pfBasic).c_str())));
gameSettings->setEnableServerControlledAI(properties.getBool("EnableServerControlledAI","true"));

View File

@ -188,6 +188,20 @@ MenuStateConnectedGame::MenuStateConnectedGame(Program *program, MainMenu *mainM
listBoxAllowObservers.setSelectedItemIndex(0);
listBoxAllowObservers.setEditable(false);
for(int i=0; i<45; ++i){
rMultiplier.push_back(floatToStr(0.5f+0.1f*i,1));
}
labelFallbackCpuMultiplier.registerGraphicComponent(containerName,"labelFallbackCpuMultiplier");
labelFallbackCpuMultiplier.init(xoffset+460, aHeadPos, 80);
labelFallbackCpuMultiplier.setText(lang.get("FallbackCpuMultiplier"));
listBoxFallbackCpuMultiplier.registerGraphicComponent(containerName,"listBoxFallbackCpuMultiplier");
listBoxFallbackCpuMultiplier.init(xoffset+460, aPos, 80);
listBoxFallbackCpuMultiplier.setItems(rMultiplier);
listBoxFallbackCpuMultiplier.setSelectedItemIndex(0);
// Allow Switch Team Mode
labelEnableSwitchTeamMode.registerGraphicComponent(containerName,"labelEnableSwitchTeamMode");
labelEnableSwitchTeamMode.init(xoffset+310, aHeadPos+45, 80);
@ -349,9 +363,6 @@ MenuStateConnectedGame::MenuStateConnectedGame(Program *program, MainMenu *mainM
controlItems.push_back(lang.get("NetworkUnassigned"));
controlItems.push_back(lang.get("Human"));
for(int i=0; i<45; ++i){
rMultiplier.push_back(floatToStr(0.5f+0.1f*i,1));
}
if(config.getBool("EnableNetworkCpu","false") == true) {
controlItems.push_back(lang.get("NetworkCpuEasy"));
@ -555,6 +566,7 @@ void MenuStateConnectedGame::reloadUI() {
listBoxFogOfWar.setItems(fowItems);
labelAllowObservers.setText(lang.get("AllowObservers"));
labelFallbackCpuMultiplier.setText(lang.get("FallbackCpuMultiplier"));
vector<string> observerItems;
observerItems.push_back(lang.get("No"));
@ -576,6 +588,12 @@ void MenuStateConnectedGame::reloadUI() {
}
listBoxAISwitchTeamAcceptPercent.setItems(aiswitchteamModeItems);
vector<string> rMultiplier;
for(int i=0; i<45; ++i){
rMultiplier.push_back(floatToStr(0.5f+0.1f*i,1));
}
listBoxFallbackCpuMultiplier.setItems(rMultiplier);
labelPathFinderType.setText(lang.get("PathFinderType"));
vector<string> pathfinderItems;
@ -1161,6 +1179,11 @@ void MenuStateConnectedGame::mouseClickAdmin(int x, int y, MouseButton mouseButt
needToBroadcastServerSettings=true;
broadcastServerSettingsDelayTimer=time(NULL);
}
else if(listBoxFallbackCpuMultiplier.getEnabled() && listBoxFallbackCpuMultiplier.mouseClick(x, y)) {
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
needToBroadcastServerSettings=true;
broadcastServerSettingsDelayTimer=time(NULL);
}
else if(listBoxTileset.mouseClick(x, y)) {
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
needToBroadcastServerSettings=true;
@ -1470,6 +1493,7 @@ void MenuStateConnectedGame::loadGameSettings(GameSettings *gameSettings) {
gameSettings->setFlagTypes1(valueFlags1);
}
gameSettings->setAiAcceptSwitchTeamPercentChance(strToInt(listBoxAISwitchTeamAcceptPercent.getSelectedItem()));
gameSettings->setFallbackCpuMultiplier(listBoxFallbackCpuMultiplier.getSelectedItemIndex());
// First save Used slots
//for(int i=0; i<mapInfo.players; ++i)
@ -1844,6 +1868,7 @@ void MenuStateConnectedGame::render() {
renderer.renderLabel(&labelMap);
renderer.renderLabel(&labelFogOfWar);
renderer.renderLabel(&labelAllowObservers);
renderer.renderLabel(&labelFallbackCpuMultiplier);
renderer.renderLabel(&labelTileset);
renderer.renderLabel(&labelTechTree);
renderer.renderLabel(&labelControl);
@ -1869,6 +1894,7 @@ void MenuStateConnectedGame::render() {
renderer.renderListBox(&listBoxEnableSwitchTeamMode);
renderer.renderListBox(&listBoxAISwitchTeamAcceptPercent);
renderer.renderListBox(&listBoxFallbackCpuMultiplier);
renderer.renderButton(&buttonPlayNow);
renderer.renderButton(&buttonRestoreLastSettings);
@ -1972,6 +1998,7 @@ void MenuStateConnectedGame::update() {
listBoxTileset.setEditable(isHeadlessAdmin());
listBoxEnableSwitchTeamMode.setEditable(isHeadlessAdmin());
listBoxAISwitchTeamAcceptPercent.setEditable(isHeadlessAdmin());
listBoxFallbackCpuMultiplier.setEditable(isHeadlessAdmin());
listBoxFogOfWar.setEditable(isHeadlessAdmin());
//listBoxEnableObserverMode.setEditable(isMasterserverAdmin());
listBoxAllowObservers.setEditable(isHeadlessAdmin());
@ -3595,6 +3622,7 @@ void MenuStateConnectedGame::setupUIFromGameSettings(GameSettings *gameSettings,
listBoxEnableSwitchTeamMode.setSelectedItemIndex(1);
}
listBoxAISwitchTeamAcceptPercent.setSelectedItem(intToStr(gameSettings->getAiAcceptSwitchTeamPercentChance()));
listBoxFallbackCpuMultiplier.setSelectedItemIndex(gameSettings->getFallbackCpuMultiplier());
// if(gameSettings->getEnableObserverModeAtEndGame()) {
// listBoxEnableObserverMode.setSelectedItemIndex(0);

View File

@ -179,6 +179,9 @@ private:
GraphicListBox listBoxEnableSwitchTeamMode;
GraphicLabel labelAISwitchTeamAcceptPercent;
GraphicListBox listBoxAISwitchTeamAcceptPercent;
GraphicLabel labelFallbackCpuMultiplier;
GraphicListBox listBoxFallbackCpuMultiplier;
GraphicButton buttonPlayNow;

View File

@ -289,6 +289,19 @@ MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu,
listBoxAllowObservers.pushBackItem(lang.get("Yes"));
listBoxAllowObservers.setSelectedItemIndex(0);
for(int i=0; i<45; ++i){
rMultiplier.push_back(floatToStr(0.5f+0.1f*i,1));
}
labelFallbackCpuMultiplier.registerGraphicComponent(containerName,"labelFallbackCpuMultiplier");
labelFallbackCpuMultiplier.init(xoffset+460, aHeadPos, 80);
labelFallbackCpuMultiplier.setText(lang.get("FallbackCpuMultiplier"));
listBoxFallbackCpuMultiplier.registerGraphicComponent(containerName,"listBoxFallbackCpuMultiplier");
listBoxFallbackCpuMultiplier.init(xoffset+460, aPos, 80);
listBoxFallbackCpuMultiplier.setItems(rMultiplier);
listBoxFallbackCpuMultiplier.setSelectedItemIndex(5);
// View Map At End Of Game
//labelEnableObserverMode.registerGraphicComponent(containerName,"labelEnableObserverMode");
//labelEnableObserverMode.init(xoffset+460, aHeadPos, 80);
@ -551,10 +564,6 @@ MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu,
labelNetStatus[i].setText("");
}
//labelEnableObserverMode.setText(lang.get("EnableObserverMode"));
loadMapInfo(Map::getMapPath(getCurrentMapFile()), &mapInfo, true);
labelMapInfo.setText(mapInfo.desc);
@ -848,7 +857,7 @@ void MenuStateCustomGame::reloadUI() {
listBoxControls[i].setItems(controlItems);
}
//labelEnableObserverMode.setText(lang.get("EnableObserverMode"));
labelFallbackCpuMultiplier.setText(lang.get("FallbackCpuMultiplier"));
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
@ -1119,6 +1128,19 @@ void MenuStateCustomGame::mouseClick(int x, int y, MouseButton mouseButton) {
lastSetChangedGameSettings = time(NULL);
}
}
else if (listBoxAdvanced.getSelectedItemIndex() == 1 && listBoxFallbackCpuMultiplier.getEditable() == true && listBoxFallbackCpuMultiplier.mouseClick(x, y)) {
MutexSafeWrapper safeMutex((publishToMasterserverThread != NULL ? publishToMasterserverThread->getMutexThreadObjectAccessor() : NULL),string(__FILE__) + "_" + intToStr(__LINE__));
if(listBoxPublishServer.getSelectedItemIndex() == 0) {
needToRepublishToMasterserver = true;
}
if(hasNetworkGameSettings() == true)
{
needToSetChangedGameSettings = true;
lastSetChangedGameSettings = time(NULL);
}
}
else if (listBoxAdvanced.getSelectedItemIndex() == 1 && listBoxPathFinderType.mouseClick(x, y)) {
MutexSafeWrapper safeMutex((publishToMasterserverThread != NULL ? publishToMasterserverThread->getMutexThreadObjectAccessor() : NULL),string(__FILE__) + "_" + intToStr(__LINE__));
@ -1764,6 +1786,7 @@ void MenuStateCustomGame::mouseMove(int x, int y, const MouseState *ms) {
listBoxEnableSwitchTeamMode.mouseMove(x, y);
listBoxAISwitchTeamAcceptPercent.mouseMove(x, y);
listBoxFallbackCpuMultiplier.mouseMove(x, y);
labelNetworkPauseGameForLaggedClients.mouseMove(x, y);
listBoxNetworkPauseGameForLaggedClients.mouseMove(x, y);
@ -1933,7 +1956,7 @@ void MenuStateCustomGame::render() {
if(listBoxAdvanced.getSelectedItemIndex() == 1) {
renderer.renderLabel(&labelFogOfWar);
renderer.renderLabel(&labelAllowObservers);
//renderer.renderLabel(&labelEnableObserverMode);
renderer.renderLabel(&labelFallbackCpuMultiplier);
renderer.renderLabel(&labelPathFinderType);
renderer.renderLabel(&labelEnableSwitchTeamMode);
@ -1946,6 +1969,7 @@ void MenuStateCustomGame::render() {
renderer.renderListBox(&listBoxEnableSwitchTeamMode);
renderer.renderListBox(&listBoxAISwitchTeamAcceptPercent);
renderer.renderListBox(&listBoxFallbackCpuMultiplier);
}
renderer.renderLabel(&labelTileset);
renderer.renderLabel(&labelMapFilter);
@ -2480,6 +2504,7 @@ void MenuStateCustomGame::update() {
if(this->headlessServerMode == true) {
listBoxPublishServer.setSelectedItemIndex(0);
}
listBoxFallbackCpuMultiplier.setEditable(true);
listBoxPublishServer.setEditable(true);
//listBoxEnableServerControlledAI.setEditable(true);
@ -2509,6 +2534,8 @@ void MenuStateCustomGame::update() {
else {
listBoxPublishServer.setSelectedItemIndex(1);
listBoxPublishServer.setEditable(false);
listBoxFallbackCpuMultiplier.setEditable(false);
listBoxFallbackCpuMultiplier.setSelectedItemIndex(5);
ServerInterface* serverInterface= NetworkManager::getInstance().getServerInterface();
serverInterface->setPublishEnabled(listBoxPublishServer.getSelectedItemIndex() == 0);
@ -3082,6 +3109,7 @@ void MenuStateCustomGame::loadGameSettings(GameSettings *gameSettings,bool force
gameSettings->setFlagTypes1(valueFlags1);
}
gameSettings->setAiAcceptSwitchTeamPercentChance(strToInt(listBoxAISwitchTeamAcceptPercent.getSelectedItem()));
gameSettings->setFallbackCpuMultiplier(listBoxFallbackCpuMultiplier.getSelectedItemIndex());
// First save Used slots
//for(int i=0; i<mapInfo.players; ++i)
@ -3538,6 +3566,7 @@ void MenuStateCustomGame::setupUIFromGameSettings(const GameSettings &gameSettin
listBoxEnableSwitchTeamMode.setSelectedItem((gameSettings.getFlagTypes1() & ft1_allow_team_switching) == ft1_allow_team_switching ? lang.get("Yes") : lang.get("No"));
listBoxAISwitchTeamAcceptPercent.setSelectedItem(intToStr(gameSettings.getAiAcceptSwitchTeamPercentChance()));
listBoxFallbackCpuMultiplier.setSelectedItemIndex(gameSettings.getFallbackCpuMultiplier());
listBoxPathFinderType.setSelectedItemIndex(gameSettings.getPathFinderType());
@ -4288,6 +4317,7 @@ void MenuStateCustomGame::SetupUIForScenarios() {
listBoxPathFinderType.setEditable(false);
listBoxEnableSwitchTeamMode.setEditable(false);
listBoxAISwitchTeamAcceptPercent.setEditable(false);
listBoxFallbackCpuMultiplier.setEditable(false);
listBoxMap.setEditable(false);
listBoxTileset.setEditable(false);
listBoxMapFilter.setEditable(false);
@ -4307,6 +4337,7 @@ void MenuStateCustomGame::SetupUIForScenarios() {
listBoxPathFinderType.setEditable(true);
listBoxEnableSwitchTeamMode.setEditable(true);
listBoxAISwitchTeamAcceptPercent.setEditable(true);
listBoxFallbackCpuMultiplier.setEditable(true);
listBoxMap.setEditable(true);
listBoxTileset.setEditable(true);
listBoxMapFilter.setEditable(true);

View File

@ -118,6 +118,8 @@ private:
GraphicListBox listBoxEnableSwitchTeamMode;
GraphicLabel labelAISwitchTeamAcceptPercent;
GraphicListBox listBoxAISwitchTeamAcceptPercent;
GraphicLabel labelFallbackCpuMultiplier;
GraphicListBox listBoxFallbackCpuMultiplier;
GraphicCheckBox checkBoxScenario;
GraphicLabel labelScenario;

View File

@ -184,6 +184,7 @@ NetworkMessageLaunch::NetworkMessageLaunch() {
data.factionCRCList[i] = 0;
}
data.aiAcceptSwitchTeamPercentChance = 0;
data.cpuReplacementMultiplier = 10 ;
data.masterserver_admin = -1;
data.masterserver_admin_factionIndex = -1;
}
@ -245,7 +246,7 @@ NetworkMessageLaunch::NetworkMessageLaunch(const GameSettings *gameSettings,int8
// data.teams[i]= -1;
// data.startLocationIndex[i]= 0;
// }
data.cpuReplacementMultiplier = gameSettings->getFallbackCpuMultiplier();
data.aiAcceptSwitchTeamPercentChance = gameSettings->getAiAcceptSwitchTeamPercentChance();
data.masterserver_admin = gameSettings->getMasterserver_admin();
data.masterserver_admin_factionIndex = gameSettings->getMasterserver_admin_faction_index();
@ -298,6 +299,8 @@ void NetworkMessageLaunch::buildGameSettings(GameSettings *gameSettings) const {
}
gameSettings->setAiAcceptSwitchTeamPercentChance(data.aiAcceptSwitchTeamPercentChance);
gameSettings->setFallbackCpuMultiplier(data.cpuReplacementMultiplier);
gameSettings->setMasterserver_admin(data.masterserver_admin);
gameSettings->setMasterserver_admin_faction_index(data.masterserver_admin_factionIndex);

View File

@ -237,6 +237,7 @@ private:
uint32 flagTypes1;
int8 aiAcceptSwitchTeamPercentChance;
int8 cpuReplacementMultiplier;
int32 masterserver_admin;
int32 masterserver_admin_factionIndex;