forked from 0ad/0ad
Show cost in tooltips for batches. Closes #1717, patch by zoot.
This was SVN commit r12876.
This commit is contained in:
parent
a326aa63a9
commit
27ae648d9c
@ -434,7 +434,14 @@ function setupUnitPanel(guiName, usedPanels, unitEntState, playerState, items, c
|
||||
if (template.tooltip)
|
||||
tooltip += "\n[font=\"serif-13\"]" + template.tooltip + "[/font]";
|
||||
|
||||
tooltip += "\n" + getEntityCostTooltip(template);
|
||||
var [buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch] =
|
||||
getTrainingBatchStatus(playerState, unitEntState.id, entType, selection);
|
||||
if (Engine.HotkeyIsPressed("session.batchtrain"))
|
||||
{
|
||||
trainNum = buildingsCountToTrainFullBatch * fullBatchSize + remainderBatch;
|
||||
}
|
||||
|
||||
tooltip += "\n" + getEntityCostTooltip(template, trainNum, unitEntState.id);
|
||||
|
||||
if (template.health)
|
||||
tooltip += "\n[font=\"serif-bold-13\"]Health:[/font] " + template.health;
|
||||
@ -449,8 +456,6 @@ function setupUnitPanel(guiName, usedPanels, unitEntState, playerState, items, c
|
||||
getEntityLimitAndCount(playerState, entType)
|
||||
tooltip += formatLimitString(trainEntLimit, trainEntCount);
|
||||
|
||||
var [buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch] =
|
||||
getTrainingBatchStatus(playerState, unitEntState.id, entType, selection);
|
||||
tooltip += formatBatchTrainingString(buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch);
|
||||
var key = g_ConfigDB.system["hotkey.session.queueunit." + (i+1)];
|
||||
if (key !== undefined)
|
||||
|
@ -262,15 +262,22 @@ function getCostComponentDisplayName(costComponentName)
|
||||
/**
|
||||
* Helper function for getEntityCostTooltip.
|
||||
*/
|
||||
function getEntityCostComponentsTooltipString(template)
|
||||
function getEntityCostComponentsTooltipString(template, trainNum, entity)
|
||||
{
|
||||
var totalCosts = {};
|
||||
if (!trainNum)
|
||||
trainNum = 1;
|
||||
for (var r in template.cost)
|
||||
totalCosts[r] = Math.floor(template.cost[r] * trainNum);
|
||||
totalCosts.time = (entity)?Math.ceil(Engine.GuiInterfaceCall("GetBatchTime", {"entity": entity, "batchSize": trainNum})):template.cost.time;
|
||||
|
||||
var costs = [];
|
||||
if (template.cost.food) costs.push(getCostComponentDisplayName("food") + " " + template.cost.food);
|
||||
if (template.cost.wood) costs.push(getCostComponentDisplayName("wood") + " " + template.cost.wood);
|
||||
if (template.cost.metal) costs.push(getCostComponentDisplayName("metal") + " " + template.cost.metal);
|
||||
if (template.cost.stone) costs.push(getCostComponentDisplayName("stone") + " " + template.cost.stone);
|
||||
if (template.cost.population) costs.push(getCostComponentDisplayName("population") + " " + template.cost.population);
|
||||
if (template.cost.time) costs.push(getCostComponentDisplayName("time") + " " + template.cost.time);
|
||||
if (template.cost.food) costs.push(getCostComponentDisplayName("food") + " " + totalCosts.food);
|
||||
if (template.cost.wood) costs.push(getCostComponentDisplayName("wood") + " " + totalCosts.wood);
|
||||
if (template.cost.metal) costs.push(getCostComponentDisplayName("metal") + " " + totalCosts.metal);
|
||||
if (template.cost.stone) costs.push(getCostComponentDisplayName("stone") + " " + totalCosts.stone);
|
||||
if (template.cost.population) costs.push(getCostComponentDisplayName("population") + " " + totalCosts.population);
|
||||
if (template.cost.time) costs.push(getCostComponentDisplayName("time") + " " + totalCosts.time);
|
||||
return costs;
|
||||
}
|
||||
|
||||
@ -335,7 +342,7 @@ function getWallPieceTooltip(wallTypes)
|
||||
/**
|
||||
* Returns the cost information to display in the specified entity's construction button tooltip.
|
||||
*/
|
||||
function getEntityCostTooltip(template)
|
||||
function getEntityCostTooltip(template, trainNum, entity)
|
||||
{
|
||||
var cost = "[font=\"serif-bold-13\"]Costs:[/font] ";
|
||||
|
||||
@ -357,7 +364,7 @@ function getEntityCostTooltip(template)
|
||||
}
|
||||
else if (template.cost)
|
||||
{
|
||||
var costs = getEntityCostComponentsTooltipString(template);
|
||||
var costs = getEntityCostComponentsTooltipString(template, trainNum, entity);
|
||||
cost += costs.join(" ");
|
||||
}
|
||||
else
|
||||
|
@ -1617,6 +1617,18 @@ GuiInterface.prototype.CanAttack = function(player, data)
|
||||
return cmpAttack.CanAttack(data.target);
|
||||
};
|
||||
|
||||
/*
|
||||
* Returns batch build time.
|
||||
*/
|
||||
GuiInterface.prototype.GetBatchTime = function(player, data)
|
||||
{
|
||||
var cmpProductionQueue = Engine.QueryInterface(data.entity, IID_ProductionQueue);
|
||||
if (!cmpProductionQueue)
|
||||
return 0;
|
||||
|
||||
return cmpProductionQueue.GetBatchTime(data.batchSize);
|
||||
};
|
||||
|
||||
GuiInterface.prototype.SetPathfinderDebugOverlay = function(player, enabled)
|
||||
{
|
||||
var cmpPathfinder = Engine.QueryInterface(SYSTEM_ENTITY, IID_Pathfinder);
|
||||
@ -1688,6 +1700,7 @@ var exposedFunctions = {
|
||||
"GetTradingRouteGain": 1,
|
||||
"GetTradingDetails": 1,
|
||||
"CanAttack": 1,
|
||||
"GetBatchTime": 1,
|
||||
|
||||
"SetPathfinderDebugOverlay": 1,
|
||||
"SetObstructionDebugOverlay": 1,
|
||||
|
@ -184,8 +184,7 @@ ProductionQueue.prototype.AddBatch = function(templateName, type, count, metadat
|
||||
return;
|
||||
|
||||
// Apply a time discount to larger batches.
|
||||
// TODO: work out what equation we should use here.
|
||||
var timeMult = Math.pow(count, 0.7) * cmpPlayer.cheatTimeMultiplier;
|
||||
var timeMult = this.GetBatchTime(count);
|
||||
|
||||
// We need the costs after tech modifications
|
||||
// Obviously we don't have the entities yet, so we must use template data
|
||||
@ -394,6 +393,16 @@ ProductionQueue.prototype.ResetQueue = function()
|
||||
this.RemoveBatch(this.queue[0].id);
|
||||
};
|
||||
|
||||
/*
|
||||
* Returns batch build time.
|
||||
*/
|
||||
ProductionQueue.prototype.GetBatchTime = function(batchSize)
|
||||
{
|
||||
var cmpPlayer = QueryOwnerInterface(this.entity, IID_Player);
|
||||
// TODO: work out what equation we should use here.
|
||||
return Math.pow(batchSize, 0.7) * cmpPlayer.cheatTimeMultiplier;
|
||||
};
|
||||
|
||||
ProductionQueue.prototype.OnOwnershipChanged = function(msg)
|
||||
{
|
||||
if (msg.from != -1)
|
||||
|
Loading…
Reference in New Issue
Block a user