Chessistics/chessistics-engine/Model/CampaignState.cs

23 lines
865 B
C#
Raw Permalink Normal View History

namespace Chessistics.Engine.Model;
public class CampaignState
{
public CampaignDef CampaignDef { get; }
public int CurrentMissionIndex { get; set; }
public List<int> CompletedMissions { get; } = new();
public HashSet<PieceKind> AvailablePieceKinds { get; } = new();
public HashSet<PieceUpgrade> AvailableLevels { get; } = new();
public CampaignState(CampaignDef campaignDef)
{
CampaignDef = campaignDef;
CurrentMissionIndex = 0;
}
public MissionDef CurrentMission => CampaignDef.Missions[CurrentMissionIndex];
public bool IsLastMission => CurrentMissionIndex >= CampaignDef.Missions.Count - 1;
public bool IsPieceAvailable(PieceKind kind) => AvailablePieceKinds.Contains(kind);
public bool IsLevelAvailable(PieceKind kind, int level) => AvailableLevels.Contains(new PieceUpgrade(kind, level));
}