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) BuildingAI.prototype.SetupRangeQuery = function(owner)
{ {
var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager); var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
if (this.enemyUnitsQuery)
cmpRangeManager.DestroyActiveQuery(this.enemyUnitsQuery);
var players = []; var players = [];
var player = Engine.QueryInterface(cmpPlayerManager.GetPlayerByID(owner), IID_Player); var player = Engine.QueryInterface(cmpPlayerManager.GetPlayerByID(owner), IID_Player);
@ -80,12 +82,20 @@ BuildingAI.prototype.SetupRangeQuery = function(owner)
*/ */
BuildingAI.prototype.OnRangeUpdate = function(msg) BuildingAI.prototype.OnRangeUpdate = function(msg)
{ {
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 cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
var targetUnits = cmpRangeManager.ResetActiveQuery(this.enemyUnitsQuery); var targetUnits = cmpRangeManager.ResetActiveQuery(this.enemyUnitsQuery);
if (targetUnits.length > 0) if (targetUnits.length > 0)
this.targetUnit = targetUnits[0]; this.targetUnit = targetUnits[0];
else else
this.targetUnit = undefined; this.targetUnit = undefined;
}
}; };
/** /**
@ -127,7 +137,7 @@ BuildingAI.prototype.FireArrows = function()
var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
this.timer = cmpTimer.SetTimeout(this.entity, IID_BuildingAI, "FireArrows", timerInterval, {}); 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); cmpAttack.PerformAttack("Ranged", this.targetUnit);
} }

View File

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