You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
2.8 KiB
125 lines
2.8 KiB
using System.Collections; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
|
|
[System.Serializable] |
|
public class ItemData |
|
{ |
|
public string idx; |
|
public bool OVERLAP = true; |
|
public string type; |
|
public int tier; |
|
public int price; |
|
public string work; |
|
public float value; |
|
public List<SkillData> skills = new List<SkillData>(); |
|
|
|
[Space(10)] |
|
[OnlyRead] |
|
public int hold = 0; |
|
public void Add(int value) |
|
{ |
|
this.hold += value; |
|
} |
|
|
|
public string time; |
|
static public ItemData Create(string[] spl) |
|
{ |
|
int i = 0; |
|
ItemData item = new ItemData(); |
|
|
|
item.idx = spl[i++]; |
|
i++; |
|
item.OVERLAP = bool.Parse(spl[i++]); |
|
item.type = spl[i++]; |
|
|
|
item.tier = int.Parse(spl[i++]); |
|
item.price = int.Parse(spl[i++]); |
|
|
|
item.work = spl[i++]; |
|
item.value = float.Parse(spl[i++]); |
|
|
|
item.time = $"{System.DateTime.UtcNow}"; |
|
|
|
for (; i < spl.Length; i++) |
|
{ |
|
if (1 < spl[i].Length) |
|
item.skills.Add(SkillData.Create(spl[i])); |
|
} |
|
|
|
return item; |
|
} |
|
static public ItemData Copy(ItemData origin, int value = 0) |
|
{ |
|
ItemData item = new ItemData(); |
|
|
|
item.idx = origin.idx; |
|
item.OVERLAP = origin.OVERLAP; |
|
item.type = origin.type; |
|
|
|
item.tier = origin.tier; |
|
item.price = origin.price; |
|
|
|
item.work = origin.work; |
|
item.value = origin.value; |
|
|
|
item.hold = 0; |
|
item.Add(value); |
|
|
|
item.time = $"{System.DateTime.UtcNow}"; |
|
|
|
for(int i = 0; i < origin.skills.Count; i++) |
|
item.skills.Add(SkillData.Copy(origin.skills[i])); |
|
|
|
return item; |
|
} |
|
} |
|
|
|
[System.Serializable] |
|
public class DataItem : IData |
|
{ |
|
Dictionary<string, ItemData> listItem; |
|
public List<ItemData> items; |
|
public override void TableLoad() |
|
{ |
|
string[] strLine = FileLoadWithLineSplit(path == string.Empty ? "CSV/Item" : path); |
|
string[] spl; |
|
|
|
listItem = new Dictionary<string, ItemData>(); |
|
for (int i = 1; i < strLine.Length; i++) |
|
{ |
|
if (1 < strLine[i].Length) |
|
{ |
|
spl = strLine[i].Split(','); |
|
|
|
if (bool.Parse(spl[1])) |
|
{ |
|
ItemData item = ItemData.Create(spl); |
|
listItem.Add(item.idx, item); |
|
} |
|
} |
|
} |
|
|
|
items = new List<ItemData>(listItem.Values); |
|
} |
|
public override void LoadedCheck() |
|
{ |
|
if (listItem == null) |
|
TableLoad(); |
|
} |
|
|
|
public List<ItemData> ListGet() |
|
{ |
|
LoadedCheck(); |
|
|
|
return items; |
|
} |
|
public ItemData Search(string idx) |
|
{ |
|
LoadedCheck(); |
|
|
|
if (listItem.ContainsKey(idx)) return listItem[idx]; |
|
//return ItemData.Copy(listItem[idx]); |
|
return null; |
|
} |
|
}
|
|
|