diff --git a/src/game/game.cpp b/src/game/game.cpp index d07bba4b8..435100586 100644 --- a/src/game/game.cpp +++ b/src/game/game.cpp @@ -690,6 +690,7 @@ static void GameTypeLeftVsRight() */ static void GameTypeManVsMachine() { + Map.NoFogOfWar = true; for (int i = 0; i < PlayerMax - 1; ++i) { if (Players[i].Type != PlayerPerson && Players[i].Type != PlayerComputer) { continue; @@ -738,6 +739,42 @@ static void GameTypeManTeamVsMachine() } } +/** +** Machine vs Machine +*/ +static void GameTypeMachineVsMachine() +{ + Map.Reveal(); + for (int i = 0; i < PlayerMax - 1; ++i) { + if (Players[i].Type == PlayerComputer) { + for (int j = i + 1; j < PlayerMax - 1; ++j) { + if (Players[j].Type == PlayerComputer) { + CommandDiplomacy(i, DiplomacyEnemy, j); + CommandDiplomacy(j, DiplomacyEnemy, i); + } else { + CommandDiplomacy(i, DiplomacyNeutral, j); + CommandDiplomacy(j, DiplomacyNeutral, i); + } + } + } + } +} + +/** + ** Machine vs Machine Training + */ +static void GameTypeMachineVsMachineTraining() +{ + Assert(!IsNetworkGame()); + GameTypeMachineVsMachine(); + FastForwardCycle = LONG_MAX; + SyncHash = 0; + InitSyncRand(); + for (int i = 0; i < MyRand() % 100; i++) { + SyncRand(); + } +} + /*---------------------------------------------------------------------------- -- Game creation ----------------------------------------------------------------------------*/ @@ -871,6 +908,13 @@ void CreateGame(const std::string &filename, CMap *map) break; case SettingsGameTypeManTeamVsMachine: GameTypeManTeamVsMachine(); + break; + case SettingsGameTypeMachineVsMachine: + GameTypeMachineVsMachine(); + break; + case SettingsGameTypeMachineVsMachineTraining: + GameTypeMachineVsMachineTraining(); + break; // Future game type ideas #if 0 diff --git a/src/include/settings.h b/src/include/settings.h index 409519b83..9508cfd99 100644 --- a/src/include/settings.h +++ b/src/include/settings.h @@ -101,7 +101,9 @@ enum GameTypes { SettingsGameTypeTopVsBottom, SettingsGameTypeLeftVsRight, SettingsGameTypeManVsMachine, - SettingsGameTypeManTeamVsMachine + SettingsGameTypeManTeamVsMachine, + SettingsGameTypeMachineVsMachine, + SettingsGameTypeMachineVsMachineTraining // Future game type ideas #if 0 diff --git a/src/tolua/game.pkg b/src/tolua/game.pkg index bfc1b63ce..e085a08a8 100644 --- a/src/tolua/game.pkg +++ b/src/tolua/game.pkg @@ -80,5 +80,7 @@ enum GameTypes { SettingsGameTypeLeftVsRight, SettingsGameTypeManVsMachine, SettingsGameTypeManTeamVsMachine, + SettingsGameTypeMachineVsMachine, + SettingsGameTypeMachineVsMachineTraining, };