mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-06-21 14:43:52 +00:00
Small JS GUI performance improvement.
Don't clone and parse the civ requirement of every queried technology
each turn.
Saves 1ms per turn when selecting multiple buildings on my computer.
Make civ argument of GetTechnologyData mandatory, refs 6c97d8118b /
#3993.
Differential Revision: https://code.wildfiregames.com/D827
Agreed with: mimo, s0600204
This was SVN commit r20048.
This commit is contained in:
@@ -617,7 +617,7 @@ g_SelectionPanels.Queue = {
|
||||
if (queuedItem.unitTemplate)
|
||||
template = GetTemplateData(queuedItem.unitTemplate);
|
||||
else if (queuedItem.technologyTemplate)
|
||||
template = GetTechnologyData(queuedItem.technologyTemplate);
|
||||
template = GetTechnologyData(queuedItem.technologyTemplate, data.player);
|
||||
else
|
||||
{
|
||||
warning("Unknown production queue template " + uneval(queuedItem));
|
||||
|
||||
@@ -142,12 +142,13 @@ var g_ShowAllStatusBars = false;
|
||||
var g_IsTrainingBlocked = false;
|
||||
|
||||
/**
|
||||
* Cache simulation state (updated on every simulation update).
|
||||
* Cache of simulation state and template data (apart from TechnologyData, updated on every simulation update).
|
||||
*/
|
||||
var g_SimState;
|
||||
var g_EntityStates = {};
|
||||
var g_TemplateData = {};
|
||||
var g_TechnologyData = {};
|
||||
|
||||
var g_ResourceData = new Resources();
|
||||
|
||||
/**
|
||||
@@ -799,15 +800,14 @@ function updateIdleWorkerButton()
|
||||
else if (idleWorkerButton.sprite != prefix + "minimap-idle-highlight.png")
|
||||
idleWorkerButton.sprite = prefix + "minimap-idle.png";
|
||||
}
|
||||
|
||||
function onSimulationUpdate()
|
||||
{
|
||||
// Templates change depending on technologies and auras, so they have to be reloaded every turn.
|
||||
// g_TechnologyData data never changes, so it shouldn't be deleted.
|
||||
g_EntityStates = {};
|
||||
g_TemplateData = {};
|
||||
g_TechnologyData = {};
|
||||
|
||||
g_SimState = Engine.GuiInterfaceCall("GetSimulationState");
|
||||
|
||||
if (!g_SimState)
|
||||
return;
|
||||
|
||||
@@ -1231,7 +1231,7 @@ function updateResearchDisplay()
|
||||
if (numButtons >= 10)
|
||||
break;
|
||||
|
||||
let template = GetTechnologyData(tech);
|
||||
let template = GetTechnologyData(tech, g_Players[g_ViewedPlayer].civ);
|
||||
let button = Engine.GetGUIObjectByName("researchStartedButton[" + numButtons + "]");
|
||||
button.hidden = false;
|
||||
button.tooltip = getEntityNames(template);
|
||||
|
||||
@@ -681,8 +681,7 @@ GuiInterface.prototype.GetTechnologyData = function(player, data)
|
||||
return null;
|
||||
}
|
||||
|
||||
let cmpPlayer = QueryPlayerIDInterface(player, IID_Player);
|
||||
return GetTechnologyDataHelper(template, data.civ || cmpPlayer.GetCiv(), Resources);
|
||||
return GetTechnologyDataHelper(template, data.civ, Resources);
|
||||
};
|
||||
|
||||
GuiInterface.prototype.IsTechnologyResearched = function(player, data)
|
||||
|
||||
Reference in New Issue
Block a user