Use a gaia specific player entity.

Fix some code that assumed components exist instead of testing for them.
EntityLimits and TechnologyManager are not needed for gaia and will be
removed in the future.

This was SVN commit r16119.
This commit is contained in:
leper 2015-01-07 20:33:19 +00:00
parent c6bb3df43a
commit 4243433f94
4 changed files with 26 additions and 16 deletions

View File

@ -50,14 +50,15 @@ Armour.prototype.SetInvulnerability = function(invulnerability)
Armour.prototype.TakeDamage = function(hack, pierce, crush, source)
{
// Alert target owner of attack
var cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
var cmpAttackDetection = QueryPlayerIDInterface(cmpOwnership.GetOwner(), IID_AttackDetection);
var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
var now = cmpTimer.GetTime();
if (now > this.nextAlertTime)
var cmpAttackDetection = QueryOwnerInterface(this.entity, IID_AttackDetection);
if (cmpAttackDetection)
{
this.nextAlertTime = now + cmpAttackDetection.GetSuppressionTime();
cmpAttackDetection.AttackAlert(this.entity, source);
var now = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer).GetTime();
if (now > this.nextAlertTime)
{
this.nextAlertTime = now + cmpAttackDetection.GetSuppressionTime();
cmpAttackDetection.AttackAlert(this.entity, source);
}
}
if (this.invulnerable)

View File

@ -46,7 +46,7 @@ GuiInterface.prototype.GetSimulationState = function(player)
var ret = {
"players": []
};
var cmpPlayerMan = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
var n = cmpPlayerMan.GetNumPlayers();
for (var i = 0; i < n; ++i)
@ -54,7 +54,7 @@ GuiInterface.prototype.GetSimulationState = function(player)
var playerEnt = cmpPlayerMan.GetPlayerByID(i);
var cmpPlayerEntityLimits = Engine.QueryInterface(playerEnt, IID_EntityLimits);
var cmpPlayer = Engine.QueryInterface(playerEnt, IID_Player);
// Work out what phase we are in
var cmpTechnologyManager = Engine.QueryInterface(playerEnt, IID_TechnologyManager);
var phase = "";
@ -64,7 +64,7 @@ GuiInterface.prototype.GetSimulationState = function(player)
phase = "town";
else if (cmpTechnologyManager.IsTechnologyResearched("phase_village"))
phase = "village";
// store player ally/neutral/enemy data as arrays
var allies = [];
var mutualAllies = [];
@ -111,10 +111,8 @@ GuiInterface.prototype.GetSimulationState = function(player)
var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
if (cmpRangeManager)
{
ret.circularMap = cmpRangeManager.GetLosCircular();
}
// Add timeElapsed
var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
ret.timeElapsed = cmpTimer.GetTime();
@ -148,7 +146,8 @@ GuiInterface.prototype.GetExtendedSimulationState = function(player)
{
var playerEnt = cmpPlayerMan.GetPlayerByID(i);
var cmpPlayerStatisticsTracker = Engine.QueryInterface(playerEnt, IID_StatisticsTracker);
ret.players[i].statistics = cmpPlayerStatisticsTracker.GetStatistics();
if (cmpPlayerStatisticsTracker)
ret.players[i].statistics = cmpPlayerStatisticsTracker.GetStatistics();
}
return ret;

View File

@ -46,7 +46,7 @@ function LoadPlayerSettings(settings, newPlayers)
{
// Add player entity to engine
var civ = getSetting(playerData, playerDefaults, numPlayers, "Civ");
var template = cmpTemplateManager.TemplateExists("special/"+civ+"_player") ? "special/"+civ+"_player" : "special/player";
var template = cmpTemplateManager.TemplateExists("special/player_"+civ) ? "special/player_"+civ : "special/player";
var entID = Engine.AddEntity(template);
var cmpPlayer = Engine.QueryInterface(entID, IID_Player);
if (!cmpPlayer)
@ -67,7 +67,7 @@ function LoadPlayerSettings(settings, newPlayers)
for (var i = 0; i < numPlayers; ++i)
{
var civ = getSetting(playerData, playerDefaults, i, "Civ");
var template = cmpTemplateManager.TemplateExists("special/"+civ+"_player") ? "special/"+civ+"_player" : "special/player";
var template = cmpTemplateManager.TemplateExists("special/player_"+civ) ? "special/player_"+civ : "special/player";
var entID = cmpPlayerManager.GetPlayerByID(i);
if (cmpTemplateManager.GetCurrentTemplateName(entID) === template)
continue;

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity>
<EntityLimits>
<Limits/>
<LimitChangers/>
<LimitRemovers/>
</EntityLimits>
<Player/>
<TechnologyManager/>
</Entity>