mirror of
https://gitea.wildfiregames.com/0ad/0ad
synced 2026-06-16 05:13:58 -07:00
Remove usage of entityObj from Destroy event
`entityObj` is not available on clients which just have rejoined. As not all clients have access to it the data shouldn't be used for anything elaborate.
This commit is contained in:
parent
0a2294171e
commit
b6243966f3
4 changed files with 10 additions and 20 deletions
|
|
@ -40,14 +40,11 @@ PetraBot.prototype.CustomInit = function(gameState)
|
|||
{
|
||||
for (const i in this.savedEvents[key])
|
||||
{
|
||||
if (!this.savedEvents[key][i].entityObj)
|
||||
continue;
|
||||
const evt = this.savedEvents[key][i];
|
||||
const evtmod = {};
|
||||
for (const keyevt in evt)
|
||||
{
|
||||
evtmod[keyevt] = evt[keyevt];
|
||||
evtmod.entityObj = new Entity(gameState.sharedScript, evt.entityObj);
|
||||
this.savedEvents[key][i] = evtmod;
|
||||
}
|
||||
}
|
||||
|
|
@ -143,13 +140,13 @@ PetraBot.prototype.Serialize = function()
|
|||
savedEvents[key] = this.savedEvents[key].slice();
|
||||
for (const i in savedEvents[key])
|
||||
{
|
||||
if (!savedEvents[key][i] || !savedEvents[key][i].entityObj)
|
||||
if (!savedEvents[key][i])
|
||||
continue;
|
||||
const evt = savedEvents[key][i];
|
||||
const evtmod = {};
|
||||
for (const keyevt in evt)
|
||||
evtmod[keyevt] = evt[keyevt];
|
||||
evtmod.entityObj = evt.entityObj._entity;
|
||||
evtmod.entityObj = undefined;
|
||||
savedEvents[key][i] = evtmod;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,23 +135,18 @@ BasesManager.prototype.checkEvents = function(gameState, events)
|
|||
for (const evt of events.Destroy)
|
||||
{
|
||||
// Let's check we haven't lost an important building here.
|
||||
if (evt && !evt.SuccessfulFoundation && evt.entityObj && evt.metadata && evt.metadata[PlayerID] &&
|
||||
evt.metadata[PlayerID].base)
|
||||
if (evt && !evt.SuccessfulFoundation && evt.metadata?.[PlayerID]?.base)
|
||||
{
|
||||
const ent = evt.entityObj;
|
||||
if (evt?.metadata?.[PlayerID]?.assignedResource)
|
||||
{
|
||||
this.getBaseByID(evt.metadata[PlayerID].base)
|
||||
.removeFromAssignedDropsite(evt.entity);
|
||||
}
|
||||
if (ent.owner() != PlayerID)
|
||||
continue;
|
||||
// A new base foundation was created and destroyed on the same (AI) turn
|
||||
if (evt.metadata[PlayerID].base == -1 || evt.metadata[PlayerID].base == -2)
|
||||
continue;
|
||||
const base = this.getBaseByID(evt.metadata[PlayerID].base);
|
||||
if (ent.resourceDropsiteTypes() && ent.hasClass("Structure"))
|
||||
base.removeDropsite(gameState, evt.entity);
|
||||
base.removeDropsite(gameState, evt.entity);
|
||||
if (evt.metadata[PlayerID].baseAnchor && evt.metadata[PlayerID].baseAnchor === true)
|
||||
base.anchorLost(gameState);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -563,10 +563,9 @@ DefenseArmy.prototype.checkEvents = function(gameState, events)
|
|||
|
||||
for (const evt of events.Destroy)
|
||||
{
|
||||
const entityObj = evt.entityObj || undefined;
|
||||
// we may have capture+destroy, so do not trust owner and check all possibilities
|
||||
this.removeOwn(gameState, evt.entity, entityObj);
|
||||
this.removeFoe(gameState, evt.entity, entityObj);
|
||||
this.removeOwn(gameState, evt.entity);
|
||||
this.removeFoe(gameState, evt.entity);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -288,15 +288,14 @@ NavalManager.prototype.checkEvents = function(gameState, queues, events)
|
|||
|
||||
for (const evt of events.Destroy)
|
||||
{
|
||||
if (!evt.entityObj || evt.entityObj.owner() !== PlayerID || !evt.metadata || !evt.metadata[PlayerID])
|
||||
const transporter = evt.metadata?.[PlayerID]?.transporter;
|
||||
if (!transporter)
|
||||
continue;
|
||||
if (!evt.entityObj.hasClass("Ship") || !evt.metadata[PlayerID].transporter)
|
||||
continue;
|
||||
const plan = this.getPlan(evt.metadata[PlayerID].transporter);
|
||||
const plan = this.getPlan(transporter);
|
||||
if (!plan)
|
||||
continue;
|
||||
|
||||
const shipId = evt.entityObj.id();
|
||||
const shipId = evt.entity;
|
||||
if (this.Config.debug > 1)
|
||||
{
|
||||
aiWarn("one ship " + shipId + " from plan " + plan.ID + " destroyed during " +
|
||||
|
|
|
|||
Loading…
Reference in a new issue