public static InitialState Load(string file, Skills skillConfig)
        {
            InitialState state = Toml.ReadFile <InitialState> (file);

            state.SkillConfig = skillConfig;
            return(state);
        }
        public static InitialState LoadDefault(Skills skillConfig)
        {
            Stream       stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("LS.Core.Configuration.InitialState.tml");
            InitialState state  = Toml.ReadStream <InitialState> (stream);

            state.SkillConfig = skillConfig;
            return(state);
        }
        public GameClient()
        {
            CharacterBehavior behavior     = new CharacterBehavior(Configuration.Behaviors.LoadDefault().GetBehaviorsSets());
            EffectEngine      effectEngine = new EffectEngine(new RandomGenerator(), Configuration.ConfigData.LoadDefault());
            SkillEngine       skillEngine  = new SkillEngine(effectEngine);

            Configuration.Skills skills = Configuration.Skills.LoadDefault();
            InitialState = Configuration.InitialState.LoadDefault(skills);
            GameState state = InitialState.CreateInitialBattle();

            Engine = new GameEngine(state, behavior, skillEngine, effectEngine);
            Engine.DelayedActions      += (o, e) => Delegate?.OnDelayedAction(e.Action);
            Engine.SkillUsed           += (o, e) => Delegate?.OnSkillUsed(e.Character, e.Skill);
            Engine.SkillChannelStarted += (o, e) => Delegate?.OnSkillChannelStarted(e.Character, e.Skill);
            Engine.SkillChannelEnded   += (o, e) => Delegate?.OnSkillChannelEnded(e.Character, e.Skill);
        }