コード例 #1
0
    public override bool Arrive(AstroAI astronaut)
    {
        if (!Assignees.Contains(astronaut))
        {
            Assignees.Add(astronaut);
            return(Arrive_individual(astronaut));
        }

        return(false);
    }
コード例 #2
0
        protected override bool Leave_individual(AstroAI astronaut)
        {
            if (Assignees.Count == 0)
            {
                // stop showing cat videos
                mySpriteRenderer.sprite = BridgeSprite;
            }

            return(true);
        }
コード例 #3
0
    public override bool Leave(AstroAI astronaut)
    {
        if (Assignees.Contains(astronaut))
        {
            Assignees.Remove(astronaut);
            return(Leave_individual(astronaut));
        }

        return(false);
    }
コード例 #4
0
    public bool Claim(AstroAI astronaut = null)
    {
        if (currentState == BehaveStationStates.Abandoned)
        {
            currentState = BehaveStationStates.Claimed;
            OnTheirWay.Add(astronaut);
            return(true);
        }

        return(false);
    }
コード例 #5
0
        public override bool Leave(AstroAI astronaut)
        {
            if (Assignees.Contains(astronaut))
            {
                mySpriteRenderer.sprite = BridgeSprite;
                Assignees.Remove(astronaut);
                return(true);
            }

            return(false);
        }
コード例 #6
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!");
    }
コード例 #7
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);
    }
コード例 #8
0
    public bool AssignBehavior(AstroAI astronaut)
    {
        //Sort stations by distance
        BehaveStations = BehaveStations.OrderBy(station => astronaut.myBody.Distance2Angle(station.PositionAngle))
                         .ToList();
        //Find closest abandoned station
        foreach (var station in BehaveStations)
        {
            if (station.currentState == BehaveStationStates.Abandoned)
            {
                //set astronaut's station to that station
                station.Claim(astronaut);
                astronaut.myStats.myBehaveStation = station;
                return(true);
            }
        }

        // no free behave station was found
        return(false);
    }
コード例 #9
0
 protected virtual bool Arrive_individual(AstroAI astronaut)
 {
     return(true);
 }
コード例 #10
0
 protected override bool Arrive_individual(AstroAI astronaut)
 {
     // start showing cat videos
     mySpriteRenderer.sprite = BridgeSpriteCat;
     return(true);
 }
コード例 #11
0
 protected override bool Arrive_individual(AstroAI astronaut)
 {
     astronaut.myBody.ChangeThought(Thought.Pyromania);
     return(true);
 }
コード例 #12
0
 public abstract bool Leave(AstroAI astronaut);
コード例 #13
0
 public abstract bool Arrive(AstroAI astronaut);