public class Shop : Scene
{
// bool 변수는 팔렸는지의 여부(true면 구매불가)
public List<(Item, bool)> items { get; protected set; }
}
public class Player : Unit
{
public List<(Item, bool)> items { get; private set; }
}
public void EquipOrDequip(int index)
{
var selectedItem = items[index];
if (selectedItem.Item2)
{
items[index] = (selectedItem.Item1, false);
Console.WriteLine($"{selectedItem.Item1.name}이(가) 해제되었습니다.");
}
else
{
var itemType = selectedItem.Item1.itemType;
foreach (var i in items.Where(i => i.Item2 && i.Item1.itemType == itemType).ToList())
{
items[items.IndexOf(i)] = (i.Item1, false);
Console.WriteLine($"{i.Item1.name}이(가) 해제되었습니다.");
}
items[index] = (selectedItem.Item1, true);
Console.WriteLine($"{selectedItem.Item1.name}이(가) 장착되었습니다.");
}
}
foreach (var i in items.Where(i => i.Item2 && i.Item1.itemType == itemType).ToList())
list.where은 원본 데이터에서의 일부 조건을 만족하는 데이터를 추출하고자 사용한다.
items[items.IndexOf(i)] = (i.Item1, false);
indexOf(i)의 경우 특정 리스트의 index값을 알기 위해 사용되었다.