1
0
forked from 0ad/0ad

Made changes to BuildingAI based on Philip's comments

This was SVN commit r8639.
This commit is contained in:
evanssthomas 2010-11-17 18:25:00 +00:00
parent f0476b61fb
commit f1f1a44031
2 changed files with 18 additions and 10 deletions

View File

@ -49,9 +49,11 @@ BuildingAI.prototype.OnDestroy = function()
*/
BuildingAI.prototype.SetupRangeQuery = function(owner)
{
var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
if (this.enemyUnitsQuery)
cmpRangeManager.DestroyActiveQuery(this.enemyUnitsQuery);
var players = [];
var player = Engine.QueryInterface(cmpPlayerManager.GetPlayerByID(owner), IID_Player);
@ -80,12 +82,20 @@ BuildingAI.prototype.SetupRangeQuery = function(owner)
*/
BuildingAI.prototype.OnRangeUpdate = function(msg)
{
var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
var targetUnits = cmpRangeManager.ResetActiveQuery(this.enemyUnitsQuery);
if (targetUnits.length > 0)
this.targetUnit = targetUnits[0];
else
this.targetUnit = undefined;
if (!this.targetUnit && msg.added.length > 0)
{
this.targetUnit = msg.added[0];
return;
}
else if (this.targetUnit && msg.removed.length > 0 && msg.removed.indexOf(this.targetUnit) != -1)
{
var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
var targetUnits = cmpRangeManager.ResetActiveQuery(this.enemyUnitsQuery);
if (targetUnits.length > 0)
this.targetUnit = targetUnits[0];
else
this.targetUnit = undefined;
}
};
/**
@ -127,7 +137,7 @@ BuildingAI.prototype.FireArrows = function()
var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
this.timer = cmpTimer.SetTimeout(this.entity, IID_BuildingAI, "FireArrows", timerInterval, {});
if ((this.targetUnit != undefined) && (arrowCount > 0))
if (this.targetUnit && (arrowCount > 0))
{
cmpAttack.PerformAttack("Ranged", this.targetUnit);
}

View File

@ -79,7 +79,6 @@ GarrisonHolder.prototype.AllowedToGarrison = function(entity)
{
var allowedClasses = this.GetAllowedClassesList();
var entityClasses = (Engine.QueryInterface(entity, IID_Identity)).GetClassesList();
var classNotAllowed = true;
// Check if the unit is allowed to be garrisoned inside the building
for each (var allowedClass in allowedClasses)
{
@ -100,7 +99,6 @@ GarrisonHolder.prototype.Garrison = function(entity)
{
var entityPopCost = (Engine.QueryInterface(entity, IID_Cost)).GetPopCost();
var entityClasses = (Engine.QueryInterface(entity, IID_Identity)).GetClassesList();
var allowedClasses = this.GetAllowedClassesList();
if (!this.HasEnoughHealth())
return false;