From 89ee23f1e6577cf0002654bd99340014883801df Mon Sep 17 00:00:00 2001 From: iisaev Date: Fri, 23 Oct 2026 09:30:05 +0300 Subject: [PATCH] Trading mod: shops as data and the trade window --- .gitattributes | 30 + items/money/coin.json | 14 + items/money/gold_coin.png | Bin 0 -> 7224 bytes locale/en.properties | 25 + locale/ru.properties | 25 + manifest.json | 29 + mod.jpg | Bin 0 -> 108426 bytes scenes/trade_panel.tscn | 153 +++++ src/ShopFactory.cs | 14 + src/ShopInfo.cs | 57 ++ src/ShopOffer.cs | 19 + src/TradeLedger.cs | 64 ++ src/TradeOpenAction.cs | 41 ++ src/TradePanel.cs | 553 ++++++++++++++++++ test_suites/trade/manifest.json | 10 + test_suites/trade/src/TradeTestDriver.cs | 354 +++++++++++ test_suites/trade/src/TradeTestInitializer.cs | 38 ++ tests/ShopInfoTests.cs | 62 ++ tests/TradeLedgerTests.cs | 107 ++++ 19 files changed, 1595 insertions(+) create mode 100644 .gitattributes create mode 100644 items/money/coin.json create mode 100644 items/money/gold_coin.png create mode 100644 locale/en.properties create mode 100644 locale/ru.properties create mode 100644 manifest.json create mode 100644 mod.jpg create mode 100644 scenes/trade_panel.tscn create mode 100644 src/ShopFactory.cs create mode 100644 src/ShopInfo.cs create mode 100644 src/ShopOffer.cs create mode 100644 src/TradeLedger.cs create mode 100644 src/TradeOpenAction.cs create mode 100644 src/TradePanel.cs create mode 100644 test_suites/trade/manifest.json create mode 100644 test_suites/trade/src/TradeTestDriver.cs create mode 100644 test_suites/trade/src/TradeTestInitializer.cs create mode 100644 tests/ShopInfoTests.cs create mode 100644 tests/TradeLedgerTests.cs diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..3030c1a --- /dev/null +++ b/.gitattributes @@ -0,0 +1,30 @@ +# Line endings: LF everywhere, on every OS, whatever core.autocrlf says. +* text=auto eol=lf + +# cmd.exe misreads labels and goto in LF batch files, so they stay CRLF. +*.bat text eol=crlf +*.cmd text eol=crlf + +# Binaries: never converted, never diffed as text. +*.png binary +*.jpg binary +*.jpeg binary +*.webp binary +*.svg text +*.ogg binary +*.wav binary +*.mp3 binary +*.ttf binary +*.otf binary +*.woff binary +*.woff2 binary +*.dll binary +*.so binary +*.dylib binary +*.pdb binary +*.exe binary +*.zip binary +*.pck binary +*.moc3 binary +*.res binary +*.scn binary diff --git a/items/money/coin.json b/items/money/coin.json new file mode 100644 index 0000000..489389a --- /dev/null +++ b/items/money/coin.json @@ -0,0 +1,14 @@ +{ + "Kind": "item", + "Items": [ + { + "Id": "money/coin", + "Name": "trading/item/coin/name", + "Description": "trading/item/coin/desc", + "Cost": 1, + "Sprite": "money/gold_coin", + "ItemType": "Resource,CantDrop", + "ItemAction": "null" + } + ] +} diff --git a/items/money/gold_coin.png b/items/money/gold_coin.png new file mode 100644 index 0000000000000000000000000000000000000000..86f2a87cf0d22f43143e6be7d4e8ff43b2163514 GIT binary patch literal 7224 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 z zKn71d&PpCgpl|B)Cx55k1D}hP=u)UhX!9&fN@CDLQISCR*b!S&YO%Aim2lmQv$BW* zg(^oFG>0c?HlWN1T7;vf5OHvaP}KE$TM^UuJOTYEkOa`I+>?T~M-yFaYP#w1jxWUw zqt+@(N&@W!B)WHDORhlZFe6H44CU#QRu2@l=?LtuCI2g*4~m_w?|f9!@FQs&720j| z3^igBp<5^5P&k(??sksWu>5&DuDHibYK(@V$%Z(3xff#G*X2nhXLa^V8+b1fZ-S8) zp$GM2dnVR_m*f@?_Om5hvb*5cBf}Y*EC0B0Otb$daE_wWy7p<JV1_0{ZuS`EgCd;%LoTg4@#p_ss`d|8h zp(ISXYOptF(|cFVg8@_g;uyT}Y3SeX#EL;753w@+DX|h{$@_No&C1nDPcz8a)QR?n z(G;Quua!_UMGq5*Qb;~XwrB5f0GaY(KFSz3SDUhiRN>tSBEOxv)D(`#y8x}^?t=G9 z{I5y6e3K615`)A4PHmUN*JTea9BNfv> z7AS`F)^b;iz1NiviA)$D)0f3^geGK65u6r|U)Lm?SCFUa(;9@_fGfcQc9{E6+}S)u z4a)oSeM+mfY8W#8`MkRomial)*S_p$pUGH?-&!(Ev^>Bs7pyL0`&&_{)^)L(BK-6^ zxJ3S%=0^S<^1%KS=M714K}i#;eJQ|6kiSnFO5)RR2Ycd*1{42Yc6-cTc4rnBMo24B zl?F3%5B=r8^@>gV4Hnu1OVLJSkMcAGW|0lT&i3C~HY0RF;6Y{RvnhWTYBSN8pn&V- zXqGGoMxiXb6dpWyF?FmAW;`HW>-?PAquX*T_k&fzlat6nN9@Sfk9l2SsdCl9b}q4@ zED>+XUxldOSey=WlXbSS=s`+NeEG8L02v-s1VeA)Gm{6}_I8eq)yf^X3|U?f-YPh_ zZ`$y*~IND?9nvld-XmgZa?rw{f zdn@t`QtE;m53Y+VaIm&8bKoUz*MY7}tv7xmZ28KrO*sC&Iw`)iZq#XKn4HdS(W52e zS4uxU&^R;9aU$@(lT!M_X@!*24hTqL{P98P&e8)uQsX@Ma9b$<2yy7=Z$-Bl>!w!t z+zbMOAU!-yGl(<$5&>p zX~m%!Nr>QXYy+u0l+}>g5GY^@>p z&U>~C7KBM2>jovQxMtL_m4^~mY&!dvdSzG!72{qu=S+JRo^6^F7hoet!`kD6GU?NX gKytz#7ztvE#3`f4j^Eb*5d_%(=5)5)Iw1Xj05-NvQvd(} literal 0 HcmV?d00001 diff --git a/locale/en.properties b/locale/en.properties new file mode 100644 index 0000000..5fc663b --- /dev/null +++ b/locale/en.properties @@ -0,0 +1,25 @@ +mod_trading_name = Trading +mod_trading_desc = Merchants' shops: what they sell, what they buy back and at which price ("Kind": "shop" data), and a trade window of two inventories, the merchant's goods and the player's bag. Money is an ordinary item, the gold coin. +trading/item/coin/name = Gold coin +trading/item/coin/desc = Common coin. Merchants take and pay nothing else. +trading/ui/merchant_goods = Merchant's goods +trading/ui/your_bag = Your bag +trading/ui/hint = Pick goods on the left to buy or an item on the right to sell. Esc closes. +trading/ui/select = Pick goods of the merchant or an item in your bag. +trading/ui/badge_merchant = Merchant's +trading/ui/badge_yours = Yours +trading/ui/unit_price = Price +trading/ui/wallet = Wallet +trading/ui/you_have = You have +trading/ui/not_bought = The merchant does not buy this. +trading/ui/no_money = Not enough coins. +trading/ui/nothing_to_sell = Nothing to sell. +trading/ui/quantity = Quantity +trading/ui/all = All +trading/ui/total = Total: {0} coins +trading/ui/buy = Buy +trading/ui/sell = Sell +trading/ui/bought = Bought: {0} ×{1} for {2} coins +trading/ui/sold = Sold: {0} ×{1} for {2} coins +trading/ui/deal_failed = The deal did not go through. +trading/ui/price_tag = {0} c diff --git a/locale/ru.properties b/locale/ru.properties new file mode 100644 index 0000000..1fd9c08 --- /dev/null +++ b/locale/ru.properties @@ -0,0 +1,25 @@ +mod_trading_name = Торговля +mod_trading_desc = Лавки торговцев: что продают, что скупают и почём (данные «Kind»: «shop»), и окно торговли из двух инвентарей — товары торговца и сумка игрока. Деньги — обычный предмет, золотая монета. +trading/item/coin/name = Золотая монета +trading/item/coin/desc = Ходовая монета. Торговцы берут и платят только ею. +trading/ui/merchant_goods = Товары торговца +trading/ui/your_bag = Ваша сумка +trading/ui/hint = Выберите товар слева, чтобы купить, или вещь справа, чтобы продать. Esc — закрыть. +trading/ui/select = Выберите товар у торговца или вещь в своей сумке. +trading/ui/badge_merchant = У торговца +trading/ui/badge_yours = Ваше +trading/ui/unit_price = Цена +trading/ui/wallet = В кошельке +trading/ui/you_have = У вас +trading/ui/not_bought = Торговец это не покупает. +trading/ui/no_money = Не хватает монет. +trading/ui/nothing_to_sell = Продавать нечего. +trading/ui/quantity = Количество +trading/ui/all = Все +trading/ui/total = Итого: {0} мон. +trading/ui/buy = Купить +trading/ui/sell = Продать +trading/ui/bought = Куплено: {0} ×{1} за {2} мон. +trading/ui/sold = Продано: {0} ×{1} за {2} мон. +trading/ui/deal_failed = Сделка не состоялась. +trading/ui/price_tag = {0} мон. diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..3b38572 --- /dev/null +++ b/manifest.json @@ -0,0 +1,29 @@ +{ + "id": "trading", + "name": "Trading", + "version": "1.0.0", + "author": "ct", + "description": "Shops: merchants defined as data (\"Kind\": \"shop\": what they sell, what they buy back and at which price) and a trade window of two inventories side by side, the merchant's goods and the player's bag, with a deal card between them. Money is an ordinary inventory item, the gold coin money/coin by default. Scenario action: trade.open shop=.", + "category": "gameplay", + "sources": [ + "src/**/*.cs" + ], + "test_sources": [ + "tests/*.cs" + ], + "depends": ["ui_base>=1", "items_base>=1"], + "test_suites": [ + {"id": "trade", "activate": ["--itest=trade"]} + ], + "ui": [ + { + "id": "trade", + "kind": "overlay", + "slot": "ModLastPanel", + "scene_path": "scenes/trade_panel.tscn", + "once": true, + "show_on_start": false, + "priority": 10 + } + ] +} diff --git a/mod.jpg b/mod.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75f6c373015eea1d4dffd3e57cec43bd5c083f5e GIT binary patch literal 108426 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

