194 lines
5.2 KiB
C#
194 lines
5.2 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Unity.VisualScripting;
|
|
using static UnityEditor.Progress;
|
|
|
|
public class ItemManager
|
|
{
|
|
public ItemBox box;
|
|
public ItemManager(List<DeckUnitInfo> deckUnitInfo, List<Equipment> equipment, List<ConsumableItem> consumableItem, List<EtcItem> etcItem)
|
|
{
|
|
box = new ItemBox(deckUnitInfo, equipment, consumableItem, etcItem);
|
|
}
|
|
}
|
|
public class ItemBox
|
|
{
|
|
List<DeckUnitInfo> _deckUnitInfo;
|
|
public List<DeckUnitInfo> deckUnitInfo { get { return _deckUnitInfo; } }
|
|
List<Equipment> _equipment;
|
|
public List<Equipment> equipment { get { return _equipment; } }
|
|
List<ConsumableItem> _consumableItem;
|
|
public List<ConsumableItem> consumableItem { get { return _consumableItem; } }
|
|
List<EtcItem> _etcItem;
|
|
public List<EtcItem> etcItem { get { return _etcItem; } }
|
|
public ItemBox(List<DeckUnitInfo> deckUnitInfo, List<Equipment> equipment, List<ConsumableItem> consumableItem, List<EtcItem> etcItem)
|
|
{
|
|
//아이템 세팅
|
|
|
|
if (deckUnitInfo == null)
|
|
_deckUnitInfo = new List<DeckUnitInfo>();
|
|
else
|
|
_deckUnitInfo = deckUnitInfo.OrderBy(n => n.unit_data_id).ToList();
|
|
|
|
if (equipment == null)
|
|
_equipment = new List<Equipment>();
|
|
else
|
|
_equipment = equipment.OrderBy(n => n.id).ToList();
|
|
|
|
if (consumableItem == null)
|
|
_consumableItem = new List<ConsumableItem>();
|
|
else
|
|
_consumableItem = consumableItem.OrderBy(n => n.id).ToList();
|
|
|
|
if (etcItem == null)
|
|
_etcItem = new List<EtcItem>();
|
|
else
|
|
_etcItem = etcItem.OrderBy(n => n.id).ToList();
|
|
|
|
//유닛 경험치 세팅
|
|
foreach(DeckUnitInfo item in _deckUnitInfo)
|
|
{
|
|
UpdateUnitSpec(item);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 유닛 스팩 업데이트
|
|
/// </summary>
|
|
public void UpdateUnitSpec(DeckUnitInfo unit)
|
|
{
|
|
long saveExp = unit.exp;
|
|
long defaultExp = 1024;
|
|
long saveCount = unit.count;
|
|
long defaultCount = 4;
|
|
int level = 1;
|
|
int rating = 0;
|
|
while(saveExp > defaultExp)
|
|
{
|
|
saveExp -= defaultExp;
|
|
defaultExp = (long)(1.2f * defaultExp);
|
|
level++;
|
|
}
|
|
while (saveCount > defaultCount)
|
|
{
|
|
saveCount -= defaultCount;
|
|
defaultCount = 2 * defaultCount;
|
|
rating++;
|
|
}
|
|
unit.Update(saveExp, level, saveCount, rating);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 유닛 반환
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
public DeckUnitInfo FindDeckUnitInfo(long id)
|
|
{
|
|
return _deckUnitInfo.Find(n => n.id == id);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 유닛 index반환
|
|
/// </summary>
|
|
/// <param name="unit_data_id"></param>
|
|
/// <returns></returns>
|
|
public int FindIndexDeckUnitInfo(long unit_data_id)
|
|
{
|
|
return _deckUnitInfo.FindIndex(n => n.unit_data_id == unit_data_id);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 장비 아이탬 반환
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
public Equipment FindEquipment(long id)
|
|
{
|
|
return _equipment.Find(n => n.id == id);
|
|
}
|
|
|
|
public ConsumableItem FindConsumableItemId(long id)
|
|
{
|
|
return _consumableItem.Find(n => n.id == id);
|
|
}
|
|
public ConsumableItem FindConsumableItemDataId(long dataId)
|
|
{
|
|
return _consumableItem.Find(n => n.consumable_item_data_id == dataId);
|
|
}
|
|
|
|
public EtcItem FindEtcItem(long id)
|
|
{
|
|
return _etcItem.Find(n => n.id == id);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 유닛 업데이트
|
|
/// </summary>
|
|
/// <param name="item"></param>
|
|
public void UpdateDeckUnitInfo(DeckUnitInfo item)
|
|
{
|
|
UpdateUnitSpec(FindDeckUnitInfo(item.id).Update(item));
|
|
}
|
|
|
|
/// <summary>
|
|
/// 장비 업데이트
|
|
/// </summary>
|
|
/// <param name="item"></param>
|
|
public void UpdateEquipment(Equipment item)
|
|
{
|
|
FindEquipment(item.id).Update(item);
|
|
}
|
|
|
|
|
|
public void add(DeckUnitInfo item)
|
|
{
|
|
//유닛은 겹칠일이 없기때문에 그냥 추가
|
|
_deckUnitInfo.Add(item);
|
|
}
|
|
public void add(List<DeckUnitInfo> items)
|
|
{
|
|
//유닛은 겹칠일이 없기때문에 그냥 추가
|
|
_deckUnitInfo.AddRange(items);
|
|
}
|
|
|
|
public void add(Equipment item)
|
|
{
|
|
//장비 아이탬은 겹칠일이 없기때문에 그냥 추가
|
|
_equipment.Add(item);
|
|
}
|
|
public void add(List<Equipment> items)
|
|
{
|
|
//장비 아이탬은 겹칠일이 없기때문에 그냥 추가
|
|
_equipment.AddRange(items);
|
|
}
|
|
|
|
public void add(ConsumableItem item)
|
|
{
|
|
ConsumableItem select = FindConsumableItemId(item.id);
|
|
if (select != null)
|
|
select.count += item.count;
|
|
else
|
|
_consumableItem.Add(item);
|
|
}
|
|
public void add(List<ConsumableItem> items)
|
|
{
|
|
foreach (ConsumableItem item in items)
|
|
add(item);
|
|
}
|
|
|
|
public void add(EtcItem item)
|
|
{
|
|
EtcItem select = FindEtcItem(item.id);
|
|
if (select != null)
|
|
select.count += item.count;
|
|
else
|
|
_etcItem.Add(item);
|
|
}
|
|
|
|
public void add(List<EtcItem> items)
|
|
{
|
|
foreach (EtcItem item in items)
|
|
add(item);
|
|
}
|
|
} |