using System; using System.Collections.Generic; namespace ET { public class StarSoulBagAwakeSystem: AwakeSystem { public override void Awake(StarSoulBag self) { self.InitData(); } } public class StarSoulBagDeserializeSystem: DeserializeSystem { public override void Deserialize(StarSoulBag self) { } } public class StarSoulBagDestroySystem: DestroySystem { public override void Destroy(StarSoulBag self) { self.ItemCount = 0; self.itemDic.Clear(); } } public static class StarSoulBagSystem { public static void InitData(this StarSoulBag self) { #if UNITY GetDataFromServer(self); #endif } public static bool CanAdd(this StarSoulBag self) { return self.ItemCount < StarSoulBag.MaxCount; } public static string Add(this StarSoulBag self, StarSoulItem item) { if (!self.CanAdd()) return "星魂背包已满"; if (!self.itemDic.TryAdd(item.Id, item)) { Log.Error($"{self.Id.GetPlayerFormatName()} serverId 重复 :{item.Id}"); return "系统错误"; } self.ItemCount++; return null; } public static bool Remove(this StarSoulBag self, long Id) { if(! self.itemDic.Remove(Id)) { return false; } self.ItemCount--; return true; } public static StarSoulItem Get(this StarSoulBag self, long Id) { if (!self.itemDic.TryGetValue(Id, out var itemBase)) { return null; } return itemBase; } } }