void fillNPCLinkView() { // Initialize, and create a layer for the edges (always underneath the nodes) this.npcLinkShower.Layer.RemoveAllChildren(); nodeNPClinkLayer = new PNodeList(); edgeNPClinkLayer = new PLayer(); this.npcLinkShower.Root.AddChild(edgeNPClinkLayer); this.npcLinkShower.Camera.AddLayer(0, edgeNPClinkLayer); //////Image iBackground = Image.FromFile("source/map.jpg"); //////this.npcLinkShower.BackgroundImage = iBackground; bool bNumOfIter = false; float rootx = (float)(this.ClientSize.Width / 5); float rooty = (float)(this.ClientSize.Height / 5); foreach (KeyValuePair <int, CQuest> quest in quests.quest) { foreach (Dictionary <int, CDialog> dialog in dialogs.dialogs.Values) { foreach (KeyValuePair <int, CDialog> dial in dialog) { if (dial.Value.Actions.CompleteQuests.Contains(quest.Key) && !dial.Value.Holder.Equals(quest.Value.Additional.Holder) && !dial.Value.Holder.Equals("") && !quest.Value.Additional.Holder.Equals("")) { //System.Console.WriteLine("------"); //System.Console.WriteLine(dial.Value.Holder); //System.Console.WriteLine(quest.Value.QuestInformation.NameOfHolder); //System.Console.WriteLine("------"); string sQuestHolder = quest.Value.Additional.Holder; string sDialogHolder = dial.Value.Holder; PNode dialogHolder; PNode questHolder; if (mapGraphs.Keys.Contains(sQuestHolder)) { questHolder = mapGraphs[sQuestHolder]; } else { questHolder = PPath.CreateRectangle(rootx, rooty, 180, 33); if (bNumOfIter) { rootx += 120.0f; rooty += 120.0f; bNumOfIter = false; } else { rootx += 120.0f; rooty -= 120.0f; bNumOfIter = true; } PText rootText = new PText(sQuestHolder); rootText.Pickable = false; rootText.X = questHolder.X; rootText.Y = questHolder.Y; questHolder.AddChild(rootText); questHolder.Tag = new ArrayList(); mapGraphs.Add(sQuestHolder, questHolder); } if (mapGraphs.Keys.Contains(sDialogHolder)) { dialogHolder = mapGraphs[sDialogHolder]; } else { dialogHolder = PPath.CreateRectangle(rootx, rooty, 180, 33); if (bNumOfIter) { rootx += 120.0f; rooty += 120.0f; bNumOfIter = false; } else { rootx += 120.0f; rooty -= 120.0f; bNumOfIter = true; } PText rootText = new PText(sDialogHolder); rootText.Pickable = false; rootText.X = dialogHolder.X; rootText.Y = dialogHolder.Y; dialogHolder.AddChild(rootText); dialogHolder.Tag = new ArrayList(); mapGraphs.Add(sDialogHolder, dialogHolder); } PPath edge = new PPath(); edge.Pickable = false; ((ArrayList)dialogHolder.Tag).Add(edge); ((ArrayList)questHolder.Tag).Add(edge); edge.Tag = new ArrayList(); ((ArrayList)edge.Tag).Add(dialogHolder); ((ArrayList)edge.Tag).Add(questHolder); edgeNPClinkLayer.AddChild(edge); updateEdge(edge); if (!nodeNPClinkLayer.Contains(dialogHolder)) { nodeNPClinkLayer.Add(dialogHolder); } if (!nodeNPClinkLayer.Contains(questHolder)) { nodeNPClinkLayer.Add(questHolder); } } } } } npcLinkShower.Layer.AddChildren(nodeNPClinkLayer); }