public bool Claim(AstroAI astronaut = null) { if (currentState == BehaveStationStates.Abandoned) { currentState = BehaveStationStates.Claimed; OnTheirWay.Add(astronaut); return(true); } return(false); }
public override bool Arrive(AstroAI astronaut) { if (OnTheirWay.Contains(astronaut)) { OnTheirWay.Remove(astronaut); Assignees.Add(astronaut); currentState = BehaveStationStates.Occupied; return(true); } throw new ArgumentException("Arrive: Astronaut arrived without claiming first!"); }
public override bool Leave(AstroAI astronaut) { if (Assignees.Contains(astronaut) || OnTheirWay.Contains(astronaut)) { Assignees.Remove(astronaut); OnTheirWay.Remove(astronaut); if (Assignees.Count + OnTheirWay.Count == 0) { currentState = BehaveStationStates.Abandoned; } return(true); } return(false); }