private void ApplyChangesAfterChoice(int eventNum) { NightRobberyData rob = m_robberies[eventNum]; NightEventButtonDetails bd = rob.nightEvent.RootNode.Buttons[NightEventWindow.Choice]; rob.ApplyChoice(bd); }
public void ApplyChoice(NightEventButtonDetails buttonDetails) { m_chance += buttonDetails.Effect; m_hospitalChance += buttonDetails.HospitalEffect; m_policeChance += buttonDetails.PoliceEffect; m_policeKnowledge += buttonDetails.PoliceKnowledge; m_money += buttonDetails.Money; m_healthAffect += buttonDetails.HealthAffect; if (buttonDetails.Awards != null) { foreach (int bKey in buttonDetails.Awards.Keys) { if (m_awards.ContainsKey(bKey)) { m_awards[bKey] += buttonDetails.Awards[bKey]; } else { m_awards.Add(bKey, buttonDetails.Awards[bKey]); } } } }
/// <summary>Get night event tree with random nodes from "NightEventsCollectionData.xml"</summary> /// <param name="eventNode">A root node of event in "NightEventsCollectionData.xml"</param> public static NightEventNode ParseEventRandomTree(XmlNode eventNode, RobberyType robberyType) { NightEventNode nightEvent = new NightEventNode(); foreach (XmlNode info in eventNode) { switch (info.Name) { case "text": nightEvent.Description = info.InnerText; break; case "sprite": foreach (XmlNode spriteInfo in info) { if (spriteInfo.Name == "spriteType") { switch (spriteInfo.InnerText) { case "people": nightEvent.SpriteType = SpriteType.People; break; case "characters": nightEvent.SpriteType = SpriteType.Characters; break; case "items": nightEvent.SpriteType = SpriteType.Items; break; case "places": nightEvent.SpriteType = SpriteType.Places; break; case "robberies": nightEvent.SpriteType = SpriteType.Robberies; break; default: Debug.LogError("No \"" + spriteInfo.InnerText + "\" sprite type exists! Check NightEventsCollectionData.xml or SpriteType enum"); nightEvent.SpriteType = SpriteType.None; break; } } if (spriteInfo.Name == "spriteId") { nightEvent.SpriteId = int.Parse(spriteInfo.InnerText); } } break; case "button": if (nightEvent.Buttons == null) { nightEvent.Buttons = new List <NightEventButtonDetails>(); } NightEventButtonDetails button = new NightEventButtonDetails(); foreach (XmlNode buttonInfo in info) { if (buttonInfo.Name == "text") { button.ButtonText = buttonInfo.InnerText; } if (buttonInfo.Name == "effect") { button.Effect = int.Parse(buttonInfo.InnerText); } if (buttonInfo.Name == "policeEffect") { button.PoliceEffect = int.Parse(buttonInfo.InnerText); } if (buttonInfo.Name == "hospitalEffect") { button.HospitalEffect = int.Parse(buttonInfo.InnerText); } if (buttonInfo.Name == "healthAffect") { button.HealthAffect = int.Parse(buttonInfo.InnerText); } if (buttonInfo.Name == "policeKnowledge") { button.PoliceKnowledge = int.Parse(buttonInfo.InnerText); } if (buttonInfo.Name == "award") { int itemId; if (int.TryParse(buttonInfo.Attributes["itemId"].Value, out itemId)) { if (button.Awards == null) { button.Awards = new Dictionary <int, int>(); } { if (!button.Awards.ContainsKey(itemId)) { button.Awards.Add(itemId, int.Parse(buttonInfo.InnerText)); } else { button.Awards[itemId] += int.Parse(buttonInfo.InnerText); } } ; } } if (buttonInfo.Name == "money") { button.Money = int.Parse(buttonInfo.InnerText); } } if (info.SelectSingleNode("./node") != null) //is button contains next nodes { button.NextEventNode = ParseEventRandomTree(info.SelectNodes("./node")[UnityEngine.Random.Range(0, info.SelectNodes("./node").Count)], robberyType); //Recursion } nightEvent.Buttons.Add(button); break; } ; } return(nightEvent); }