Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/session/menu.js
Show First 20 Lines • Show All 284 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
function resizeDiplomacyDialog() | function resizeDiplomacyDialog() | ||||
{ | { | ||||
let dialog = Engine.GetGUIObjectByName("diplomacyDialogPanel"); | let dialog = Engine.GetGUIObjectByName("diplomacyDialogPanel"); | ||||
let size = dialog.size; | let size = dialog.size; | ||||
let tribSize = Engine.GetGUIObjectByName("diplomacyPlayer[0]_tribute[0]").size; | let tribSize = Engine.GetGUIObjectByName("diplomacyPlayer[0]_tribute[0]").size; | ||||
let widthOffset = g_ResourceData.GetCodes().length * (tribSize.right - tribSize.left) / 2; | let widthOffset = g_ResourceData.GetCodes("tributable").length * (tribSize.right - tribSize.left) / 2; | ||||
size.left -= widthOffset; | size.left -= widthOffset; | ||||
size.right += widthOffset; | size.right += widthOffset; | ||||
let firstRow = Engine.GetGUIObjectByName("diplomacyPlayer[0]").size; | let firstRow = Engine.GetGUIObjectByName("diplomacyPlayer[0]").size; | ||||
let heightOffset = (g_Players.length - 1) * (firstRow.bottom - firstRow.top) / 2; | let heightOffset = (g_Players.length - 1) * (firstRow.bottom - firstRow.top) / 2; | ||||
size.top -= heightOffset; | size.top -= heightOffset; | ||||
size.bottom += heightOffset; | size.bottom += heightOffset; | ||||
▲ Show 20 Lines • Show All 184 Lines • ▼ Show 20 Lines | button.onPress = (function(player, stance) { return function() { | ||||
"to": stance.toLowerCase() | "to": stance.toLowerCase() | ||||
}); | }); | ||||
}; })(i, stance); | }; })(i, stance); | ||||
} | } | ||||
} | } | ||||
function diplomacyFormatTributeButtons(i, hidden) | function diplomacyFormatTributeButtons(i, hidden) | ||||
{ | { | ||||
let resCodes = g_ResourceData.GetCodes(); | let resCodes = g_ResourceData.GetCodes("tributable"); | ||||
let r = 0; | let r = 0; | ||||
for (let resCode of resCodes) | for (let resCode of resCodes) | ||||
{ | { | ||||
let button = Engine.GetGUIObjectByName("diplomacyPlayer[" + (i - 1) + "]_tribute[" + r + "]"); | let button = Engine.GetGUIObjectByName("diplomacyPlayer[" + (i - 1) + "]_tribute[" + r + "]"); | ||||
if (!button) | if (!button) | ||||
{ | { | ||||
warn("Current GUI limits prevent displaying more than " + r + " tribute buttons!"); | warn("Current GUI limits prevent displaying more than " + r + " tribute buttons!"); | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 130 Lines • ▼ Show 20 Lines | |||||
function resizeTradeDialog() | function resizeTradeDialog() | ||||
{ | { | ||||
let dialog = Engine.GetGUIObjectByName("tradeDialogPanel"); | let dialog = Engine.GetGUIObjectByName("tradeDialogPanel"); | ||||
let size = dialog.size; | let size = dialog.size; | ||||
let width = size.right - size.left; | let width = size.right - size.left; | ||||
let tradeSize = Engine.GetGUIObjectByName("tradeResource[0]").size; | let tradeSize = Engine.GetGUIObjectByName("tradeResource[0]").size; | ||||
width += g_ResourceData.GetCodes().length * (tradeSize.right - tradeSize.left); | width += g_ResourceData.GetCodes("tradable").length * (tradeSize.right - tradeSize.left); | ||||
Freagarach: `width += g_ResourceData.GetCodes().length * (tradeSize.right - tradeSize.left);`
To avoid… | |||||
wraitiiUnsubmitted Done Inline ActionsLargest of both would be best. Kind of an annoyingly named panel :p wraitii: Largest of both would be best. Kind of an annoyingly named panel :p | |||||
size.left = -width / 2; | size.left = -width / 2; | ||||
size.right = width / 2; | size.right = width / 2; | ||||
dialog.size = size; | dialog.size = size; | ||||
} | } | ||||
function openTrade() | function openTrade() | ||||
{ | { | ||||
closeOpenDialogs(); | closeOpenDialogs(); | ||||
if (g_ViewedPlayer < 1) | if (g_ViewedPlayer < 1) | ||||
return; | return; | ||||
g_IsTradeOpen = true; | g_IsTradeOpen = true; | ||||
let proba = Engine.GuiInterfaceCall("GetTradingGoods", g_ViewedPlayer); | let proba = Engine.GuiInterfaceCall("GetTradingGoods", g_ViewedPlayer); | ||||
let button = {}; | let button = {}; | ||||
let resCodes = g_ResourceData.GetCodes(); | let resTradeCodes = g_ResourceData.GetCodes("tradable"); | ||||
let currTradeSelection = resCodes[0]; | let resBarterCodes = g_ResourceData.GetCodes("barterable"); | ||||
let currTradeSelection = resTradeCodes[0]; | |||||
let updateTradeButtons = function() | let updateTradeButtons = function() | ||||
{ | { | ||||
for (let res in button) | for (let res in button) | ||||
{ | { | ||||
button[res].label.caption = proba[res] + "%"; | button[res].label.caption = proba[res] + "%"; | ||||
button[res].sel.hidden = !controlsPlayer(g_ViewedPlayer) || res != currTradeSelection; | button[res].sel.hidden = !controlsPlayer(g_ViewedPlayer) || res != currTradeSelection; | ||||
button[res].up.hidden = !controlsPlayer(g_ViewedPlayer) || res == currTradeSelection || proba[res] == 100 || proba[currTradeSelection] == 0; | button[res].up.hidden = !controlsPlayer(g_ViewedPlayer) || res == currTradeSelection || proba[res] == 100 || proba[currTradeSelection] == 0; | ||||
button[res].dn.hidden = !controlsPlayer(g_ViewedPlayer) || res == currTradeSelection || proba[res] == 0 || proba[currTradeSelection] == 100; | button[res].dn.hidden = !controlsPlayer(g_ViewedPlayer) || res == currTradeSelection || proba[res] == 0 || proba[currTradeSelection] == 100; | ||||
} | } | ||||
}; | }; | ||||
hideRemaining("tradeResources", resCodes.length); | hideRemaining("tradeResources", resTradeCodes.length); | ||||
Engine.GetGUIObjectByName("tradeHelp").hidden = false; | Engine.GetGUIObjectByName("tradeHelp").hidden = false; | ||||
for (let i = 0; i < resCodes.length; ++i) | |||||
for (let i = 0; i < resBarterCodes.length; ++i) | |||||
Done Inline ActionsComment can be removed, this is obvious from the code. wraitii: Comment can be removed, this is obvious from the code. | |||||
{ | { | ||||
let resCode = resCodes[i]; | let resBarterCode = resBarterCodes[i]; | ||||
let barterResource = Engine.GetGUIObjectByName("barterResource[" + i + "]"); | let barterResource = Engine.GetGUIObjectByName("barterResource[" + i + "]"); | ||||
if (!barterResource) | if (!barterResource) | ||||
{ | { | ||||
warn("Current GUI limits prevent displaying more than " + i + " resources in the barter dialog!"); | warn("Current GUI limits prevent displaying more than " + i + " resources in the barter dialog!"); | ||||
break; | break; | ||||
} | } | ||||
// Barter: | barterOpenCommon(resBarterCode, i, "barter"); | ||||
barterOpenCommon(resCode, i, "barter"); | |||||
setPanelObjectPosition(barterResource, i, i + 1); | setPanelObjectPosition(barterResource, i, i + 1); | ||||
} | |||||
Done Inline ActionsLikewise wraitii: Likewise | |||||
for (let i = 0; i < resTradeCodes.length; ++i) | |||||
{ | |||||
let resTradeCode = resTradeCodes[i]; | |||||
// Trade: | |||||
let tradeResource = Engine.GetGUIObjectByName("tradeResource[" + i + "]"); | let tradeResource = Engine.GetGUIObjectByName("tradeResource[" + i + "]"); | ||||
if (!tradeResource) | if (!tradeResource) | ||||
{ | { | ||||
warn("Current GUI limits prevent displaying more than " + i + " resources in the trading goods selection dialog!"); | warn("Current GUI limits prevent displaying more than " + i + " resources in the trading goods selection dialog!"); | ||||
break; | break; | ||||
} | } | ||||
setPanelObjectPosition(tradeResource, i, i + 1); | setPanelObjectPosition(tradeResource, i, i + 1); | ||||
let icon = Engine.GetGUIObjectByName("tradeResourceIcon[" + i + "]"); | let icon = Engine.GetGUIObjectByName("tradeResourceIcon[" + i + "]"); | ||||
icon.sprite = "stretched:session/icons/resources/" + resCode + ".png"; | icon.sprite = "stretched:session/icons/resources/" + resTradeCode + ".png"; | ||||
let buttonUp = Engine.GetGUIObjectByName("tradeArrowUp[" + i + "]"); | let buttonUp = Engine.GetGUIObjectByName("tradeArrowUp[" + i + "]"); | ||||
let buttonDn = Engine.GetGUIObjectByName("tradeArrowDn[" + i + "]"); | let buttonDn = Engine.GetGUIObjectByName("tradeArrowDn[" + i + "]"); | ||||
button[resCode] = { | button[resTradeCode] = { | ||||
"up": buttonUp, | "up": buttonUp, | ||||
"dn": buttonDn, | "dn": buttonDn, | ||||
"label": Engine.GetGUIObjectByName("tradeResourceText[" + i + "]"), | "label": Engine.GetGUIObjectByName("tradeResourceText[" + i + "]"), | ||||
"sel": Engine.GetGUIObjectByName("tradeResourceSelection[" + i + "]") | "sel": Engine.GetGUIObjectByName("tradeResourceSelection[" + i + "]") | ||||
}; | }; | ||||
proba[resCode] = proba[resCode] || 0; | proba[resTradeCode] = proba[resTradeCode] || 0; | ||||
let buttonResource = Engine.GetGUIObjectByName("tradeResourceButton[" + i + "]"); | let buttonResource = Engine.GetGUIObjectByName("tradeResourceButton[" + i + "]"); | ||||
buttonResource.enabled = controlsPlayer(g_ViewedPlayer); | buttonResource.enabled = controlsPlayer(g_ViewedPlayer); | ||||
buttonResource.onPress = (resource => { | buttonResource.onPress = (resource => { | ||||
return () => { | return () => { | ||||
if (Engine.HotkeyIsPressed("session.fulltradeswap")) | if (Engine.HotkeyIsPressed("session.fulltradeswap")) | ||||
{ | { | ||||
for (let res of resCodes) | for (let res of resTradeCodes) | ||||
proba[res] = 0; | proba[res] = 0; | ||||
proba[resource] = 100; | proba[resource] = 100; | ||||
Engine.PostNetworkCommand({ "type": "set-trading-goods", "tradingGoods": proba }); | Engine.PostNetworkCommand({ "type": "set-trading-goods", "tradingGoods": proba }); | ||||
} | } | ||||
currTradeSelection = resource; | currTradeSelection = resource; | ||||
updateTradeButtons(); | updateTradeButtons(); | ||||
}; | }; | ||||
})(resCode); | })(resTradeCode); | ||||
buttonUp.enabled = controlsPlayer(g_ViewedPlayer); | buttonUp.enabled = controlsPlayer(g_ViewedPlayer); | ||||
buttonUp.onPress = (resource => { | buttonUp.onPress = (resource => { | ||||
return () => { | return () => { | ||||
proba[resource] += Math.min(STEP, proba[currTradeSelection]); | proba[resource] += Math.min(STEP, proba[currTradeSelection]); | ||||
proba[currTradeSelection] -= Math.min(STEP, proba[currTradeSelection]); | proba[currTradeSelection] -= Math.min(STEP, proba[currTradeSelection]); | ||||
Engine.PostNetworkCommand({ "type": "set-trading-goods", "tradingGoods": proba }); | Engine.PostNetworkCommand({ "type": "set-trading-goods", "tradingGoods": proba }); | ||||
updateTradeButtons(); | updateTradeButtons(); | ||||
}; | }; | ||||
})(resCode); | })(resTradeCode); | ||||
buttonDn.enabled = controlsPlayer(g_ViewedPlayer); | buttonDn.enabled = controlsPlayer(g_ViewedPlayer); | ||||
buttonDn.onPress = (resource => { | buttonDn.onPress = (resource => { | ||||
return () => { | return () => { | ||||
proba[currTradeSelection] += Math.min(STEP, proba[resource]); | proba[currTradeSelection] += Math.min(STEP, proba[resource]); | ||||
proba[resource] -= Math.min(STEP, proba[resource]); | proba[resource] -= Math.min(STEP, proba[resource]); | ||||
Engine.PostNetworkCommand({ "type": "set-trading-goods", "tradingGoods": proba }); | Engine.PostNetworkCommand({ "type": "set-trading-goods", "tradingGoods": proba }); | ||||
updateTradeButtons(); | updateTradeButtons(); | ||||
}; | }; | ||||
})(resCode); | })(resTradeCode); | ||||
} | } | ||||
updateTradeButtons(); | updateTradeButtons(); | ||||
updateTraderTexts(); | updateTraderTexts(); | ||||
Engine.GetGUIObjectByName("tradeDialogPanel").hidden = false; | Engine.GetGUIObjectByName("tradeDialogPanel").hidden = false; | ||||
} | } | ||||
function updateTraderTexts() | function updateTraderTexts() | ||||
{ | { | ||||
let traderNumber = Engine.GuiInterfaceCall("GetTraderNumber", g_ViewedPlayer); | let traderNumber = Engine.GuiInterfaceCall("GetTraderNumber", g_ViewedPlayer); | ||||
Engine.GetGUIObjectByName("traderCountText").caption = getIdleLandTradersText(traderNumber) + "\n\n" + getIdleShipTradersText(traderNumber); | Engine.GetGUIObjectByName("traderCountText").caption = getIdleLandTradersText(traderNumber) + "\n\n" + getIdleShipTradersText(traderNumber); | ||||
} | } | ||||
function initBarterButtons() | function initBarterButtons() | ||||
{ | { | ||||
g_BarterSell = g_ResourceData.GetCodes()[0]; | g_BarterSell = g_ResourceData.GetCodes("barterable")[0]; | ||||
Not Done Inline Actionsfind ? Stan: find ? | |||||
Done Inline Actions!!! Bartable Codes empty -> out of bounds Silier: !!! Bartable Codes empty -> out of bounds | |||||
Done Inline ActionsHmm, no error is shown. But I'll fix it anyways. Freagarach: Hmm, no error is shown. But I'll fix it anyways.
That might be why @Stan suggested `find`. | |||||
} | } | ||||
/** | /** | ||||
* Code common to both the Barter Panel and the Trade/Barter Dialog, that | * Code common to both the Barter Panel and the Trade/Barter Dialog, that | ||||
* only needs to be run when the panel or dialog is opened by the player. | * only needs to be run when the panel or dialog is opened by the player. | ||||
* | * | ||||
* @param {string} resourceCode | * @param {string} resourceCode | ||||
* @param {number} idx - Element index within its set | * @param {number} idx - Element index within its set | ||||
▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | Engine.PostNetworkCommand({ | ||||
"type": "barter", | "type": "barter", | ||||
"sell": g_BarterSell, | "sell": g_BarterSell, | ||||
"buy": resourceCode, | "buy": resourceCode, | ||||
"amount": amountToSell | "amount": amountToSell | ||||
}); | }); | ||||
}; | }; | ||||
barterButton.Buy.hidden = isSelected; | barterButton.Buy.hidden = isSelected; | ||||
Done Inline ActionsMTM: Remove curly braces. Freagarach: MTM: Remove curly braces. | |||||
Done Inline ActionsNo white-space before parenthesis. Stan: No white-space before parenthesis. | |||||
StanUnsubmitted Done Inline ActionsProbably not needed anymore :) Stan: Probably not needed anymore :) | |||||
barterButton.Buy.enabled = controlsPlayer(player); | barterButton.Buy.enabled = controlsPlayer(player); | ||||
barterButton.Sell.hidden = false; | barterButton.Sell.hidden = false; | ||||
selectionIcon.hidden = !isSelected; | selectionIcon.hidden = !isSelected; | ||||
Done Inline ActionsMaybe if (g_ResourceData.GetCodes("currency").some(x => x == g_BarterSell) ) barterButton.Buy.hidden = isSelected; else barterButton.Buy.hidden = !g_ResourceData.GetCodes("currency").some(x => x == resourceCode); Could be replaced by let currencyCodes = g_ResourceData.GetCodes("currency"); barterButton.Buy.hidden = currencyCodes.some(x => x == g_BarterSell) && isSelected || !currencyCodes.some(x => x == resourceCode); Stan: Maybe
```lang=js
if (g_ResourceData.GetCodes("currency").some(x => x == g_BarterSell) )… | |||||
} | } | ||||
function updateBarterButtons() | function updateBarterButtons() | ||||
{ | { | ||||
let playerState = GetSimState().players[g_ViewedPlayer]; | let playerState = GetSimState().players[g_ViewedPlayer]; | ||||
if (!playerState) | if (!playerState) | ||||
return; | return; | ||||
let canBarter = playerState.canBarter; | let canBarter = playerState.canBarter; | ||||
Engine.GetGUIObjectByName("barterNoMarketsMessage").hidden = canBarter; | Engine.GetGUIObjectByName("barterNoMarketsMessage").hidden = canBarter; | ||||
Engine.GetGUIObjectByName("barterResources").hidden = !canBarter; | Engine.GetGUIObjectByName("barterResources").hidden = !canBarter; | ||||
Engine.GetGUIObjectByName("barterHelp").hidden = !canBarter; | Engine.GetGUIObjectByName("barterHelp").hidden = !canBarter; | ||||
if (canBarter) | if (canBarter) | ||||
g_ResourceData.GetCodes().forEach((resCode, i) => { barterUpdateCommon(resCode, i, "barter", g_ViewedPlayer) }); | g_ResourceData.GetCodes("barterable").forEach((resCode, i) => { | ||||
barterUpdateCommon(resCode, i, "barter", g_ViewedPlayer); | |||||
}); | |||||
Done Inline Actionsnewline after => {, missing semicolon (and another newline) after the barterUpdateCommon statement elexis: newline after `=> {`, missing semicolon (and another newline) after the barterUpdateCommon… | |||||
} | } | ||||
function getIdleLandTradersText(traderNumber) | function getIdleLandTradersText(traderNumber) | ||||
{ | { | ||||
let active = traderNumber.landTrader.trading; | let active = traderNumber.landTrader.trading; | ||||
let garrisoned = traderNumber.landTrader.garrisoned; | let garrisoned = traderNumber.landTrader.garrisoned; | ||||
let inactive = traderNumber.landTrader.total - active - garrisoned; | let inactive = traderNumber.landTrader.total - active - garrisoned; | ||||
▲ Show 20 Lines • Show All 371 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator
width += g_ResourceData.GetCodes().length * (tradeSize.right - tradeSize.left);
To avoid shrinking? Or check and use the largest of "tradable"/"barterable".