Revert an unoptimized GUI update from f7e591c9f2. Instead, notify directly the GUI in case of miraged entities, and treat them the same way we treat renamed entities.

Fixes #2778

This was SVN commit r15703.
This commit is contained in:
Nicolas Auvray 2014-09-06 13:34:54 +00:00
parent 001e6f6ca3
commit 2b1efa5035
3 changed files with 19 additions and 14 deletions

View File

@ -235,10 +235,8 @@ EntitySelection.prototype.getTemplateNames = function()
*/
EntitySelection.prototype.update = function()
{
this.checkRenamedEntities();
var miraged = {};
var changed = false;
this.checkRenamedEntities();
for each (var ent in this.selected)
{
var entState = GetEntityState(ent);
@ -252,13 +250,6 @@ EntitySelection.prototype.update = function()
continue;
}
// Manually replace newly miraged entities by their mirages
if (entState.fogging && entState.fogging.mirage)
{
miraged[ent] = entState.fogging.mirage;
continue;
}
// Remove non-visible units (e.g. moved back into fog-of-war)
if (entState.visibility == "hidden")
{
@ -273,9 +264,6 @@ EntitySelection.prototype.update = function()
continue;
}
}
this.rebuildSelection(miraged);
if (changed)
this.onChange();
};

View File

@ -104,6 +104,10 @@ Fogging.prototype.LoadMirage = function(player)
cmpResourceSupply.GetType(),
cmpResourceSupply.IsInfinite()
);
// Notify the GUI the entity has been replaced by a mirage, in case it is selected at this moment
var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
cmpGuiInterface.AddMiragedEntity(player, this.entity, this.mirages[player]);
};
Fogging.prototype.ForceMiraging = function(player)

View File

@ -22,6 +22,7 @@ GuiInterface.prototype.Init = function()
this.placementWallLastAngle = 0;
this.notifications = [];
this.renamedEntities = [];
this.miragedEntities = [];
this.timeNotificationID = 1;
this.timeNotifications = [];
this.entsRallyPointsDisplayed = [];
@ -148,12 +149,24 @@ GuiInterface.prototype.GetExtendedSimulationState = function(player)
GuiInterface.prototype.GetRenamedEntities = function(player)
{
return this.renamedEntities;
if (this.miragedEntities[player])
return this.renamedEntities.concat(this.miragedEntities[player]);
else
return this.renamedEntities;
};
GuiInterface.prototype.ClearRenamedEntities = function(player)
{
this.renamedEntities = [];
this.miragedEntities = [];
};
GuiInterface.prototype.AddMiragedEntity = function(player, entity, mirage)
{
if (player >= this.miragedEntities.length)
this.miragedEntities[player] = [];
this.miragedEntities[player].push({"entity": entity, "newentity": mirage});
};
/**