Index: binaries/data/mods/public/gui/page_session.xml
===================================================================
--- binaries/data/mods/public/gui/page_session.xml (révision 14372)
+++ binaries/data/mods/public/gui/page_session.xml (copie de travail)
@@ -8,6 +8,10 @@
common/common_sprites.xml
common/common_styles.xml
+ common/modern/styles.xml
+ common/modern/sprites.xml
+ common/modern/setup.xml
+
session/sprites.xml
session/setup.xml
session/styles.xml
Index: binaries/data/mods/public/gui/session/input.js
===================================================================
--- binaries/data/mods/public/gui/session/input.js (révision 14372)
+++ binaries/data/mods/public/gui/session/input.js (copie de travail)
@@ -290,9 +290,9 @@
cursor = "action-setup-trade-route";
tooltip = "Right-click to establish a default route for new traders.";
if (trader)
- tooltip += "\nGain (metal): " + getTradingTooltip(gain);
+ tooltip += "\nGain: " + getTradingTooltip(gain);
else // Foundation or cannot produce traders
- tooltip += "\nExpected gain (metal): " + getTradingTooltip(gain);
+ tooltip += "\nExpected gain: " + getTradingTooltip(gain);
}
}
@@ -363,18 +363,18 @@
case "is first":
tooltip = "Origin trade market.";
if (tradingDetails.hasBothMarkets)
- tooltip += "\nGain (" + tradingDetails.goods + "): " + getTradingTooltip(tradingDetails.gain);
+ tooltip += "\nGain: " + getTradingTooltip(tradingDetails.gain);
else
tooltip += "\nRight-click on another market to set it as a destination trade market."
break;
case "is second":
- tooltip = "Destination trade market.\nGain (" + tradingDetails.goods + "): " + getTradingTooltip(tradingDetails.gain);
+ tooltip = "Destination trade market.\nGain: " + getTradingTooltip(tradingDetails.gain);
break;
case "set first":
tooltip = "Right-click to set as origin trade market";
break;
case "set second":
- tooltip = "Right-click to set as destination trade market.\nGain (" + tradingDetails.goods + "): " + getTradingTooltip(tradingDetails.gain);
+ tooltip = "Right-click to set as destination trade market.\nGain: " + getTradingTooltip(tradingDetails.gain);
break;
}
return {"possible": true, "tooltip": tooltip};
@@ -1572,12 +1572,6 @@
}
}
-// Called by GUI when user changes preferred trading goods
-function selectTradingPreferredGoods(data)
-{
- Engine.PostNetworkCommand({"type": "select-trading-goods", "entities": data.entities, "preferredGoods": data.preferredGoods});
-}
-
// Called by GUI when user clicks exchange resources button
function exchangeResources(command)
{
@@ -1906,6 +1900,9 @@
case "back-to-work":
backToWork();
break;
+ case "select-trading-goods":
+ toggleTrade();
+ break;
default:
break;
}
Index: binaries/data/mods/public/gui/session/menu.js
===================================================================
--- binaries/data/mods/public/gui/session/menu.js (révision 14372)
+++ binaries/data/mods/public/gui/session/menu.js (copie de travail)
@@ -29,10 +29,15 @@
// Number of pixels per millisecond to move
const MENU_SPEED = 1.2;
+// Trade menu: available resources and step for probability changes
+const RESOURCES = ["food", "wood", "stone", "metal"];
+const STEP = 10;
+
var isMenuOpen = false;
var menu;
var isDiplomacyOpen = false;
+var isTradeOpen = false;
// Redefined every time someone makes a tribute (so we can save some data in a closure). Called in input.js handleInputBeforeGui.
var flushTributing = function() {};
@@ -116,13 +121,6 @@
openChat();
}
-function diplomacyMenuButton()
-{
- closeMenu();
- closeOpenDialogs();
- openDiplomacy();
-}
-
function pauseMenuButton()
{
togglePause();
@@ -369,6 +367,140 @@
openDiplomacy();
};
+function openTrade()
+{
+ isTradeOpen = true;
+
+ var updateButtons = function()
+ {
+ for (var res in button)
+ {
+ button[res].label.caption = proba[res] + "%";
+ if (res == selec)
+ {
+ button[res].sel.hidden = false;
+ button[res].up.hidden = true;
+ button[res].dn.hidden = true;
+ }
+ else
+ {
+ button[res].sel.hidden = true;
+ button[res].up.hidden = (proba[res] == 100 || proba[selec] == 0);
+ button[res].dn.hidden = (proba[res] == 0 || proba[selec] == 100);
+ }
+ }
+ }
+
+ var proba = Engine.GuiInterfaceCall("GetTradingGoods");
+ var button = {};
+ var selec = RESOURCES[0];
+ for (var i = 0; i < RESOURCES.length; ++i)
+ {
+ if (i > 0)
+ {
+ var size = getGUIObjectByName("tradeResource["+(i-1)+"]").size;
+ var width = size.right - size.left;
+ size.left += width;
+ size.right += width;
+ getGUIObjectByName("tradeResource["+i+"]").size = size;
+ }
+ var resource = RESOURCES[i];
+ proba[resource] = (proba[resource] ? proba[resource] : 0);
+ var buttonSel = getGUIObjectByName("tradeResourceButton["+i+"]");
+ var icon = getGUIObjectByName("tradeResourceIcon["+i+"]");
+ icon.sprite = "stretched:session/icons/resources/" + resource + ".png";
+ var label = getGUIObjectByName("tradeResourceText["+i+"]");
+ var buttonUp = getGUIObjectByName("tradeArrowUp["+i+"]");
+ var buttonDn = getGUIObjectByName("tradeArrowDn["+i+"]");
+ var iconSel = getGUIObjectByName("tradeResourceSelection["+i+"]");
+ button[resource] = { "up": buttonUp, "dn": buttonDn, "label": label, "sel": iconSel };
+
+ buttonSel.onpress = (function(resource){
+ return function() {
+ if (selec == resource)
+ return;
+ selec = resource;
+ updateButtons();
+ }
+ })(resource);
+
+ buttonUp.onpress = (function(resource){
+ return function() {
+ proba[resource] += Math.min(STEP, proba[selec]);
+ proba[selec] -= Math.min(STEP, proba[selec]);
+ Engine.PostNetworkCommand({"type": "set-trading-goods", "tradingGoods": proba});
+ updateButtons();
+ }
+ })(resource);
+
+ buttonDn.onpress = (function(resource){
+ return function() {
+ proba[selec] += Math.min(STEP, proba[resource]);
+ proba[resource] -= Math.min(STEP, proba[resource]);
+ Engine.PostNetworkCommand({"type": "set-trading-goods", "tradingGoods": proba});
+ updateButtons();
+ }
+ })(resource);
+ }
+ updateButtons();
+
+ var traderNumber = Engine.GuiInterfaceCall("GetTraderNumber");
+ var caption = "";
+ var comma = "";
+ if (traderNumber.landTrader.total == 0)
+ caption += "0";
+ else
+ {
+ if (traderNumber.landTrader.trading > 0)
+ {
+ caption += traderNumber.landTrader.trading + " trading"
+ comma = ", ";
+ }
+ if (traderNumber.landTrader.garrisoned > 0)
+ {
+ caption += comma + traderNumber.landTrader.garrisoned + " garrisoned inside ships";
+ comma = ", ";
+ }
+ var inactive = traderNumber.landTrader.total - traderNumber.landTrader.trading - traderNumber.landTrader.garrisoned;
+ if (inactive > 0)
+ caption += comma + "[color=\"orange\"]" + inactive + " inactive[/color]";
+ }
+ getGUIObjectByName("landTraders").caption = caption;
+
+ caption = "";
+ comma = "";
+ if (traderNumber.shipTrader.total == 0)
+ caption += "0";
+ else
+ {
+ if (traderNumber.shipTrader.trading > 0)
+ {
+ caption += traderNumber.shipTrader.trading + " trading"
+ comma = ", ";
+ }
+ var inactive = traderNumber.shipTrader.total - traderNumber.shipTrader.trading;
+ if (inactive > 0)
+ caption += comma + "[color=\"orange\"]" + inactive + " inactive[/color]";
+ }
+ getGUIObjectByName("shipTraders").caption = caption;
+
+ getGUIObjectByName("tradeDialogPanel").hidden = false;
+}
+
+function closeTrade()
+{
+ isTradeOpen = false;
+ getGUIObjectByName("tradeDialogPanel").hidden = true;
+}
+
+function toggleTrade()
+{
+ if (isTradeOpen)
+ closeTrade();
+ else
+ openTrade();
+};
+
function toggleGameSpeed()
{
var gameSpeed = getGUIObjectByName("gameSpeed");
@@ -436,6 +568,7 @@
closeMenu();
closeChat();
closeDiplomacy();
+ closeTrade();
closeSettings(false);
}
Index: binaries/data/mods/public/gui/session/session.js
===================================================================
--- binaries/data/mods/public/gui/session/session.js (révision 14372)
+++ binaries/data/mods/public/gui/session/session.js (copie de travail)
@@ -54,9 +54,7 @@
function GetSimState()
{
if (!g_SimState)
- {
g_SimState = Engine.GuiInterfaceCall("GetSimulationState");
- }
return g_SimState;
}
Index: binaries/data/mods/public/gui/session/session.xml
===================================================================
--- binaries/data/mods/public/gui/session/session.xml (révision 14372)
+++ binaries/data/mods/public/gui/session/session.xml (copie de travail)
@@ -435,6 +435,56 @@
+
+
+
+
+
-
+
+
+
+
+
+
+
+ toggleTrade();
+
+
+
+