From 0c511c73f27902d7ea87baadc29ecff5722dd548 Mon Sep 17 00:00:00 2001
From: SilicaAndPina <earsyum@gmail.com>
Date: Wed, 24 Feb 2021 12:00:58 +1300
Subject: [PATCH] add strings/formats for trading

(hell)
---
 DataCollection/gamedata.json                  |  11 +-
 .../HorseIsleServer/Game/Messages.cs          | 132 ++++++++++++++++++
 .../HorseIsleServer/Game/Meta.cs              |   9 ++
 .../HorseIsleServer/Server/GameDataJson.cs    |  66 +++++++++
 4 files changed, 214 insertions(+), 4 deletions(-)

diff --git a/DataCollection/gamedata.json b/DataCollection/gamedata.json
index c21d46e..923668a 100755
--- a/DataCollection/gamedata.json
+++ b/DataCollection/gamedata.json
@@ -228,11 +228,12 @@
 			"trade":{
 				"trading_with":"^ATTrading with %PLAYERNAME%^H",
 				
-				"you_offering":"<B>You are offering %PLAYERNAME% the following:</B> ",
-				"trade_end_on_done":"^LWaiting for other player to click DONE.^R1",
+				"trade_wait_for_done":"^LWaiting for other player to click DONE.^R1",
 				"other_player_is_done":"^LOther player is DONE adding things to the offer.^R1",
 				"final_review":"<B>Final Trade Review - Only accept if you feel trade is 100% Fair!</B>",
 
+				"you_offering":"<B>You are offering %PLAYERNAME% the following:</B> ",
+				
 				"add_items":"^T6Add additional trade items:^D58|ADD^R1^H",
 				"other_offering":"<B>%PLAYERNAME% is offering you the following:</B>",
 				
@@ -245,6 +246,8 @@
 				"offering_item":"^T8%TOTAL% %ITEM% ^R1",
 				"offering_horse":"^I252^T8  Horse: %HORSENAME%^B3L%HORSERANDOMID%^R1",
 				
+				
+				
 				"what_to_offer":"What would you like to offer %PLAYERNAME%?",
 				"offer_money":"^T3Money.^B1O3^R1",
 				
@@ -268,7 +271,7 @@
 				"object_offer_too_much":"You only have %QUANTITY% of that item,  not %ENTEREDAMOUNT%.",
 				"money_offer_too_much":"You do not have that much money to give! Your heart is bigger than your wallet I'm afraid.",
 				
-				"other_player_doenst_has_negative_money":"They do not have enough money for the trade.",
+				"other_player_has_negative_money":"They do not have enough money for the trade.",
 				"you_have_negative_money":"You do not have enough money for the trade!",
 				
 				"trade_accepted":"Trade has been accepted!",
@@ -283,7 +286,7 @@
 				"trade_received":"You received $%MONEY% in the trade.",
 				
 				"trade_not_allowed_while_bidding":"No trades allowed while you are bidding on a Horse at auction.",
-				"trade_not_allowed_while_other_is_bidding":"No trades allowed while you are bidding on a Horse at auction."
+				"trade_not_allowed_while_other_is_bidding":"No trades allowed while other player bidding on a Horse at auction."
 			},
 		},
 		"auction":{
diff --git a/Horse Isle Server/HorseIsleServer/Game/Messages.cs b/Horse Isle Server/HorseIsleServer/Game/Messages.cs
index 9bf93b9..9001dfe 100755
--- a/Horse Isle Server/HorseIsleServer/Game/Messages.cs	
+++ b/Horse Isle Server/HorseIsleServer/Game/Messages.cs	
@@ -13,6 +13,73 @@ namespace HISP.Game
         // Mod isle
         public static string ModIsleMessage;
 
+        // Trading
+        public static string TradeWithPlayerFormat;
+
+        public static string TradeWaitingForOtherDone;
+        public static string TradeOtherPlayerIsDone;
+        public static string TradeFinalReview;
+
+        public static string TradeYourOfferingFormat;
+
+        public static string TradeAddItems;
+        public static string TradeOtherOfferingFormat;
+
+        public static string TradeWhenDoneClick;
+        public static string TradeCancelAnytime;
+        public static string TradeAcceptTrade;
+
+        public static string TradeOfferingNothing;
+        public static string TradeOfferingMoneyFormat;
+        public static string TradeOfferingItemFormat;
+        public static string TradeOfferingHorseFormat;
+
+        // Trading : What to Offer (menu)
+
+        public static string TradeWhatToOfferFormat;
+        public static string TradeOfferMoney;
+
+        public static string TradeOfferHorse;
+        public static string TradeOfferHorseFormat;
+        public static string TradeOfferHorseTacked;
+
+        public static string TradeOfferItem;
+        public static string TradeOfferItemFormat;
+        public static string TradeOfferObjectOtherPlayerInvFull;
+
+        // Trading : Money Offer Submenu
+
+        public static string TradeMoneyOfferSubmenuFormat;
+        public static string TradeItemOfferSubmenuFormat;
+
+        // Trading : Messages
+
+        public static string TradeWaitingForOthersToAcceptMessage;
+        
+        public static string TradeRequiresBothPlayersMessage;
+        public static string TradeCanceledBecuasePlayerMovedMessage;
+
+        public static string TradeItemOfferAtleast1;
+        public static string TradeItemOfferTooMuchFormat;
+        public static string TradeMoneyOfferTooMuch;
+
+        public static string TradeOtherPlayerHasNegativeMoney;
+        public static string TradeYouHaveNegativeMoney;
+
+        public static string TradeAcceptedMessage;
+        public static string TradeCanceledByYouMessage;
+        public static string TradeCanceledByOtherPlayerFormat;
+        public static string TradeCanceledInterupted;
+
+        public static string TradeYouCantHandleMoreHorses;
+        public static string TradeOtherPlayerCantHandleMoreHorsesFormat;
+
+        public static string TradeYouSpentMoneyMessageFormat;
+        public static string TradeYouReceivedMoneyMessageFormat;
+
+        public static string TradeNotAllowedWhileBidding;
+        public static string TradeNotAllowedWhileOtherBidding;
+
         // Player Interaction
         public static string PlayerHereMenuFormat;
         public static string PlayerHereMulitpleMenuFormat;
@@ -913,6 +980,71 @@ namespace HISP.Game
         // Click
         public static string NothingInterestingHere;
 
+        // Trading
+        public static string FormatTradeYouReceived(int money)
+        {
+            return TradeYouReceivedMoneyMessageFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+        }
+        public static string FormatTradeYouSpent(int money)
+        {
+            return TradeYouSpentMoneyMessageFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+        }
+        public static string FormatTradePlayerCantHandleMoreHorses(string playerName)
+        {
+            return TradeOtherPlayerCantHandleMoreHorsesFormat.Replace("%PLAYERNAME%", playerName);
+        }
+        public static string FormatTradeCanceledByPlayer(string playerName)
+        {
+            return TradeCanceledByOtherPlayerFormat.Replace("%PLAYERNAME%", playerName);
+        }
+        public static string FormatTradeItemOfferTooMuch(int quantity, int enteredAmount)
+        {
+            return TradeItemOfferTooMuchFormat.Replace("%QUANTITY%", quantity.ToString()).Replace("%ENTEREDAMOUNT%", enteredAmount.ToString());
+        }
+        public static string FormatTradeOfferMoneySubmenu(int currentOffer)
+        {
+            return TradeMoneyOfferSubmenuFormat.Replace("%CURRENTMONEYOFFER%", currentOffer.ToString());
+        }
+        public static string FormatTradeOfferItemSubmenu(int quantity)
+        {
+            return TradeItemOfferSubmenuFormat.Replace("%QUANTITY%", quantity.ToString());
+        }
+        public static string FormatTradeOfferItem(int itemIconId, string itemName, int itemCount, int itemId)
+        {
+            return TradeOfferItemFormat.Replace("%ICONID%", itemIconId.ToString()).Replace("%ITEMNAME%", itemName).Replace("%ITEMCOUNT%", itemCount.ToString()).Replace("%ITEMID%", itemId.ToString());
+        }
+        public static string FormatTradeOfferHorse(string horseName, bool tacked, int horseRandomId)
+        {
+            return TradeOfferHorseFormat.Replace("%HORSENAME%", horseName).Replace("%ISTACKED%", tacked ? Messages.TradeOfferHorseTacked : "").Replace("%HORSERANDOMID%", horseRandomId.ToString());
+        }
+        public static string FormatTradeWhatToOffer(string playerName)
+        {
+            return TradeWhatToOfferFormat.Replace("%PLAYERNAME%", playerName);
+        }
+        public static string FormatTradeHorseOffer(string horseName, int horseRandomId)
+        {
+            return TradeOfferingHorseFormat.Replace("%HORSENAME%", horseName).Replace("%HORSERANDOMID%", horseRandomId.ToString());
+        }
+        public static string FormatTradeItemOffer(int quantity, string item)
+        {
+            return TradeOfferingItemFormat.Replace("%TOTAL%", quantity.ToString()).Replace("%ITEM%", item);
+        }
+        public static string FormatTradeMoneyOffer(int amount)
+        {
+            return TradeOfferingMoneyFormat.Replace("%MONEY%", amount.ToString("N0", CultureInfo.InvariantCulture));
+        }
+        public static string FormatTradeOtherOffering(string playerName)
+        {
+            return TradeOtherOfferingFormat.Replace("%PLAYERNAME%", playerName);
+        }
+        public static string FormatTradeYourOffering(string playerName)
+        {
+            return TradeYourOfferingFormat.Replace("%PLAYERNAME%", playerName);
+        }
+        public static string FormatTradeWithPlayer(string playerName)
+        {
+            return TradeWithPlayerFormat.Replace("%PLAYERNAME%", playerName);
+        }
 
         // Player Interactions
         public static string FormatPlayerHerePMButton(string playerName)
diff --git a/Horse Isle Server/HorseIsleServer/Game/Meta.cs b/Horse Isle Server/HorseIsleServer/Game/Meta.cs
index 6de0cd0..f270b7d 100755
--- a/Horse Isle Server/HorseIsleServer/Game/Meta.cs	
+++ b/Horse Isle Server/HorseIsleServer/Game/Meta.cs	
@@ -406,6 +406,15 @@ namespace HISP.Game
             throw new Exception("A mathematically impossible error occured. please check wether the laws of physics still apply.");
         }
 
