/// <summary> /// Tries to apply a <see cref="MapSquareImprovementPivot"/> on the current instance. /// </summary> /// <param name="settler">The settler.</param> /// <param name="action">The action to apply.</param> /// <returns> /// <c>True</c> if the settler actually starts the action; <c>False</c> otherwise. /// </returns> internal bool ApplyAction(SettlerPivot settler, MapSquareImprovementPivot action) { if (!action.AlwaysAvailable && !Biome.Actions.Contains(action)) { return(false); } if (action == MapSquareImprovementPivot.Irrigate) { return(ApplyActionInternal(settler, action, Irrigate)); } if (action == MapSquareImprovementPivot.Mine) { return(ApplyActionInternal(settler, action, Mine)); } if (action == MapSquareImprovementPivot.Road) { return(ApplyActionInternal(settler, action, Road)); } if (action == MapSquareImprovementPivot.DestroyImprovement) { return(ApplyActionInternal(settler, action, !Irrigate && !Mine && !Fortress)); } if (action == MapSquareImprovementPivot.DestroyRoad) { return(ApplyActionInternal(settler, action, !Road && !RailRoad)); } if (action == MapSquareImprovementPivot.BuildFortress) { return(ApplyActionInternal(settler, action, Fortress)); } if (action == MapSquareImprovementPivot.Clear) { return(ApplyActionInternal(settler, action, false)); } if (action == MapSquareImprovementPivot.ClearPollution) { return(ApplyActionInternal(settler, action, Pollution)); } if (action == MapSquareImprovementPivot.Plant) { return(ApplyActionInternal(settler, action, false)); } if (action == MapSquareImprovementPivot.RailRoad) { return(ApplyActionInternal(settler, action, RailRoad)); } return(false); }
/// <summary> /// Adds a settler to the action. /// </summary> /// <param name="settler">The settler.</param> /// <returns><c>True</c> if success; <c>False</c> otherwise.</returns> internal bool AddSettler(SettlerPivot settler) { bool canWork = !settler.BusyOnAction; if (canWork) { _settlers.Add(settler); settler.SetAction(this); } return(canWork); }
private bool ApplyActionInternal(SettlerPivot settler, MapSquareImprovementPivot action, bool currentApplianceValue) { if (currentApplianceValue) { return(false); } var actionInProgress = CurrentActions.SingleOrDefault(a => a.Action == action); if (actionInProgress == null) { actionInProgress = new InProgressMapSquareImprovementPivot(action); _currentActions.Add(actionInProgress); } return(actionInProgress.AddSettler(settler)); }