// 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;
}
}
}