public Pigeon(List <Place> places, int currentPosition) { index = Randomize.GetValue(1, 9); maxTimeWiting = Randomize.GetValue(Config.pigeonMinTimesWaiting, Config.pigeonMaxTimesWaiting); ChoseDirection(); pigeonAction = PigeonAction.Waiting; actuator = new PigeonActuator(); sensor = new PigeonSensor(this); this.places = places; this.currentPosition = currentPosition; thread = new Thread(new ThreadStart(Loop)); thread.Start(); }
/// <summary> /// This method is triggered when the cat appears. /// The pigeon must wake up or disperse to a random position. /// </summary> internal void WakeUpOrChangePosition() { if (pigeonAction == PigeonAction.Sleeping) { SetWakeUp(); return; } int newPosition = Randomize.GetValue(0, Config.environmentSize - 1); if (!places[newPosition].isClean()) { return; } SetDirection(newPosition); ExecuteWalk(newPosition); }