itembox제작
This commit is contained in:
parent
0fe0af2130
commit
2823581f19
|
|
@ -0,0 +1,145 @@
|
||||||
|
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> _deckUnitInfo;
|
||||||
|
public List<DeckUnitInfo> deckUnitInfo { get { return _deckUnitInfo; } }
|
||||||
|
|
||||||
|
public List<DeckUnitInfo> addDeckUnitInfo;
|
||||||
|
|
||||||
|
List<Equipment> _equipment;
|
||||||
|
public List<Equipment> equipment { get { return _equipment; } }
|
||||||
|
public List<Equipment> addEquipment;
|
||||||
|
|
||||||
|
public ItemBox(User user)
|
||||||
|
{
|
||||||
|
_deckUnitInfo = Statics.deckUnitInfoSQL.SelectUid(user.id);
|
||||||
|
_equipment = Statics.equipmentrSQL.SelectUid(user.id);
|
||||||
|
addDeckUnitInfo = new List<DeckUnitInfo>();
|
||||||
|
addEquipment = new List<Equipment>();
|
||||||
|
}
|
||||||
|
|
||||||
|
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<DeckUnitInfo> 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<Equipment> items)
|
||||||
|
{
|
||||||
|
_equipment.AddRange(items);
|
||||||
|
addEquipment.AddRange(items);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@ using Newtonsoft.Json;
|
||||||
using Server.SQL;
|
using Server.SQL;
|
||||||
using LibGit2Sharp;
|
using LibGit2Sharp;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using Server.Manager;
|
||||||
|
|
||||||
namespace Server.Service
|
namespace Server.Service
|
||||||
{
|
{
|
||||||
|
|
@ -10,16 +11,16 @@ namespace Server.Service
|
||||||
{
|
{
|
||||||
private BuyShopItemReq req;
|
private BuyShopItemReq req;
|
||||||
|
|
||||||
private void SaveSQL()
|
private void SaveSQL(ItemManager item)
|
||||||
{
|
{
|
||||||
Statics.userSQL.SaveChanges();
|
Statics.userSQL.SaveChanges();
|
||||||
|
item.SaveSQL();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string Process()
|
public override string Process()
|
||||||
{
|
{
|
||||||
User user = Statics.userSQL.SelectUuid(req.uuid);
|
User user = Statics.userSQL.SelectUuid(req.uuid);
|
||||||
ShopItemData shopItemData = Statics.shopItemExcel.getShopItemData(req.index);
|
ShopItemData shopItemData = Statics.shopItemExcel.getShopItemData(req.index);
|
||||||
RewardData rewardData;
|
|
||||||
|
|
||||||
//획득 가능한 아이템인지 확인
|
//획득 가능한 아이템인지 확인
|
||||||
switch (shopItemData.buy_type)
|
switch (shopItemData.buy_type)
|
||||||
|
|
@ -43,61 +44,16 @@ namespace Server.Service
|
||||||
throw new RuntimeException("Not case", Error.nodata);
|
throw new RuntimeException("Not case", Error.nodata);
|
||||||
}
|
}
|
||||||
|
|
||||||
DeckUnitInfo deckUnitInfo = null;
|
ItemManager item = new ItemManager(user);
|
||||||
Equipment equipment = null;
|
|
||||||
|
|
||||||
//아이템 획득 처리
|
item.addReward(shopItemData.reward);
|
||||||
if (shopItemData.reward == 0)
|
|
||||||
{
|
|
||||||
//따로 처리가 필요함.
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rewardData = Statics.rewardExcel.getRewardData(shopItemData.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 = new DeckUnitInfo();
|
|
||||||
deckUnitInfo.user_id = user.id;
|
|
||||||
deckUnitInfo.unit_id = rewardData.return_item;
|
|
||||||
break;
|
|
||||||
case eRewardItemType.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;
|
|
||||||
break;
|
|
||||||
case eRewardItemType.consumable:
|
|
||||||
//소모품 만들고 넣기
|
|
||||||
break;
|
|
||||||
case eRewardItemType.etc:
|
|
||||||
//기타아이탬 만들고 넣기
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new RuntimeException("Not case", Error.nodata);
|
|
||||||
|
|
||||||
|
SaveSQL(item);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SaveSQL();
|
|
||||||
return makeResp();
|
return makeResp();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Protocol ProtocolValue() => Protocol.BuyShopItem;
|
public override Protocol ProtocolValue() => Protocol.BuyShopItem;
|
||||||
|
|
||||||
public override Req Requst(string json)
|
public override Req Requst(string json)
|
||||||
{
|
{
|
||||||
req = JsonConvert.DeserializeObject<BuyShopItemReq>(json);
|
req = JsonConvert.DeserializeObject<BuyShopItemReq>(json);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue