Fix problem with sprintf errors being thrown when the AI places structures on the wrong places, make the code more uniform. Fixes #2485
This was SVN commit r15090.
This commit is contained in:
parent
a36a0bbd87
commit
ace3269768
@ -129,9 +129,13 @@ function updateBuildingPlacementPreview()
|
||||
{
|
||||
if (result.message && result.parameters)
|
||||
{
|
||||
// translate the message parameters
|
||||
translateObjectKeys(result.parameters, Object.keys(result.parameters), true)
|
||||
placementSupport.tooltipMessage = sprintf(translate(result.message), result.parameters);
|
||||
var message = result.message;
|
||||
if (result.translateMessage)
|
||||
message = translate(message);
|
||||
var parameters = result.parameters;
|
||||
if (result.translateParameters)
|
||||
translateObjectKeys(parameters, result.translateParameters);
|
||||
placementSupport.tooltipMessage = sprintf(message, parameters);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -64,9 +64,11 @@ BuildRestrictions.prototype.Init = function()
|
||||
*
|
||||
* Returns result object:
|
||||
* {
|
||||
* "success": true iff the placement is valid, else false
|
||||
* "message": message to display in UI for invalid placement, else ""
|
||||
* "parameters": parameters to use in the GUI message
|
||||
* "success": true iff the placement is valid, else false
|
||||
* "message": message to display in UI for invalid placement, else ""
|
||||
* "parameters": parameters to use in the GUI message
|
||||
* "translateMessage": always true
|
||||
* "translateParameters": list of parameters to translate
|
||||
* }
|
||||
*
|
||||
* Note: The entity which is used to check this should be a preview entity
|
||||
@ -83,7 +85,9 @@ BuildRestrictions.prototype.CheckPlacement = function()
|
||||
"message": markForTranslation("%(name)s cannot be built due to unknown error"),
|
||||
"parameters": {
|
||||
"name": name,
|
||||
}
|
||||
},
|
||||
"translateMessage": true,
|
||||
"translateParameters": ["name"],
|
||||
};
|
||||
|
||||
// TODO: AI has no visibility info
|
||||
@ -193,6 +197,8 @@ BuildRestrictions.prototype.CheckPlacement = function()
|
||||
if (territoryFail)
|
||||
{
|
||||
result.message = markForTranslation("%(name)s cannot be built in %(territoryType)s territory. Valid territories: %(validTerritories)s");
|
||||
result.translateParameters.push("territoryType");
|
||||
result.translateParameters.push("validTerritories");
|
||||
result.parameters.territoryType = {"context": "Territory type", "message": territoryType};
|
||||
// gui code will join this array to a string
|
||||
result.parameters.validTerritories = {"context": "Territory type list", "list": this.GetTerritories()};
|
||||
@ -255,6 +261,7 @@ BuildRestrictions.prototype.CheckPlacement = function()
|
||||
{
|
||||
result.message = markForTranslation("%(name)s too close to a %(category)s, must be at least %(distance)s meters away");
|
||||
result.parameters.category = cat;
|
||||
result.translateParameters.push("category");
|
||||
result.parameters.distance = this.template.Distance.MinDistance;
|
||||
return result; // Fail
|
||||
}
|
||||
@ -267,6 +274,7 @@ BuildRestrictions.prototype.CheckPlacement = function()
|
||||
{
|
||||
result.message = markForTranslation("%(name)s too far from a %(category)s, must be within %(distance)s meters");
|
||||
result.parameters.category = cat;
|
||||
result.translateParameters.push("category");
|
||||
result.parameters.distance = this.template.Distance.MinDistance;
|
||||
return result; // Fail
|
||||
}
|
||||
|
@ -1018,9 +1018,11 @@ GuiInterface.prototype.DisplayRallyPoint = function(player, cmd)
|
||||
*
|
||||
* Returns result object from CheckPlacement:
|
||||
* {
|
||||
* "success": true iff the placement is valid, else false
|
||||
* "message": message to display in UI for invalid placement, else ""
|
||||
"parameters": parameters to use in the message
|
||||
* "success": true iff the placement is valid, else false
|
||||
* "message": message to display in UI for invalid placement, else ""
|
||||
* "parameters": parameters to use in the message
|
||||
* "translateMessage": localisation info
|
||||
* "translateParameters": localisation info
|
||||
* }
|
||||
*/
|
||||
GuiInterface.prototype.SetBuildingPlacementPreview = function(player, cmd)
|
||||
@ -1029,6 +1031,8 @@ GuiInterface.prototype.SetBuildingPlacementPreview = function(player, cmd)
|
||||
"success": false,
|
||||
"message": "",
|
||||
"parameters": {},
|
||||
"translateMessage": false,
|
||||
"translateParameters": [],
|
||||
}
|
||||
|
||||
// See if we're changing template
|
||||
|
@ -805,7 +805,8 @@ function TryConstructBuilding(player, cmpPlayer, controlAllUnits, cmd)
|
||||
}
|
||||
|
||||
var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
|
||||
cmpGuiInterface.PushNotification({ "player": player, "message": ret.message });
|
||||
ret.player = player;
|
||||
cmpGuiInterface.PushNotification(ret);
|
||||
|
||||
// Remove the foundation because the construction was aborted
|
||||
// move it out of world because it's not destroyed immediately.
|
||||
|
Loading…
Reference in New Issue
Block a user