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(); } }
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); }