protected override void UpdateOutEdges(Graph graph)
{
GameMasterNode arcFile = NodeFile.Owner;
if (arcFile != null)
{
ArcNodeData arc = arcFile.NodeData as ArcNodeData;
foreach (string inEdgeName in mOutEdgeStrings)
{
List<GameMasterNode> linkedEncounters = arc.GetEncountersWithInEdge(inEdgeName);
if (linkedEncounters.Count == 1 && linkedEncounters[0].Name.Equals(inEdgeName))
{
if (mChoiceEdgeInfo.ContainsKey(inEdgeName))
{
foreach (string choice in mChoiceEdgeInfo[inEdgeName])
{
Node choiceNode = graph.AddNode(NodeFile.Id + "#" + choice);
choiceNode.LabelText = '"' + choice + '"';
MakeNodePrivate(choiceNode);
graph.AddEdge(NodeFile.Id, choiceNode.Id);
graph.AddEdge(choiceNode.Id, linkedEncounters[0].Id);
}
}
else
{
graph.AddEdge(NodeFile.Id, linkedEncounters[0].Id);
}
}
else
{
Node arcOutNode = graph.AddNode(arcFile.Id + "#" + inEdgeName);
arcOutNode.LabelText = inEdgeName;
MakeNodePrivate(arcOutNode);
if (mChoiceEdgeInfo.ContainsKey(inEdgeName))
{
foreach (string choice in mChoiceEdgeInfo[inEdgeName])
{
Node choiceNode = graph.AddNode(NodeFile.Id + "#" + choice);
choiceNode.LabelText = '"' + choice + '"';
MakeNodePrivate(choiceNode);
graph.AddEdge(NodeFile.Id, choiceNode.Id);
graph.AddEdge(choiceNode.Id, arcOutNode.Id);
}
}
else
{
graph.AddEdge(NodeFile.Id, arcOutNode.Id);
}
foreach (GameMasterNode linkedEncounter in linkedEncounters)
{
graph.AddEdge(arcOutNode.Id, linkedEncounter.Id);
}
}
}
}
}