Beispiel #1
0
        public void Execute(GameState state, ConfigRoot config, ICommandBuffer _)
        {
            var playerUnits = FindPlayerUnits(state);
            var enemyUnits  = CreateEnemyUnits(state, config);

            state.Level            = new LevelState(LevelDesc, playerUnits, enemyUnits);
            state.Level.PlayerTurn = true;

            foreach (var unitId in PlayerUnits)
            {
                state.Units.Remove(unitId);
            }
            if (FarmLogic.IsFarmigLevel(LevelDesc, config))
            {
                var scope = LevelUtils.GetScope(LevelDesc);
                state.Farming[scope] = state.Time.GetRealTime();
            }
        }
Beispiel #2
0
        public bool IsValid(GameState state, ConfigRoot config)
        {
            if (string.IsNullOrEmpty(LevelDesc))
            {
                return(false);
            }
            if (!config.Levels.ContainsKey(LevelDesc))
            {
                return(false);
            }
            var scope           = LevelUtils.GetScope(LevelDesc);
            var currentProgress = state.Progress.GetOrDefault(scope);

            if (currentProgress < LevelUtils.GetIndex(LevelDesc))
            {
                return(false);
            }
            if ((PlayerUnits == null) || (PlayerUnits.Count == 0) || (PlayerUnits.Count > 4))
            {
                return(false);
            }
            var playerUnits = FindPlayerUnits(state);

            if (playerUnits == null)
            {
                return(false);
            }
            foreach (var unit in playerUnits)
            {
                if (unit.Health <= 0)
                {
                    return(false);
                }
            }
            if (FarmLogic.IsFarmigLevel(LevelDesc, config))
            {
                if (!FarmLogic.IsAvailable(scope, state, config))
                {
                    return(false);
                }
            }
            return(true);
        }