using Server.SQL; using Server.System; namespace Server.Manager { public class ItemManager { User user; public ItemBox box; public ItemManager(User user) { this.user = user; box = new ItemBox(user); } public void addReward(long reward) { RewardData rewardData; //아이템 획득 처리 if (reward == 0) { //따로 처리가 필요함. } else { rewardData = Statics.rewardExcel.getRewardData(reward); switch (rewardData.reward_item_type) { case eRewardItemType.gold: user.gold += rewardData.return_item; break; case eRewardItemType.freecash: user.free_cash += rewardData.return_item; break; case eRewardItemType.paycash: user.pay_cash += rewardData.return_item; break; case eRewardItemType.character: 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); break; case eRewardItemType.consumable: //소모품 만들고 넣기 break; case eRewardItemType.etc: //기타아이탬 만들고 넣기 break; default: throw new RuntimeException("Not case", Error.nodata); } } } //리워드 아이탬 획득 코드 작성 //패키지 구매시 패키지를 전부 풀어서 아이탬을 획득하는 코드 작성 } 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; public ItemBox(User user) { _deckUnitInfo = Statics.deckUnitInfoSQL.SelectUid(user.id); _equipment = Statics.equipmentrSQL.SelectUid(user.id); addDeckUnitInfo = new List(); addEquipment = new List(); } public void SaveSQL() { if (_deckUnitInfo.Count != 0) { Statics.deckUnitInfoSQL.Insert(_deckUnitInfo); Statics.deckUnitInfoSQL.SaveChanges(); _deckUnitInfo.Clear(); } if (_equipment.Count != 0) { Statics.equipmentrSQL.Insert(_equipment); Statics.equipmentrSQL.SaveChanges(); _equipment.Clear(); } } public bool Add(DeckUnitInfo item) { if(_deckUnitInfo.FindIndex(n => n.unit_id == item.unit_id) != -1) return false; _deckUnitInfo.Add(item); addDeckUnitInfo.Add(item); return true; } public bool Add(List items) { foreach(var item in items) { if (_deckUnitInfo.FindIndex(n => n.unit_id == item.unit_id) != -1) return false; } _deckUnitInfo.AddRange(items); addDeckUnitInfo.AddRange(items); return true; } public bool Add(Equipment item) { _equipment.Add(item); addEquipment.Add(item); return true; } public bool Add(List items) { _equipment.AddRange(items); addEquipment.AddRange(items); return true; } } }