Exemple #1
0
 public void Raise(Actor.Actor actor)
 {
     foreach (IActorDeathEventListener listener in this.Listeners)
     {
         listener.OnEventRaised(actor);
     }
 }
 public void CompleteByActor(Actor actor)
 {
     lock (this.locker)
     {
         this.actors.Remove(actor);
         Monitor.Pulse(this.locker);
     }
 }
Exemple #3
0
        private static void Main()
        {
            Actor actor = new Actor();

            IFoodEvaluator foodEvaluator = actor.GetFoodEvaluator();
            IActionsEvaluator actionsEvaluator = actor.GetActionsEvaluator();

            InternalState internalState = actor.GetInternalState();
            Animal animal = actor.GetAnimal(internalState, foodEvaluator, actionsEvaluator);

            IActionFunction actionFunction = actor.GetActionFunction();
            IFoodFunction foodFunction = actor.GetFoodFunction();

            EnvironmentArea environmentArea = actor.GetEnvironmentArea(foodFunction, actionFunction);

            while (true)
            {
                TimeSpan time = environmentArea.GetTimeBeforeFood();

                if (animal.WillStayAlive(time))
                {
                    if (!animal.IsSatiated)
                    {
                        animal.SearchForFood(time);
                    }
                    else
                    {
                        animal.Sleep();
                    }

                    Food food = environmentArea.CreateFood();
                    EventReaction reaction = animal.EatFood(food);
                    if (reaction == EventReaction.Alive)
                    {
                        Action action = environmentArea.CreateAction();
                        reaction = animal.ReactForAction(action);
                        if (reaction == EventReaction.Alive)
                        {
                            continue;
                        }
                        animal.Die(DeathReason.ActionReaction);
                        Main();
                    }
                    animal.Die(DeathReason.FoodReaction);
                    Main();
                }

                animal.Die(DeathReason.NoFood);
                Main();
            }
        }
 public void SendMessage(Actor to, IMessage message)
 {
     to.EnqueueByActorManager(message);
 }
 public void RunActor(Actor actor)
 {
     this.actors.Add(actor);
     ThreadPool.QueueUserWorkItem((state) => actor.EnqueueByActorManager(new StartMessage()));
 }
Exemple #6
0
 protected void Send(Actor to, IMessage message)
 {
     this.actorManager.SendMessage(to, message);
 }
        public void CreateActor()
        {
            var act = Instantiate(this.Actor.gameObject, this.transform.position, Quaternion.identity);

            this.GetActor = act.GetComponent <Actor.Actor>();
        }