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); } }
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())); }
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>(); }