forked from 0ad/0ad
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:
parent
c6bb3df43a
commit
4243433f94
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity>
|
||||
<EntityLimits>
|
||||
<Limits/>
|
||||
<LimitChangers/>
|
||||
<LimitRemovers/>
|
||||
</EntityLimits>
|
||||
<Player/>
|
||||
<TechnologyManager/>
|
||||
</Entity>
|
Loading…
Reference in New Issue
Block a user