G!@cvh 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

03`k`MIOpH|{{Sk&*5PYy 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 E*$yq?CjbBd literal 0 HcmV?d00001 diff --git a/scenes/trade_panel.tscn b/scenes/trade_panel.tscn new file mode 100644 index 0000000..f698340 --- /dev/null +++ b/scenes/trade_panel.tscn @@ -0,0 +1,153 @@ +[gd_scene format=3] + +[ext_resource type="Script" path="res://mods/trading/src/TradePanel.cs" id="1_script"] + +[node name="TradePanel" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 +script = ExtResource("1_script") + +[node name="Backdrop" type="ColorRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="Panel" type="Panel" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 40.0 +offset_top = 78.0 +offset_right = -40.0 +offset_bottom = -30.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 + +[node name="Margin" type="MarginContainer" parent="Panel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 24 +theme_override_constants/margin_top = 16 +theme_override_constants/margin_right = 24 +theme_override_constants/margin_bottom = 14 +mouse_filter = 1 + +[node name="Root" type="VBoxContainer" parent="Panel/Margin"] +layout_mode = 2 +theme_override_constants/separation = 12 +mouse_filter = 1 + +[node name="Header" type="HBoxContainer" parent="Panel/Margin/Root"] +layout_mode = 2 +theme_override_constants/separation = 18 + +[node name="Title" type="Label" parent="Panel/Margin/Root/Header"] +layout_mode = 2 +theme_override_font_sizes/font_size = 24 + +[node name="HeaderSpacer" type="Control" parent="Panel/Margin/Root/Header"] +layout_mode = 2 +size_flags_horizontal = 3 +mouse_filter = 2 + +[node name="Wallet" type="HBoxContainer" parent="Panel/Margin/Root/Header"] +layout_mode = 2 +theme_override_constants/separation = 8 + +[node name="WalletIcon" type="TextureRect" parent="Panel/Margin/Root/Header/Wallet"] +custom_minimum_size = Vector2(30, 30) +layout_mode = 2 +size_flags_vertical = 4 +expand_mode = 1 +stretch_mode = 5 +mouse_filter = 2 + +[node name="WalletLabel" type="Label" parent="Panel/Margin/Root/Header/Wallet"] +layout_mode = 2 +theme_override_font_sizes/font_size = 20 + +[node name="CloseButton" type="Button" parent="Panel/Margin/Root/Header"] +custom_minimum_size = Vector2(38, 38) +layout_mode = 2 +focus_mode = 0 +text = "✕" + +[node name="Rule" type="Panel" parent="Panel/Margin/Root"] +custom_minimum_size = Vector2(0, 1) +layout_mode = 2 +mouse_filter = 2 + +[node name="Body" type="HBoxContainer" parent="Panel/Margin/Root"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/separation = 14 + +[node name="Merchant" type="VBoxContainer" parent="Panel/Margin/Root/Body"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 10 + +[node name="MerchantTitle" type="Label" parent="Panel/Margin/Root/Body/Merchant"] +layout_mode = 2 +theme_override_font_sizes/font_size = 13 + +[node name="MerchantScroll" type="ScrollContainer" parent="Panel/Margin/Root/Body/Merchant"] +layout_mode = 2 +size_flags_vertical = 3 +horizontal_scroll_mode = 0 + +[node name="MerchantGrid" type="Control" parent="Panel/Margin/Root/Body/Merchant/MerchantScroll"] +layout_mode = 2 +size_flags_horizontal = 3 +mouse_filter = 0 + +[node name="Deal" type="PanelContainer" parent="Panel/Margin/Root/Body"] +custom_minimum_size = Vector2(400, 0) +layout_mode = 2 + +[node name="DealScroll" type="ScrollContainer" parent="Panel/Margin/Root/Body/Deal"] +layout_mode = 2 +horizontal_scroll_mode = 0 + +[node name="DealCard" type="VBoxContainer" parent="Panel/Margin/Root/Body/Deal/DealScroll"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 14 + +[node name="Player" type="VBoxContainer" parent="Panel/Margin/Root/Body"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 10 + +[node name="PlayerTitle" type="Label" parent="Panel/Margin/Root/Body/Player"] +layout_mode = 2 +theme_override_font_sizes/font_size = 13 + +[node name="PlayerScroll" type="ScrollContainer" parent="Panel/Margin/Root/Body/Player"] +layout_mode = 2 +size_flags_vertical = 3 +horizontal_scroll_mode = 0 + +[node name="PlayerGrid" type="Control" parent="Panel/Margin/Root/Body/Player/PlayerScroll"] +layout_mode = 2 +size_flags_horizontal = 3 +mouse_filter = 0 + +[node name="Footer" type="Label" parent="Panel/Margin/Root"] +layout_mode = 2 +theme_override_font_sizes/font_size = 12 diff --git a/src/ShopFactory.cs b/src/ShopFactory.cs new file mode 100644 index 0000000..7bd343e --- /dev/null +++ b/src/ShopFactory.cs @@ -0,0 +1,14 @@ +using System; +using Cthangover.Core.Factories; + +namespace Cthangover.Mods.Trading +{ + ///

Shops collected by the shared entity resolver ("Kind": "shop"). + public class ShopFactory : FileFactory + { + private static readonly Lazy instance = new(() => new ShopFactory()); + + /// Shared instance. + public static ShopFactory Instance => instance.Value; + } +} diff --git a/src/ShopInfo.cs b/src/ShopInfo.cs new file mode 100644 index 0000000..055a9e8 --- /dev/null +++ b/src/ShopInfo.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Text.Json.Serialization; +using Cthangover.Core.Factories; + +namespace Cthangover.Mods.Trading +{ + /// + /// A merchant as data ("Kind": "shop"), opened by + /// action trade.open shop=<id>. The stock of is + /// unlimited and the shop has no state of its own: what the player sells + /// disappears into the merchant's pocket, so nothing needs saving except the + /// player's inventory. Money is an ordinary inventory item + /// (), which keeps it in the items save slot and lets + /// scenarios pay with item.add. + /// + [EntityKind("shop")] + public class ShopInfo : IIdentifiable + { + /// Currency item used when a shop does not name one. + public const string DefaultCurrency = "money/coin"; + + /// Shop id, the shop= argument of trade.open. + [JsonPropertyName("Id")] + public string ID { get; set; } + + /// Locale key of the window title (the merchant's name). + public string Name { get; set; } + + /// Item id of the money this shop takes and pays. + public string Currency { get; set; } = DefaultCurrency; + + /// What the merchant sells to the player, in display order. + public List Sells { get; set; } = new(); + + /// What the merchant buys from the player; anything else is refused. + public List Buys { get; set; } = new(); + + /// The offer for buying from the merchant, or null. + public ShopOffer FindSell(string itemId) => Find(Sells, itemId); + + /// The offer for selling to the merchant, or null. + public ShopOffer FindBuy(string itemId) => Find(Buys, itemId); + + private static ShopOffer Find(List offers, string itemId) + { + if (offers == null || string.IsNullOrEmpty(itemId)) + return null; + foreach (var offer in offers) + { + if (offer != null && offer.Price > 0 && string.Equals(offer.Item, itemId, StringComparison.Ordinal)) + return offer; + } + return null; + } + } +} diff --git a/src/ShopOffer.cs b/src/ShopOffer.cs new file mode 100644 index 0000000..781811e --- /dev/null +++ b/src/ShopOffer.cs @@ -0,0 +1,19 @@ +namespace Cthangover.Mods.Trading +{ + /// + /// One line of a shop's price list: an item id and its unit price in the + /// shop's currency. The same type serves both directions — in + /// it is what the player pays, in + /// what the merchant pays. An offer with a price + /// below 1 is ignored by : a free deal is a gift and + /// belongs in a scenario. + /// + public class ShopOffer + { + /// Item id ("Kind": "item"). + public string Item { get; set; } + + /// Unit price in the shop's currency. + public int Price { get; set; } + } +} diff --git a/src/TradeLedger.cs b/src/TradeLedger.cs new file mode 100644 index 0000000..1191b02 --- /dev/null +++ b/src/TradeLedger.cs @@ -0,0 +1,64 @@ +using Cthangover.Core.Items; + +namespace Cthangover.Mods.Trading +{ + /// + /// The arithmetic of a deal, apart from the window so it can be tested and + /// reused by a scenario action later. A deal is all or nothing: it is checked + /// first (offer exists, positive quantity, enough money or goods) and only + /// then both stacks change, so a refused deal leaves the inventory untouched. + /// + public static class TradeLedger + { + /// The player's money in the shop's currency. + public static int Money(IInventory inventory, ShopInfo shop) + { + return inventory == null || shop == null ? 0 : inventory.CheckCount(shop.Currency); + } + + /// How many units of the player can afford; 0 when the shop does not sell it. + public static int MaxBuy(IInventory inventory, ShopInfo shop, string itemId) + { + var offer = shop?.FindSell(itemId); + return offer == null ? 0 : Money(inventory, shop) / offer.Price; + } + + /// How many units of the player can sell; 0 when the merchant does not buy it. + public static int MaxSell(IInventory inventory, ShopInfo shop, string itemId) + { + if (inventory == null || shop?.FindBuy(itemId) == null || itemId == shop.Currency) + return 0; + return inventory.CheckCount(itemId); + } + + /// + /// Buys units: takes their price in money and adds + /// the items. Returns false and changes nothing when the shop does not + /// sell the item, the count is not positive or the money is short. + /// + public static bool Buy(IInventory inventory, ShopInfo shop, string itemId, int count) + { + if (count <= 0 || count > MaxBuy(inventory, shop, itemId)) + return false; + if (!inventory.Remove(shop.Currency, shop.FindSell(itemId).Price * count)) + return false; + inventory.Add(itemId, count); + return true; + } + + /// + /// Sells units: removes the items and pays their + /// price. Returns false and changes nothing when the merchant does not + /// buy the item, the count is not positive or the player has fewer units. + /// + public static bool Sell(IInventory inventory, ShopInfo shop, string itemId, int count) + { + if (count <= 0 || count > MaxSell(inventory, shop, itemId)) + return false; + if (!inventory.Remove(itemId, count)) + return false; + inventory.Add(shop.Currency, shop.FindBuy(itemId).Price * count); + return true; + } + } +} diff --git a/src/TradeOpenAction.cs b/src/TradeOpenAction.cs new file mode 100644 index 0000000..408dd68 --- /dev/null +++ b/src/TradeOpenAction.cs @@ -0,0 +1,41 @@ +using Cthangover.Core.Actions; +using Cthangover.Core.UI; + +namespace Cthangover.Mods.Trading +{ + /// + /// action trade.open shop=village_merchant — opens the trade window with + /// that merchant. Usually the last line of a merchant's dialog. The window is a + /// hosted overlay of the UI registry (it lives above every scene and is built + /// once), so the action hands it the shop and then shows it through the + /// registry, which keeps the host's record of open entries right. + /// + public class TradeOpenAction : IScenarioAction + { + /// DSL name. + public string Name => "trade.open"; + + /// Resolves the shop and shows the window for it. + public void Run(IActionContext ctx) + { + var id = ctx.GetParam("shop"); + var shop = string.IsNullOrWhiteSpace(id) ? null : ShopFactory.Instance.Get(id.Trim()); + if (shop == null) + { + ctx.LogWarning("TRADE", $"trade.open: unknown shop '{id}'"); + return; + } + + var entry = UiRegistry.Get(TradePanel.EntryId); + if (entry == null || UiHost.Instance?.EnsureInstance(entry) is not TradePanel panel) + { + ctx.LogWarning("TRADE", "trade.open: the trade window is not available"); + return; + } + + panel.SetShop(shop); + if (!panel.Visible) + UiRegistry.Toggle(TradePanel.EntryId); + } + } +} diff --git a/src/TradePanel.cs b/src/TradePanel.cs new file mode 100644 index 0000000..c6d151e --- /dev/null +++ b/src/TradePanel.cs @@ -0,0 +1,553 @@ +namespace Cthangover.Mods.Trading +{ + using System.Collections.Generic; + using Cthangover.Core.Audio; + using Cthangover.Core.Factories.Impls; + using Cthangover.Core.Items; + using Cthangover.Core.Scenes; + using Cthangover.Core.Settings; + using Cthangover.Core.UI.Inventory; + using Cthangover.Core.UI.Theming; + using Cthangover.Mods.Interface.Base.Lists; + using Cthangover.Mods.Interface.Theming; + using Godot; + + /// + /// Trade window: two inventories side by side, the merchant's goods on the left + /// and the player's bag on the right, with a deal card between them. It follows + /// the inventory panel (same cells, same frame, same passport idea), so trading + /// feels like a second bag rather than a new screen. + /// + /// The window is a hosted "once" overlay ( in the manifest), + /// built on first use and reused for every merchant: + /// hands it a and shows it. Clicking a cell selects the item + /// and fills the deal card with its price, a quantity slider limited by money (when + /// buying) or by the stack (when selling) and the deal button. The arithmetic is + /// ; the window only redraws on + /// , so it also follows changes made elsewhere. + /// The money item is hidden from the player's grid and shown in the header. + /// + /// The inventory subscription is made on show and dropped on hide, against the + /// inventory instance of that moment: a new game or a load replaces the runtime + /// and its inventory while this window lives on. + /// + public partial class TradePanel : Widget + { + /// Id of the UI registry entry (manifest ui). + public const string EntryId = "trade"; + + private enum Side + { + None, + Merchant, + Player, + } + + private const int Columns = 4; + private const float CellGap = 10f; + private const float DealWidth = 400f; + + private static readonly List NoOffers = new(); + + private readonly List _merchantCells = new(); + private readonly List _playerCells = new(); + + private ShopInfo _shop; + private IInventory _inventory; + private Side _side = Side.None; + private string _selectedId; + private int _quantity = 1; + private string _message; + private bool _messageOk; + + private Label _title; + private TextureRect _walletIcon; + private Label _walletLabel; + private Button _closeButton; + private Label _merchantTitle; + private Label _playerTitle; + private Label _footer; + private Control _merchantGrid; + private Control _playerGrid; + private VBoxContainer _dealCard; + private Label _quantityLabel; + private Label _totalLabel; + + /// + /// Sets the merchant to trade with. Called before the window is shown; if it is + /// already open (another merchant's dialog ended in it), it switches at once. + /// + public void SetShop(ShopInfo shop) + { + _shop = shop; + ResetSelection(); + if (Visible) + RebuildAll(); + } + + protected override void OnceConstruct() + { + MouseFilter = MouseFilterEnum.Stop; + _title = GetNode