multiplier for CPUs replacing disconnected network player ( not finished yet! , only menu for now )
This commit is contained in:
parent
78643ddcfc
commit
158195a825
|
@ -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; }
|
||||
|
||||
|
|
|
@ -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"));
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -179,6 +179,9 @@ private:
|
|||
GraphicListBox listBoxEnableSwitchTeamMode;
|
||||
GraphicLabel labelAISwitchTeamAcceptPercent;
|
||||
GraphicListBox listBoxAISwitchTeamAcceptPercent;
|
||||
GraphicLabel labelFallbackCpuMultiplier;
|
||||
GraphicListBox listBoxFallbackCpuMultiplier;
|
||||
|
||||
|
||||
GraphicButton buttonPlayNow;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -118,6 +118,8 @@ private:
|
|||
GraphicListBox listBoxEnableSwitchTeamMode;
|
||||
GraphicLabel labelAISwitchTeamAcceptPercent;
|
||||
GraphicListBox listBoxAISwitchTeamAcceptPercent;
|
||||
GraphicLabel labelFallbackCpuMultiplier;
|
||||
GraphicListBox listBoxFallbackCpuMultiplier;
|
||||
|
||||
GraphicCheckBox checkBoxScenario;
|
||||
GraphicLabel labelScenario;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -237,6 +237,7 @@ private:
|
|||
uint32 flagTypes1;
|
||||
|
||||
int8 aiAcceptSwitchTeamPercentChance;
|
||||
int8 cpuReplacementMultiplier;
|
||||
int32 masterserver_admin;
|
||||
int32 masterserver_admin_factionIndex;
|
||||
|
||||
|
|
Loading…
Reference in New Issue