// Copyright (c) Pixel Crushers. All rights reserved. namespace PixelCrushers.DialogueSystem { /// /// A link from one DialogueEntry (the origin) to another (the destination). Every dialogue /// entry has a list of outgoing links. Note that links can cross into different conversations. /// A link holds the origin conversation and dialogue entry, and the destination conversation /// and dialogue entry. /// [System.Serializable] public class Link { /// /// The origin conversation ID. /// public int originConversationID = 0; /// /// The origin dialogue ID. /// public int originDialogueID = 0; /// /// The destination conversation ID. /// public int destinationConversationID = 0; /// /// The destination dialogue ID. /// public int destinationDialogueID = 0; /// /// When true, specifies that the link crosses conversations. This field comes from /// Chat Mapper but is currently unused in the dialogue system because the same information /// is contained the conversation IDs. /// public bool isConnector = false; /// /// The priority of the link. Higher priority links are evaluated first. /// public ConditionPriority priority = ConditionPriority.Normal; /// /// Initializes a new Link. /// public Link() { } /// /// Initializes a new Link copied from a Chat Mapper link. /// /// /// The Chat Mapper link. /// public Link(ChatMapper.Link chatMapperLink) { if (chatMapperLink != null) { //---Updated to handle pre-1.3 XML files. Was: originConversationID = chatMapperLink.OriginConvoID; originConversationID = ((chatMapperLink.OriginConvoID == 0) && (chatMapperLink.ConversationID > 0)) ? chatMapperLink.ConversationID : chatMapperLink.OriginConvoID; originDialogueID = chatMapperLink.OriginDialogID; //---Updated to handle pre-1.3 XML files. Was: destinationConversationID = chatMapperLink.DestinationConvoID; destinationConversationID = ((chatMapperLink.DestinationConvoID == 0) && (chatMapperLink.ConversationID > 0)) ? chatMapperLink.ConversationID : chatMapperLink.DestinationConvoID; destinationDialogueID = chatMapperLink.DestinationDialogID; isConnector = chatMapperLink.IsConnector; } } /// /// Copy constructor. /// /// Source link. public Link(Link sourceLink) { this.originConversationID = sourceLink.originConversationID; this.originDialogueID = sourceLink.originDialogueID; this.destinationConversationID = sourceLink.destinationConversationID; this.destinationDialogueID = sourceLink.destinationDialogueID; this.isConnector = sourceLink.isConnector; this.priority = sourceLink.priority; } /// /// Initializes a new Link. /// /// Origin conversation ID. /// Origin dialogue ID. /// Destination conversation ID. /// Destination dialogue ID. public Link(int originConversationID, int originDialogueID, int destinationConversationID, int destinationDialogueID) { this.originConversationID = originConversationID; this.originDialogueID = originDialogueID; this.destinationConversationID = destinationConversationID; this.destinationDialogueID = destinationDialogueID; } } }