protected static void OnBirth(Event e) { PregnancyEvent pregEvent = e as PregnancyEvent; if (pregEvent == null) { return; } Sim actor = e.Actor as Sim; if (actor == null) { return; } // Means of differentiating between parents if (!actor.SimDescription.IsPregnant) { return; } foreach (Sim child in pregEvent.Babies) { Inoculate(child, actor); } }
protected override void Execute() { edible.gameObject.SetActive(false); //TODO this should be handled by the edibles strategy instead SnakePartComponent snakePart; if (mouth.TryGetComponents(out snakePart)) { var pregEvent = new PregnancyEvent(snakePart); EgoEvents <PregnancyEvent> .AddEvent(pregEvent); } }
void Handle(PregnancyEvent e) { constraint.ForEachGameObject((egoComponent, transform, snakePart) => { if (e.newParent == snakePart) { if (!snakePart.isPregnant) { var commandEvent = new CommandEvent(new PregnancyCommand(snakePart, transform.position, true), 0); EgoEvents <CommandEvent> .AddEvent(commandEvent); } } }); }