public void AddTalkingPoint(float x, float y, float w, float h) { TalkingPoint tp = new TalkingPoint(x, y, h, w); tp.SetID(GetNewID()); talkingPoints.Add(tp); }
void DrawLinks() { if (currentDialogue == null || currentDialogue.talkingPoints == null) { return; } Vector3 end = Vector3.zero; for (int a = 0; a < currentDialogue.talkingPoints.Count; a++) { TalkingPoint tp = currentDialogue.talkingPoints[a]; if (tp.responses == null) { return; } for (int b = 0; b < tp.responses.Count; b++) { Vector3 start = new Vector3(tp.x + tp.w, tp.y + 185 + 40 * b); TalkingPoint link = currentDialogue.FindViaID(tp.responses[b].responseID); if (link != null) { end = new Vector3(link.x + link.w / 2, link.y + link.h / 2); Handles.DrawLine(start, end); } } } }
void ChangePortrait(object p) { if (tempTP != null) { tempTP.currentPortrait = (int)p; tempTP = null; } }
void ChangeStartingPoint(TalkingPoint tp) { foreach (TalkingPoint t in currentDialogue.talkingPoints) { if (t != tp) { t.startingPoint = false; } } }
void AssignProfile(object p) { NPCProfile a = (NPCProfile)p; if (tempTP != null) { tempTP.npc = a; tempTP = null; } }
int CheckForWindowClick(Vector2 pos) { if (currentDialogue != null && currentDialogue.talkingPoints.Count > 0) { for (int i = 0; i < currentDialogue.talkingPoints.Count; i++) { TalkingPoint tp = currentDialogue.talkingPoints[i]; Rect rect = new Rect(tp.x, tp.y, tp.w, tp.h); if (rect.Contains(pos)) { clickedOnWindow = true; return(i); } } } return(-1); }
void Nodes() { GUILayout.BeginArea(DialogueBoxes); if (currentDialogue != null && currentDialogue.talkingPoints.Count > 0) { BeginWindows(); for (int i = 0; i < currentDialogue.talkingPoints.Count; i++) { TalkingPoint tp = currentDialogue.talkingPoints[i]; Rect rect = new Rect(tp.x, tp.y, tp.w, tp.h); rect = GUI.Window(i, rect, DisplayTalkingPoint, ""); tp.x = rect.x; tp.y = rect.y; } EndWindows(); } GUILayout.EndArea(); }
void DisplayTalkingPoint(int id) { if (id >= currentDialogue.talkingPoints.Count) { return; } TalkingPoint tp = currentDialogue.talkingPoints[id]; GUILayout.BeginHorizontal(); //NPC name GUILayout.Label(tp.npc == null ? "Select Profile" : tp.npc.characterName /*+ "(" + tp.m_ID.ToString() + ")"*/, EditorStyles.boldLabel); //Starting point toggle bool sp = tp.startingPoint; tp.startingPoint = GUILayout.Toggle(sp, "Starting Point"); if (sp != tp.startingPoint) { ChangeStartingPoint(tp); } //Profile Change Dropdown if (GUILayout.Button("V", GUILayout.Width(25))) { GenericMenu profiles = new GenericMenu(); if (availableProfiles == null) { RefreshProfiles(); } foreach (NPCProfile p in availableProfiles) { profiles.AddItem(new GUIContent(p.name.ToString()), false, AssignProfile, p); } tempTP = tp; profiles.ShowAsContext(); } GUILayout.EndHorizontal(); //GUILayout.Space(7); GUILayout.BeginHorizontal(); //Portrais and text if (tp.npc != null && tp.npc.portraits != null && tp.npc.portraits[tp.currentPortrait].image != null) { GUILayout.Label(tp.npc.portraits[tp.currentPortrait].image.texture, GUILayout.Width(64), GUILayout.Height(64)); tp.text = GUILayout.TextArea(tp.text, GUILayout.Width(250 - 64 - 14), GUILayout.Height(64)); } else { GUILayout.Label("NPC Profiles are broken again..."); } GUILayout.EndHorizontal(); //Portrait Changer if (tp.npc != null) { if (GUILayout.Button("V", GUILayout.Width(25))) { GenericMenu portraits = new GenericMenu(); for (int i = 0; i < tp.npc.portraits.Count; i++) { if (tp.currentPortrait == i) { portraits.AddDisabledItem(new GUIContent(i.ToString() + ". " + tp.npc.portraits[i].mood.ToString())); } else { portraits.AddItem(new GUIContent(i.ToString() + ". " + tp.npc.portraits[i].mood.ToString()), false, ChangePortrait, i); } } tempTP = tp; portraits.ShowAsContext(); } } //Events /* * GUILayout.BeginHorizontal(); * GUILayout.Button("+", GUILayout.Width(25)); * GUILayout.Label("Event"); * GUILayout.FlexibleSpace(); * GUILayout.Button("-", GUILayout.Width(25)); * GUILayout.EndHorizontal(); */ //Responses GUILayout.BeginHorizontal(); if (GUILayout.Button("+", GUILayout.Width(25))) { if (tp.responses == null) { tp.responses = new List <TalkingResponse>(); } tp.responses.Add(new TalkingResponse()); tp.h += heightChangePerResponse; } GUILayout.BeginVertical(); if (tp.responses != null) { foreach (var link in tp.responses) { GUILayout.BeginHorizontal(); //text link.text = GUILayout.TextField(link.text, GUILayout.Width(250 - 64 - 14)); GUILayout.FlexibleSpace(); GUILayout.BeginVertical(); if (GUILayout.Button("-", GUILayout.Width(25))) { tp.responses.Remove(link); tp.h -= heightChangePerResponse; break; } if (GUILayout.Button("L", GUILayout.Width(25))) { linkingTalkingPoints = true; currentlyLinkingResponse = link; } GUILayout.EndVertical(); GUILayout.EndHorizontal(); //GUILayout.Label(link.responseID.ToString()); } } GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUI.DragWindow(); }