Skip to content

Commit

Permalink
I guess if YML doesnt exist on client should handle this somehow huh?
Browse files Browse the repository at this point in the history
  • Loading branch information
sbtoonz committed Mar 20, 2023
1 parent bea899f commit 4d64d7e
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 17 deletions.
7 changes: 4 additions & 3 deletions Trader2.0/ModCore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,10 @@ private static void OnValChangUpdateStore()
foreach (var variable in TraderConfig.Value)
{
var drop = ObjectDB.instance.GetItemPrefab(variable.Key);
ItemDrop id = null;
if(drop)
{
var id = drop.GetComponent<ItemDrop>();
id = drop.GetComponent<ItemDrop>();
if(id == null)
{
Trader20.knarrlogger.LogError("Failed to load ItemDrop for trader's item: " + variable.Key);
Expand All @@ -149,13 +150,13 @@ private static void OnValChangUpdateStore()
knarrlogger.LogError("Please Check your Prefab name "+ variable.Key);

}


}
//if you are the server shoot the YML file to the client if you are the client write the YML to local storage?
if (OdinStore.instance != null)
{
OdinStore.instance.ClearStore();
}

}
private void SetupWatcher()
{
Expand Down
67 changes: 53 additions & 14 deletions Trader2.0/MonoScripts/OdinStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public class OdinStore : MonoBehaviour
internal static ElementFormat? tempElement;
internal static Material? litpanel;
internal List<ElementFormat> _knarSellElements = new();
internal List<ElementFormat> _playerSellElements = new();
internal List<ElementFormat> _playerSellElements;
private List<ItemDrop.ItemData> m_tempItems = new List<ItemDrop.ItemData>();


Expand All @@ -95,8 +95,9 @@ public class OdinStore : MonoBehaviour

//split dialog
internal bool iscurrentlysplitting = false;
private void Awake()
private void Awake()
{
_playerSellElements = new List<ElementFormat>();
m_instance = this;
var rect = m_StorePanel!.transform as RectTransform;
rect!.anchoredPosition = Trader20.Trader20.StoreScreenPos!.Value;
Expand Down Expand Up @@ -428,7 +429,7 @@ public void SellItem(int i)
LogSales(concatinated).ConfigureAwait(false);
}

private static void UpdateYmlFileFromSaleOrBuy(ItemDrop.ItemData sellableItem, int newInvCount, bool isPlayerItem)
internal void UpdateYmlFileFromSaleOrBuy(ItemDrop.ItemData sellableItem, int newInvCount, bool isPlayerItem)
{

if(Trader20.Trader20.ConfigWriteSalesBuysToYml?.Value != true) return;
Expand Down Expand Up @@ -768,8 +769,9 @@ private void SetupPlayerItemListTask()
{
ReturnPooledElement(element);
}
_playerSellElements.Clear();
}
_playerSellElements.Clear();

foreach (var itemData in m_tempItems.Where(itemData => YMLContainsKey(itemData.m_dropPrefab.name)).Where(itemData => ReturnYMLPlayerPurchaseValue(itemData.m_dropPrefab.name) != 0))
{
AddItemToDisplayList(itemData.m_dropPrefab.GetComponent<ItemDrop>(), itemData.m_stack, ReturnYMLPlayerPurchaseValue(itemData.m_dropPrefab.name), itemData.m_stack, SellListRoot, true);
Expand Down Expand Up @@ -829,20 +831,57 @@ public void OnBuyItem()

}

private protected int ReturnYMLPlayerPurchaseValue(string s)
private int ReturnYMLPlayerPurchaseValue(string s)
{
var file = File.OpenText(Trader20.Trader20.Paths + "/trader_config.yaml");
var currentList = YMLParser.ReadSerializedData(file.ReadToEnd());
file.Close();
return currentList[s].PurchaseFromPlayerCost;
if(ZNet.instance.IsServer() && !ZNet.instance.IsDedicated()) //Local
{
var file = File.OpenText(Trader20.Trader20.Paths + "/trader_config.yaml");
var currentList = YMLParser.ReadSerializedData(file.ReadToEnd());
file.Close();
return currentList[s].PurchaseFromPlayerCost;
}

if (ZNet.instance.IsServer() && ZNet.instance.IsDedicated()) //Server
{
var file = File.OpenText(Trader20.Trader20.Paths + "/trader_config.yaml");
var currentList = YMLParser.ReadSerializedData(file.ReadToEnd());
file.Close();
return currentList[s].PurchaseFromPlayerCost;
}

if (!ZNet.instance.IsServer() && !ZNet.instance.IsDedicated()) //Client
{
return Trader20.Trader20.TraderConfig.Value[s].PurchaseFromPlayerCost;
}

return 0;
}

private protected bool YMLContainsKey(string s)
private bool YMLContainsKey(string s)
{
var file = File.OpenText(Trader20.Trader20.Paths + "/trader_config.yaml");
var currentList = YMLParser.ReadSerializedData(file.ReadToEnd());
file.Close();
return currentList.ContainsKey(s);
if(ZNet.instance.IsServer() && !ZNet.instance.IsDedicated()) //Local
{
var file = File.OpenText(Trader20.Trader20.Paths + "/trader_config.yaml");
var currentList = YMLParser.ReadSerializedData(file.ReadToEnd());
file.Close();
return currentList.ContainsKey(s);
}

if (ZNet.instance.IsServer() && ZNet.instance.IsDedicated()) //Server
{
var file = File.OpenText(Trader20.Trader20.Paths + "/trader_config.yaml");
var currentList = YMLParser.ReadSerializedData(file.ReadToEnd());
file.Close();
return currentList.ContainsKey(s);
}

if (!ZNet.instance.IsServer() && !ZNet.instance.IsDedicated()) //Client
{
return Trader20.Trader20.TraderConfig.Value.ContainsKey(s);
}

return false;

}

private void SetActiveSelection()
Expand Down

0 comments on commit 4d64d7e

Please sign in to comment.