Ticket #1646: techtiphack3.diff
File techtiphack3.diff, 5.4 KB (added by , 12 years ago) |
---|
-
gui/session/utility_functions.js
386 386 return "\n\n[font=\"serif-bold-13\"][color=\"red\"]Insufficient resources:[/color][/font]\n" + formatted.join(", "); 387 387 } 388 388 389 /** 390 * Returns a formatted requirements tooltip. 391 */ 392 function getFormattedRequirementsTooltip(tmpl, vars) 393 { 394 // TODO: Support entire requirements format. 395 if (vars.tech) 396 { 397 return tmpl; 398 } 399 else if (vars.all) 400 { 401 return tmpl; 402 } 403 else if (vars.any) 404 { 405 return tmpl; 406 } 407 else if (vars.class) 408 { 409 // TODO: Replace with human-readable class name. 410 var tooltip = tmpl.replace("%class%", vars.class); 411 if (vars.number && vars.number > 0) 412 { 413 tooltip = tooltip.replace("%number%", vars.number); 414 } 415 else 416 { 417 tooltip = tooltip.replace("%number%", 0); 418 } 419 if (vars.numberCount && vars.numberCount > 0) 420 { 421 tooltip = tooltip.replace("%numberCount%", vars.numberCount); 422 } 423 else 424 { 425 tooltip = tooltip.replace("%numberCount%", 0); 426 } 427 if (vars.numberLeft && vars.numberLeft > 0) 428 { 429 tooltip = tooltip.replace("%numberLeft%", vars.numberLeft); 430 } 431 else 432 { 433 tooltip = tooltip.replace("%numberLeft%", 0); 434 } 435 return tooltip; 436 } 437 438 return tmpl; 439 } 440 389 441 function getEntitySpeed(template) 390 442 { 391 443 var speed = ""; -
gui/session/unit_commands.js
575 575 if (guiName == RESEARCH && !Engine.GuiInterfaceCall("CheckTechnologyRequirements", entType)) 576 576 { 577 577 button.enabled = false; 578 button.tooltip += "\n" + GetTechnologyData(entType).requirementsTooltip; 578 var reqVars = Engine.GuiInterfaceCall("GetRequirementsVars", template.requirements); 579 button.tooltip += "\n" + getFormattedRequirementsTooltip(GetTechnologyData(entType).requirementsTooltip, reqVars); 579 580 grayscale = "grayscale:"; 580 581 } 581 582 -
simulation/components/GuiInterface.js
516 516 } 517 517 ret.tooltip = template.tooltip; 518 518 519 ret.requirements = template.requirements; 519 520 if (template.requirementsTooltip) 520 521 ret.requirementsTooltip = template.requirementsTooltip; 521 522 else … … 575 576 return cmpPlayer.GetNeededResources(amounts); 576 577 }; 577 578 579 GuiInterface.prototype.GetRequirementsVars = function(player, reqs) 580 { 581 var cmpTechnologyManager = QueryPlayerIDInterface(player, IID_TechnologyManager); 582 return cmpTechnologyManager.GetRequirementsVars(reqs); 583 }; 578 584 579 585 GuiInterface.prototype.PushNotification = function(notification) 580 586 { … … 1627 1633 "CheckTechnologyRequirements": 1, 1628 1634 "GetStartedResearch": 1, 1629 1635 "GetNeededResources": 1, 1636 "GetRequirementsVars": 1, 1630 1637 "GetNextNotification": 1, 1631 1638 1632 1639 "GetAvailableFormations": 1, -
simulation/components/TechnologyManager.js
163 163 return false; 164 164 }; 165 165 166 167 // Private function for returning a set of measures pertaining to requirements 168 TechnologyManager.prototype.GetRequirementsVars = function (reqs) 169 { 170 var reqVars = {}; 171 172 // If there are no requirements then all requirements are met 173 if (!reqs) 174 return false; 175 176 if (reqs.tech) 177 { 178 return false; 179 } 180 else if (reqs.all) 181 { 182 return false; 183 } 184 else if (reqs.any) 185 { 186 return false; 187 } 188 else if (reqs.class) 189 { 190 reqVars.class = reqs.class; 191 if (reqs.numberOfTypes) 192 return false; 193 else if (reqs.number) 194 { 195 reqVars.number = reqs.number; 196 if (!this.classCounts[reqs.class]) 197 { 198 reqVars.numberCount = 0; 199 reqVars.numberLeft = reqs.number; 200 } 201 else if (this.classCounts[reqs.class] < reqs.number) 202 { 203 reqVars.numberCount = this.classCounts[reqs.class]; 204 reqVars.numberLeft = reqs.number - this.classCounts[reqs.class]; 205 } 206 else 207 reqVars = false; 208 return reqVars; 209 } 210 } 211 212 // The technologies requirements are not a recognised format 213 error("GetRequirementsVars: Bad requirements " + uneval(reqs)); 214 return false; 215 }; 216 166 217 TechnologyManager.prototype.OnGlobalOwnershipChanged = function (msg) 167 218 { 168 219 // This automatically updates typeCounts, classCounts and typeCountsByClass -
simulation/data/technologies/phase_town.json
3 3 "description": "Advances from a small village to a bustling town, ready to expand rapidly.", 4 4 "cost": { "food": 500, "wood": 500, "stone": 0, "metal": 0 }, 5 5 "requirements": { "class": "Village", "number": 6 }, 6 "requirementsTooltip": "Requires 5 Village Phase structures (except Palisades and Farm Fields).",6 "requirementsTooltip": "Requires 6 Village Phase structures (except Palisades and Farm Fields). ([color=\"red\"]%numberCount%/%number%[/color] built.)", 7 7 "supersedes": "phase_village", 8 8 "icon": "town_phase.png", 9 9 "researchTime": 30,