From 44f1327bd216726487d22b9d55ebe7843381ee77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=84=9C?= Date: Thu, 29 Feb 2024 16:42:54 +0900 Subject: [PATCH] =?UTF-8?q?=EC=98=A4=ED=83=88=EC=9E=90=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=EB=B0=8F=20=EA=B7=9C=EC=B9=99=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Server/Manager/ItemManager.cs | 103 ++++++++++++++++++++++++++----- Server/SQL/ConsumableItem.cs | 37 +++++++++++ Server/SQL/ConsumableItemData.cs | 12 ++-- Server/SQL/DeckUnitInfo.cs | 2 +- Server/SQL/RewardData.cs | 1 + Server/Service/BuyShopItem.cs | 2 +- 6 files changed, 133 insertions(+), 24 deletions(-) create mode 100644 Server/SQL/ConsumableItem.cs diff --git a/Server/Manager/ItemManager.cs b/Server/Manager/ItemManager.cs index a6dedb3..8e85bbe 100644 --- a/Server/Manager/ItemManager.cs +++ b/Server/Manager/ItemManager.cs @@ -1,10 +1,13 @@ -using Server.SQL; +using NLog; +using Server.SQL; using Server.System; namespace Server.Manager { public class ItemManager { + private static readonly NLog.ILogger logger = LogManager.GetCurrentClassLogger(); + User user; public ItemBox box; @@ -30,33 +33,45 @@ namespace Server.Manager switch (rewardData.reward_item_type) { case eRewardItemType.gold: - user.gold += rewardData.return_item; + user.gold += rewardData.return_count; break; case eRewardItemType.freecash: - user.free_cash += rewardData.return_item; + user.free_cash += rewardData.return_count; break; case eRewardItemType.paycash: - user.pay_cash += rewardData.return_item; + user.pay_cash += rewardData.return_count; break; case eRewardItemType.character: - DeckUnitInfo deckUnitInfo = new DeckUnitInfo(); - deckUnitInfo.user_id = user.id; - deckUnitInfo.unit_id = rewardData.return_item; - box.Add(deckUnitInfo); + for (int n = 0; n < rewardData.return_count; n++) + { + DeckUnitInfo deckUnitInfo = new DeckUnitInfo(); + deckUnitInfo.user_id = user.id; + deckUnitInfo.unit_id = rewardData.return_item; + box.Add(deckUnitInfo); + } break; case eRewardItemType.equipment: - Equipment equipment = new Equipment(); - equipment.user_id = user.id; - equipment.equip_unit = 0; - equipment.rand_stats = (new Random()).Next(5); - equipment.equipment_data_id = rewardData.return_item; - box.Add(equipment); + Random rand = new Random(); + for (int n = 0; n < rewardData.return_count; n++) + { + Equipment equipment = new Equipment(); + equipment.user_id = user.id; + equipment.equip_unit = 0; + equipment.rand_stats = rand.Next(5); + equipment.equipment_data_id = rewardData.return_item; + box.Add(equipment); + } break; case eRewardItemType.consumable: - //소모품 만들고 넣기 + ConsumableItem consumableItem = new ConsumableItem(); + consumableItem.user_id = user.id; + consumableItem.consumable_item_data_id = rewardData.return_item; + consumableItem.count = rewardData.return_count; + box.Add(consumableItem); break; case eRewardItemType.etc: //기타아이탬 만들고 넣기 + logger.Info("아직 개발중인 시스템"); break; default: throw new RuntimeException("Not case", Error.nodata); @@ -72,14 +87,20 @@ namespace Server.Manager public class ItemBox { + //유닛 List _deckUnitInfo; public List deckUnitInfo { get { return _deckUnitInfo; } } - public List addDeckUnitInfo; + //장비 List _equipment; public List equipment { get { return _equipment; } } public List addEquipment; + + //소모품 + List _consumableItem; + public List consumableItem { get { return _consumableItem; } } + public List addConsumableItem; public ItemBox(User user) { @@ -133,13 +154,61 @@ namespace Server.Manager return true; } - public bool Add(List items) { _equipment.AddRange(items); addEquipment.AddRange(items); return true; } + + public bool Add(ConsumableItem item) + { + int index = _consumableItem.FindIndex(n => n.consumable_item_data_id == item.consumable_item_data_id); + int addIndex = addConsumableItem.FindIndex(n => n.consumable_item_data_id == item.consumable_item_data_id); + if (index == -1) + { + _consumableItem.Add(item); + } + else + { + _consumableItem[index].count += item.count; + } + if (addIndex == -1) + { + addConsumableItem.Add(item); + } + else + { + addConsumableItem[index].count += item.count; + } + return true; + } + + public bool Add(List items) + { + foreach(ConsumableItem item in items) + { + int index = _consumableItem.FindIndex(n => n.consumable_item_data_id == item.consumable_item_data_id); + int addIndex = addConsumableItem.FindIndex(n => n.consumable_item_data_id == item.consumable_item_data_id); + if (index == -1) + { + _consumableItem.Add(item); + } + else + { + _consumableItem[index].count += item.count; + } + if (addIndex == -1) + { + addConsumableItem.Add(item); + } + else + { + addConsumableItem[index].count += item.count; + } + } + return true; + } } } diff --git a/Server/SQL/ConsumableItem.cs b/Server/SQL/ConsumableItem.cs new file mode 100644 index 0000000..26f26a9 --- /dev/null +++ b/Server/SQL/ConsumableItem.cs @@ -0,0 +1,37 @@ +using Microsoft.EntityFrameworkCore; +using Newtonsoft.Json; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Server.SQL +{ + [Table("consumable_item", Schema = "gamedb")] + public class ConsumableItem + { + public long id { get; set; } + [JsonIgnore] + public long user_id { get; set; } + public long consumable_item_data_id { get; set; } + + public int count { get; set; } + } + + public class ConsumableItemSQL : SQL + { + public override DbSet table { get; set; } + + public void Update(ConsumableItem consumableItem) + { + table.Update(consumableItem); + } + + public override List SelectUid(long user_id) + { + return table.Where(data => data.user_id == user_id).ToList(); + } + + public ConsumableItem SelectItem(long user_id, long consumable_item_id) + { + return table.FirstOrDefault(data => (data.user_id == user_id) && (data.id == consumable_item_id)); + } + } +} diff --git a/Server/SQL/ConsumableItemData.cs b/Server/SQL/ConsumableItemData.cs index 6996dd5..685aa29 100644 --- a/Server/SQL/ConsumableItemData.cs +++ b/Server/SQL/ConsumableItemData.cs @@ -34,15 +34,17 @@ namespace Server.SQL { return consumableItemData.Values.ToList(); } - public void init(sheet data) + public void init(Sheet data) { this.consumableItemData = new Dictionary(); foreach (var item in data.dicViewer) { - //ConsumableItemData ConsumableItemData = new ConsumableItemData(); - //ConsumableItemData.index = item.Key; - //ConsumableItemData.part = (int)item.Value["part"]; - //this.ConsumableItemData.Add(item.Key, ConsumableItemData); + ConsumableItemData consumableItemData = new ConsumableItemData(); + consumableItemData.index = item.Key; + consumableItemData.name = (string)item.Value["name"]; + consumableItemData.item_type = (eItemType)item.Value["item_type"]; + consumableItemData.reward = (string)item.Value["reward"]; + this.consumableItemData.Add(item.Key, consumableItemData); } } } diff --git a/Server/SQL/DeckUnitInfo.cs b/Server/SQL/DeckUnitInfo.cs index 8cfc929..48d316a 100644 --- a/Server/SQL/DeckUnitInfo.cs +++ b/Server/SQL/DeckUnitInfo.cs @@ -8,7 +8,7 @@ namespace Server.SQL public class DeckUnitInfo { public long id { get; set; } - public long unit_id { get; set; } + public long unit_id { get; set; }//네이밍 변경할것 unit_id > unit_data_id [JsonIgnore] public long user_id { get; set; } public long equip0_id { get; set; } diff --git a/Server/SQL/RewardData.cs b/Server/SQL/RewardData.cs index 921b669..8af3491 100644 --- a/Server/SQL/RewardData.cs +++ b/Server/SQL/RewardData.cs @@ -9,6 +9,7 @@ namespace Server.SQL public long index { get; set; } public eRewardItemType reward_item_type { get; set; } public long return_item { get; set; } + public int return_count { get; set; } } public enum eRewardItemType diff --git a/Server/Service/BuyShopItem.cs b/Server/Service/BuyShopItem.cs index 3acf750..d44afbe 100644 --- a/Server/Service/BuyShopItem.cs +++ b/Server/Service/BuyShopItem.cs @@ -14,7 +14,7 @@ namespace Server.Service private void SaveSQL(ItemManager item) { Statics.userSQL.SaveChanges(); - item.SaveSQL(); + item.box.SaveSQL(); } public override string Process()