+        public static string BuildTrade(Trade trade)
+        {
+            bool otherAccepted = (trade.OtherTrade.Stage == "ACCEPTED");
+            bool youAccepted = trade.Stage == "ACCEPTED";
+            string message = "";
+
+            return message;
+        }
+
         public static string buildTackPeiceLibary(Item.ItemInformation item)
         {
             string message = "";
diff --git a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs
index d907f88..2cd6acc 100755
--- a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs	
+++ b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs	
@@ -824,6 +824,72 @@ namespace HISP.Server
             Map.ModIsleX = gameData.messages.commands.mod_isle.x;
             Map.ModIsleY = gameData.messages.commands.mod_isle.y;
 
+            // Trade
+            Messages.TradeWithPlayerFormat = gameData.messages.meta.player_interaction.trade.trading_with;
+
+            Messages.TradeWaitingForOtherDone = gameData.messages.meta.player_interaction.trade.trade_wait_for_done;
+            Messages.TradeOtherPlayerIsDone = gameData.messages.meta.player_interaction.trade.other_player_is_done;
+            Messages.TradeFinalReview = gameData.messages.meta.player_interaction.trade.final_review;
+
+            Messages.TradeYourOfferingFormat = gameData.messages.meta.player_interaction.trade.you_offering;
+
+            Messages.TradeAddItems = gameData.messages.meta.player_interaction.trade.add_items;
+            Messages.TradeOtherOfferingFormat = gameData.messages.meta.player_interaction.trade.other_offering;
+
+            Messages.TradeWhenDoneClick = gameData.messages.meta.player_interaction.trade.when_done_click;
+            Messages.TradeCancelAnytime = gameData.messages.meta.player_interaction.trade.cancel_anytime;
+            Messages.TradeAcceptedMessage = gameData.messages.meta.player_interaction.trade.accept_trade;
+
+            Messages.TradeOfferingNothing = gameData.messages.meta.player_interaction.trade.offering_nothing;
+            Messages.TradeOfferingMoneyFormat = gameData.messages.meta.player_interaction.trade.offering_money;
+            Messages.TradeOfferingItemFormat = gameData.messages.meta.player_interaction.trade.offering_item;
+            Messages.TradeOfferingHorseFormat = gameData.messages.meta.player_interaction.trade.offering_horse;
+
+            // Trading : What to offer
+
+            Messages.TradeWhatToOfferFormat = gameData.messages.meta.player_interaction.trade.what_to_offer;
+            Messages.TradeOfferMoney = gameData.messages.meta.player_interaction.trade.offer_money;
+
+            Messages.TradeOfferHorse = gameData.messages.meta.player_interaction.trade.offer_horse;
+            Messages.TradeOfferHorseFormat = gameData.messages.meta.player_interaction.trade.offer_horse_format;
+            Messages.TradeOfferHorseTacked = gameData.messages.meta.player_interaction.trade.horse_tacked;
+
+            Messages.TradeOfferItem = gameData.messages.meta.player_interaction.trade.offer_object;
+            Messages.TradeOfferItemFormat = gameData.messages.meta.player_interaction.trade.offer_object_format;
+            Messages.TradeOfferObjectOtherPlayerInvFull = gameData.messages.meta.player_interaction.trade.offer_object_inv_full;
+
+            // Trading : Offer Submenu
+
+            Messages.TradeMoneyOfferSubmenuFormat = gameData.messages.meta.player_interaction.trade.money_offer_submenu;
+            Messages.TradeItemOfferSubmenuFormat = gameData.messages.meta.player_interaction.trade.object_offer_submenu;
+
+            // Trading : Messges
+
+            Messages.TradeWaitingForOthersToAcceptMessage = gameData.messages.meta.player_interaction.trade.waiting_for_other_to_accept;
+            Messages.TradeRequiresBothPlayersMessage = gameData.messages.meta.player_interaction.trade.requires_both_players;
+
+            Messages.TradeItemOfferAtleast1 = gameData.messages.meta.player_interaction.trade.object_offer_atleast_1;
+            Messages.TradeItemOfferTooMuchFormat = gameData.messages.meta.player_interaction.trade.object_offer_too_much;
+            Messages.TradeMoneyOfferTooMuch = gameData.messages.meta.player_interaction.trade.money_offer_too_much;
+
+            Messages.TradeOtherPlayerHasNegativeMoney = gameData.messages.meta.player_interaction.trade.other_player_has_negative_money;
+            Messages.TradeYouHaveNegativeMoney = gameData.messages.meta.player_interaction.trade.you_have_negative_money;
+
+
+            Messages.TradeAcceptedMessage = gameData.messages.meta.player_interaction.trade.trade_accepted;
+            Messages.TradeCanceledByYouMessage = gameData.messages.meta.player_interaction.trade.you_canceled;
+            Messages.TradeCanceledByOtherPlayerFormat = gameData.messages.meta.player_interaction.trade.other_canceled;
+            Messages.TradeCanceledInterupted = gameData.messages.meta.player_interaction.trade.trade_interupted;
+
+            Messages.TradeYouCantHandleMoreHorses = gameData.messages.meta.player_interaction.trade.cant_handle_more_horses;
+            Messages.TradeOtherPlayerCantHandleMoreHorsesFormat = gameData.messages.meta.player_interaction.trade.other_player_cant_handle_more_horses;
+
+            Messages.TradeYouSpentMoneyMessageFormat = gameData.messages.meta.player_interaction.trade.trade_spent;
+            Messages.TradeYouReceivedMoneyMessageFormat = gameData.messages.meta.player_interaction.trade.trade_received;
+
+            Messages.TradeNotAllowedWhileBidding = gameData.messages.meta.player_interaction.trade.trade_not_allowed_while_bidding;
+            Messages.TradeNotAllowedWhileOtherBidding = gameData.messages.meta.player_interaction.trade.trade_not_allowed_while_other_is_bidding;
+
             // Player Interation
 
             Messages.PlayerHereMenuFormat = gameData.messages.meta.player_interaction.menu;