public virtual void ReactToAnnouncement(ActionAnnouncement announcement) { if (Routine != null) { Routine.ReactToAnnouncement(announcement); } }
protected override void ReactToAnnouncement(ActionAnnouncement announcement) { if (AI != null) { AI.ReactToAnnouncement(announcement); } base.ReactToAnnouncement(announcement); }
private void Announce(ActionOutcome outcome) { foreach (var(type, stakeholder) in Stakeholders()) { var announcement = new ActionAnnouncement(this, outcome, type); stakeholder.HandleAnnouncement(announcement); } var locationAnnouncement = new ActionAnnouncement(this, outcome, TargetType.Scene); Actor.Location.HandleAnnouncement(locationAnnouncement); }
public void HandleAnnouncement(ActionAnnouncement announcement) { ReactToAnnouncement(announcement); if (announcement.Relationship == TargetType.Scene) { var bystanderAnnouncement = new ActionAnnouncement( content: announcement.Content, outcome: announcement.Outcome, relationship: TargetType.Witness ); BroadcastAnnouncement(bystanderAnnouncement); } }
protected void BroadcastAnnouncement(ActionAnnouncement announcement) { ActionAnnouncement announcementForBystanders = new ActionAnnouncement( content: announcement.Content, outcome: announcement.Outcome, relationship: TargetType.Witness ); foreach (GameObject gameObject in contents) { gameObject.HandleAnnouncement(announcementForBystanders); } }
public override void ReactToAnnouncement(ActionAnnouncement announcement) { // This method prints output IMMEDIATELY, rather than adding to the message queue. // This way you see "You hit the orc. The orc dies." and not the other way around. base.ReactToAnnouncement(announcement); if (announcement.IsSuccessful(out PhysicalAction? physicalAction, TargetType.Witness)) { if (physicalAction.Quiet && physicalAction.Actor == this.Actor) { // Do nothing - we don't need to know about our own insignificant actions. } else { userInterface.PrintOutput(physicalAction.AnnouncementText(Actor)); } } if ( announcement.Relationship == TargetType.Actor && announcement.Outcome is FailedOutcome failure ) { userInterface.PrintOutput(failure.Reason); } }
protected virtual void ReactToAnnouncement(ActionAnnouncement announcement) { }
public virtual ActionOutcome Allows(ActionAnnouncement announcement) { return(new SuccessfulOutcome()); }
public void HandleAnnouncement(ActionAnnouncement announcement) { // do nothing }