Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/binaries/data/mods/public/simulation/helpers/Transform.js
Show First 20 Lines • Show All 212 Lines • ▼ Show 20 Lines | function DeleteEntityAndReturn(ent, cmpPosition, position, angle, cmpNewPosition, ret) | ||||
Engine.DestroyEntity(ent); | Engine.DestroyEntity(ent); | ||||
return ret; | return ret; | ||||
} | } | ||||
function TransferGarrisonedUnits(oldEnt, newEnt) | function TransferGarrisonedUnits(oldEnt, newEnt) | ||||
{ | { | ||||
// Transfer garrisoned units if possible, or unload them | // Transfer garrisoned units if possible, or unload them | ||||
var cmpOldGarrison = Engine.QueryInterface(oldEnt, IID_GarrisonHolder); | let cmpOldGarrison = Engine.QueryInterface(oldEnt, IID_GarrisonHolder); | ||||
var cmpNewGarrison = Engine.QueryInterface(newEnt, IID_GarrisonHolder); | if (!cmpOldGarrison || !cmpOldGarrison.GetEntities().length) | ||||
if (!cmpNewGarrison || !cmpOldGarrison || !cmpOldGarrison.GetEntities().length) | return; | ||||
return; // nothing to do as the code will by default unload all. | |||||
var garrisonedEntities = cmpOldGarrison.GetEntities().slice(); | let cmpNewGarrison = Engine.QueryInterface(newEnt, IID_GarrisonHolder); | ||||
for (let ent of garrisonedEntities) | let entities = cmpOldGarrison.GetEntities().slice(); | ||||
for (let ent of entities) | |||||
{ | { | ||||
let cmpUnitAI = Engine.QueryInterface(ent, IID_UnitAI); | |||||
cmpOldGarrison.Eject(ent); | cmpOldGarrison.Eject(ent); | ||||
if (!cmpNewGarrison) | |||||
continue; | |||||
let cmpUnitAI = Engine.QueryInterface(ent, IID_UnitAI); | |||||
if (!cmpUnitAI) | |||||
continue; | |||||
cmpUnitAI.Autogarrison(newEnt); | cmpUnitAI.Autogarrison(newEnt); | ||||
cmpNewGarrison.Garrison(ent); | cmpNewGarrison.Garrison(ent); | ||||
} | } | ||||
} | } | ||||
Engine.RegisterGlobal("ChangeEntityTemplate", ChangeEntityTemplate); | Engine.RegisterGlobal("ChangeEntityTemplate", ChangeEntityTemplate); | ||||
Engine.RegisterGlobal("CanGarrisonedChangeTemplate", CanGarrisonedChangeTemplate); | Engine.RegisterGlobal("CanGarrisonedChangeTemplate", CanGarrisonedChangeTemplate); | ||||
Engine.RegisterGlobal("ObstructionsBlockingTemplateChange", ObstructionsBlockingTemplateChange); | Engine.RegisterGlobal("ObstructionsBlockingTemplateChange", ObstructionsBlockingTemplateChange); |
Wildfire Games · Phabricator