public Quest(QuestOption questID, int locationID, string locationName, int rewardGold, Monster qMonster, Item qItem, string kidnapped, string giver) { QuestID = questID; LocationID = locationID; LocationName = locationName; RewardGold = rewardGold; QMonster = qMonster; QItem = qItem; Kidnapped = kidnapped; Giver = giver; }
public Player(int str, int dex, int inte, int chari, int gold, string name, int exp, int level, QuestOption questOp, int currentHitPoints, int maxHitPoints, CreatureType type, CreatureClass difficulty) : base(currentHitPoints, maxHitPoints, type, difficulty) { Strength = str; Dexterity = dex; Intelligence = inte; Charisma = chari; Gold = gold; Name = name; ExperiecePoints = exp; Level = level; QuestOp = questOp; CurrentHitPoints = currentHitPoints; MaximumHitPoints = maxHitPoints; Type = type; Difficulty = difficulty; Inventory = new List <InventoryItem>(); }
public PlayerQuest(QuestOption id) { ID = id; IsCompleted = false; }
public static Quest[] ReadQuestFromGraphml(XmlDocument doc, string filename) { if (doc == null) throw new NullReferenceException("Cannot load graph from NULL reference!"); XmlNodeList conNodeList = doc.GetElementsByTagName("node"); XmlNodeList conEdgeList = doc.GetElementsByTagName("edge"); Dictionary<string, QuestNode> questNodes = new Dictionary<string, QuestNode>(); List<QuestNode> conStartNodes = new List<QuestNode>(); // store conversation starts /* load nodes aka dialogue */ QuestNode latestNode; foreach (XmlNode node in conNodeList) { latestNode = new QuestNode(); latestNode.xmlID = node.Attributes["id"].Value; Debug.Assert(!questNodes.ContainsKey(latestNode.xmlID), "Duplicated nodes entries found in XML!"); questNodes[latestNode.xmlID] = latestNode; // get important ATTRIBUTES for this node Dictionary<string, string> nodeDic = XmlNodesToDic(node.ChildNodes, "key"); nodeDic.TryGetValue("label", out latestNode.GetMainGoal().label); if (nodeDic.ContainsKey("alignment")) int.TryParse(nodeDic["alignment"], out latestNode.GetMainGoal().alignment); if (nodeDic.ContainsKey("isstart")) conStartNodes.Add(latestNode); if (nodeDic.ContainsKey("activationevent")) { Debug.Log(nodeDic["activationevent"] + ": Node Activation Event found!"); } if (nodeDic.ContainsKey("requirement")) { Debug.Log(nodeDic["requirement"] + ": Node requirement found!"); } if (nodeDic.ContainsKey("goaldescs") && nodeDic.ContainsKey("goaltypes") && nodeDic.ContainsKey("goaldatas")) latestNode.AddGoals(ParseGoals(nodeDic["goaldescs"], nodeDic["goaltypes"], nodeDic["goaldatas"])); } /* load edges aka responses */ foreach (XmlNode edge in conEdgeList) { QuestOption option = new QuestOption(); Dictionary<string, string> edgeDic = XmlNodesToDic(edge.ChildNodes, "key"); option.nextNode = questNodes[edge.Attributes["target"].Value]; // set target node link questNodes[edge.Attributes["source"].Value].AddOption(option, edgeDic.ContainsKey("isside") && edgeDic["isside"].Equals("true")); // set source node link // get important ATTRIBUTES for this edge edgeDic.TryGetValue("edgelabel", out option.label); if (edgeDic.ContainsKey("alignment")) int.TryParse(edgeDic["alignment"], out option.alignment); if (edgeDic.ContainsKey("requirement")) { Debug.Log(edgeDic["requirement"] + ": Node requirement found!"); } if (edgeDic.ContainsKey("goaldescs") && edgeDic.ContainsKey("goaltypes") && edgeDic.ContainsKey("goaldatas")) option.AddGoals(ParseGoals(edgeDic["goaldescs"], edgeDic["goaltypes"], edgeDic["goaldatas"])); } // separate nodes into multiple conversations, if necessary Quest[] newConArr = new Quest[(conStartNodes.Count > 0) ? conStartNodes.Count : 1]; QuestNode[] questNodesArr = new QuestNode[questNodes.Count]; questNodes.Values.CopyTo(questNodesArr, 0); if (conStartNodes.Count == 0) { Debug.LogError("A valid conversion file should ALWAYS have at least 1 conversation start!"); } else { for (int i = 0; i < conStartNodes.Count; ++i) newConArr[i] = new Quest(conStartNodes[i], questNodesArr, filename); } return newConArr; }