using System;

namespace Utility
{
    [Flags]
    public enum EndGameCondition
    {
        Win = 0x01,
        Lose = 0x02,
        
        Win_GamePublished = Win | 0x04,
        Lose_NoDevelopersLeft = Lose | 0x08,
        Lose_DeadlineMissed = Lose | 0x10
    }

    public static class EndGameConditionExtension
    {
        public static bool IsWin(this EndGameCondition endGameCondition) =>
            endGameCondition.HasFlag(EndGameCondition.Win);
        
        public static bool IsLose(this EndGameCondition endGameCondition) =>
            endGameCondition.HasFlag(EndGameCondition.Lose);
        
        public static string GetEndGameMessage(this EndGameCondition endGameCondition) =>
            endGameCondition switch
            {
                EndGameCondition.Win_GamePublished => "Dein Spiel wurde erfolgreich veröffentlicht!",
                EndGameCondition.Lose_NoDevelopersLeft => "Oh nein, alle deine Entwickler sind weg!",
                EndGameCondition.Lose_DeadlineMissed => "Oh nein, du hast die Deadline verpasst!",
                _ => throw new ArgumentOutOfRangeException(nameof(endGameCondition), endGameCondition, null)
            };
    }
}