QueuedAction GenerateQueueAction(StoryOutput output) { if (output is StoryText) { GameObject textElement = Instantiate(textTemplate); QueuedDisplayText action = new QueuedDisplayText(textElement, output); return(action); } else if (output is StoryLink) { GameObject newLinkElement = Instantiate(linkTemplate); LinkButton link = newLinkElement.GetComponent <LinkButton>(); link.Initialize(() => { link.Deactivate(true); this.DoLink((StoryLink)output); }, output.Text); return(new QueuedDisplayLink(newLinkElement, (StoryLink)output)); } return(new EmptyQueueAction()); }