2010-10-30 06:02:42 +02:00
|
|
|
function InitGame(settings)
|
2010-01-22 21:03:14 +01:00
|
|
|
{
|
2011-01-12 13:29:00 +01:00
|
|
|
// This will be called after the map settings have been loaded,
|
|
|
|
// before the simulation has started.
|
2011-12-22 15:04:32 +01:00
|
|
|
// This is only called at the start of a new game, not when loading
|
|
|
|
// a saved game.
|
2011-01-12 13:29:00 +01:00
|
|
|
|
2011-02-26 01:19:02 +01:00
|
|
|
// No settings when loading a map in Atlas, so do nothing
|
|
|
|
if (!settings)
|
|
|
|
return;
|
|
|
|
|
2011-09-09 02:28:56 +02:00
|
|
|
var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
|
2011-01-12 13:29:00 +01:00
|
|
|
var cmpAIManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_AIManager);
|
2011-02-27 18:58:41 +01:00
|
|
|
for (var i = 0; i < settings.PlayerData.length; ++i)
|
2011-01-12 13:29:00 +01:00
|
|
|
{
|
2012-08-05 16:01:05 +02:00
|
|
|
var cmpPlayer = Engine.QueryInterface(cmpPlayerManager.GetPlayerByID(i+1), IID_Player);
|
2013-08-01 00:22:12 +02:00
|
|
|
cmpPlayer.SetCheatsEnabled(!!settings.CheatsEnabled);
|
2011-03-22 02:34:45 +01:00
|
|
|
if (settings.PlayerData[i] && settings.PlayerData[i].AI && settings.PlayerData[i].AI != "")
|
2011-09-09 02:28:56 +02:00
|
|
|
{
|
2013-08-17 15:59:53 +02:00
|
|
|
cmpAIManager.AddPlayer(settings.PlayerData[i].AI, i+1, +settings.PlayerData[i].AIDiff);
|
2011-09-09 02:28:56 +02:00
|
|
|
cmpPlayer.SetAI(true);
|
2013-08-17 15:59:53 +02:00
|
|
|
cmpPlayer.SetGatherRateMultiplier(+Math.max(0.5,(+settings.PlayerData[i].AIDiff+1)/3.0)); // Sandbox: 50%, easy: 66%, Medium: 100%, hard: 133%, very hard: 166%
|
2011-09-09 02:28:56 +02:00
|
|
|
}
|
2013-01-04 20:50:54 +01:00
|
|
|
if (settings.PopulationCap)
|
|
|
|
cmpPlayer.SetMaxPopulation(settings.PopulationCap);
|
2012-10-15 17:19:24 +02:00
|
|
|
|
2013-01-04 20:50:54 +01:00
|
|
|
if (settings.mapType !== "scenario" && settings.StartingResources)
|
2013-08-01 00:22:12 +02:00
|
|
|
{
|
2013-01-04 20:50:54 +01:00
|
|
|
var resourceCounts = cmpPlayer.GetResourceCounts();
|
|
|
|
var newResourceCounts = {};
|
|
|
|
for (var resouces in resourceCounts)
|
|
|
|
newResourceCounts[resouces] = settings.StartingResources;
|
|
|
|
cmpPlayer.SetResourceCounts(newResourceCounts);
|
2013-08-01 00:22:12 +02:00
|
|
|
}
|
2011-01-12 13:29:00 +01:00
|
|
|
}
|
2013-03-05 23:52:48 +01:00
|
|
|
cmpAIManager.TryLoadSharedComponent();
|
|
|
|
cmpAIManager.RunGamestateInit();
|
2010-01-22 21:03:14 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
Engine.RegisterGlobal("InitGame", InitGame);
|