Files
YachtDice/Assets/Scripts/Player/DiceCollection.cs
T

75 lines
1.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using YachtDice.Dice;
namespace YachtDice.Player
{
public class DiceCollection
{
private readonly List<DiсeDefinition> ownedDice = new();
public event Action OnChanged;
public IReadOnlyList<DiсeDefinition> OwnedDice => ownedDice;
public void Add(DiсeDefinition definition)
{
if (definition == null) return;
if (OwnsById(definition.Id)) return;
ownedDice.Add(definition);
OnChanged?.Invoke();
}
public void Remove(DiсeDefinition definition)
{
if (ownedDice.Remove(definition))
OnChanged?.Invoke();
}
public bool OwnsById(string id)
{
for (int i = 0; i < ownedDice.Count; i++)
{
if (ownedDice[i] != null && ownedDice[i].Id == id)
return true;
}
return false;
}
public List<string> GetSaveData()
{
var ids = new List<string>();
for (int i = 0; i < ownedDice.Count; i++)
ids.Add(ownedDice[i].Id);
return ids;
}
public void LoadSaveData(List<string> diceIds, DiceCatalog catalog)
{
ownedDice.Clear();
if (diceIds == null)
{
OnChanged?.Invoke();
return;
}
for (int i = 0; i < diceIds.Count; i++)
{
var def = catalog.FindById(diceIds[i]);
if (def != null)
ownedDice.Add(def);
}
OnChanged?.Invoke();
}
public void Clear()
{
ownedDice.Clear();
OnChanged?.Invoke();
}
}
}