Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/simulation/components/BuildingAI.js
Show First 20 Lines • Show All 100 Lines • ▼ Show 20 Lines | BuildingAI.prototype.OnValueModification = function(msg) | ||||
this.SetupGaiaRangeQuery(); | this.SetupGaiaRangeQuery(); | ||||
}; | }; | ||||
/** | /** | ||||
* Setup the Range Query to detect units coming in & out of range | * Setup the Range Query to detect units coming in & out of range | ||||
*/ | */ | ||||
BuildingAI.prototype.SetupRangeQuery = function() | BuildingAI.prototype.SetupRangeQuery = function() | ||||
{ | { | ||||
var cmpAttack = Engine.QueryInterface(this.entity, IID_Attack); | let cmpAttack = Engine.QueryInterface(this.entity, IID_Attack); | ||||
if (!cmpAttack) | if (!cmpAttack) | ||||
return; | return; | ||||
var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); | let cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); | ||||
if (this.enemyUnitsQuery) | if (this.enemyUnitsQuery) | ||||
{ | { | ||||
cmpRangeManager.DestroyActiveQuery(this.enemyUnitsQuery); | cmpRangeManager.DestroyActiveQuery(this.enemyUnitsQuery); | ||||
this.enemyUnitsQuery = undefined; | this.enemyUnitsQuery = undefined; | ||||
} | } | ||||
var cmpPlayer = QueryOwnerInterface(this.entity); | let cmpPlayer = QueryOwnerInterface(this.entity); | ||||
if (!cmpPlayer) | if (!cmpPlayer) | ||||
return; | return; | ||||
var enemies = cmpPlayer.GetEnemies(); | let enemies = cmpPlayer.GetEnemies(); | ||||
if (enemies.length && enemies[0] == 0) | if (enemies.length && enemies[0] == 0) | ||||
enemies.shift(); // remove gaia | enemies.shift(); // remove gaia | ||||
if (!enemies.length) | if (!enemies.length) | ||||
return; | return; | ||||
var range = cmpAttack.GetRange(attackType); | let range = cmpAttack.GetRange(attackType); | ||||
this.enemyUnitsQuery = cmpRangeManager.CreateActiveParabolicQuery( | this.enemyUnitsQuery = cmpRangeManager.CreateActiveParabolicQuery( | ||||
Stan: Just yOrigin maybe. | |||||
this.entity, range.min, range.max, range.elevationBonus, | this.entity, range.min, range.max, range.elevationRangeBonus, | ||||
enemies, IID_DamageReceiver, cmpRangeManager.GetEntityFlagMask("normal")); | enemies, IID_DamageReceiver, cmpRangeManager.GetEntityFlagMask("normal")); | ||||
cmpRangeManager.EnableActiveQuery(this.enemyUnitsQuery); | cmpRangeManager.EnableActiveQuery(this.enemyUnitsQuery); | ||||
}; | }; | ||||
// Set up a range query for Gaia units within LOS range which can be attacked. | // Set up a range query for Gaia units within LOS range which can be attacked. | ||||
// This should be called whenever our ownership changes. | // This should be called whenever our ownership changes. | ||||
BuildingAI.prototype.SetupGaiaRangeQuery = function() | BuildingAI.prototype.SetupGaiaRangeQuery = function() | ||||
{ | { | ||||
var cmpAttack = Engine.QueryInterface(this.entity, IID_Attack); | let cmpAttack = Engine.QueryInterface(this.entity, IID_Attack); | ||||
if (!cmpAttack) | if (!cmpAttack) | ||||
return; | return; | ||||
var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); | let cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); | ||||
if (this.gaiaUnitsQuery) | if (this.gaiaUnitsQuery) | ||||
{ | { | ||||
cmpRangeManager.DestroyActiveQuery(this.gaiaUnitsQuery); | cmpRangeManager.DestroyActiveQuery(this.gaiaUnitsQuery); | ||||
this.gaiaUnitsQuery = undefined; | this.gaiaUnitsQuery = undefined; | ||||
} | } | ||||
var cmpPlayer = QueryOwnerInterface(this.entity); | let cmpPlayer = QueryOwnerInterface(this.entity); | ||||
if (!cmpPlayer || !cmpPlayer.IsEnemy(0)) | if (!cmpPlayer || !cmpPlayer.IsEnemy(0)) | ||||
return; | return; | ||||
var range = cmpAttack.GetRange(attackType); | let range = cmpAttack.GetRange(attackType); | ||||
// This query is only interested in Gaia entities that can attack. | // This query is only interested in Gaia entities that can attack. | ||||
this.gaiaUnitsQuery = cmpRangeManager.CreateActiveParabolicQuery( | this.gaiaUnitsQuery = cmpRangeManager.CreateActiveParabolicQuery( | ||||
this.entity, range.min, range.max, range.elevationBonus, | this.entity, range.min, range.max, range.elevationRangeBonus, | ||||
[0], IID_Attack, cmpRangeManager.GetEntityFlagMask("normal")); | [0], IID_Attack, cmpRangeManager.GetEntityFlagMask("normal")); | ||||
cmpRangeManager.EnableActiveQuery(this.gaiaUnitsQuery); | cmpRangeManager.EnableActiveQuery(this.gaiaUnitsQuery); | ||||
}; | }; | ||||
/** | /** | ||||
* Called when units enter or leave range | * Called when units enter or leave range | ||||
*/ | */ | ||||
▲ Show 20 Lines • Show All 209 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator
Just yOrigin maybe.