Пример #1
0
    public bool Claim(AstroAI astronaut = null)
    {
        if (currentState == BehaveStationStates.Abandoned)
        {
            currentState = BehaveStationStates.Claimed;
            OnTheirWay.Add(astronaut);
            return(true);
        }

        return(false);
    }
Пример #2
0
    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!");
    }
Пример #3
0
    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);
    }