public void ShowSuccess(NightEventNode successNode, Dictionary <int, int> awards, int money, Vector2 windowPosition) { SetPosition(windowPosition); Background.color = new Color(0, 255f, 0); ShowNode(successNode); int i = 0; foreach (int itemNum in awards.Keys) { if (awards[itemNum] > 0) { AwardsImages[i].gameObject.SetActive(true); AwardsImages[i].sprite = ItemsOptions.Instance.itemsSprites[itemNum]; AwardsTexts[i].text = awards[itemNum].ToString(); } else { AwardsImages[i].gameObject.SetActive(false); } i++; } for (; i < AwardsImages.Length; i++) { AwardsImages[i].gameObject.SetActive(false); } MoneyText.text = money.ToString(); AwardsAndMoney.SetActive(true); }
private void ShowNode(NightEventNode eventNode) { Choice = -1; Button0.gameObject.SetActive(false); Button1.gameObject.SetActive(false); AwardsAndMoney.gameObject.SetActive(false); TitleText.text = eventNode.TitleText; DescriptionText.text = eventNode.Description; Image.sprite = NightEventsOptions.GetNightEventSprite(eventNode.SpriteType, eventNode.SpriteId, eventNode.CharSpriteType); if (eventNode.Buttons.Count > 0) { Button0.onClick.RemoveAllListeners(); Button0.onClick.AddListener(() => { Night.Instance.MakeChoice(0); }); Button0.onClick.AddListener(CloseWindow); Button0Text.text = eventNode.Buttons[0].ButtonText; Button0.gameObject.SetActive(true); } if (eventNode.Buttons.Count > 1) { Button1.onClick.RemoveAllListeners(); Button1.onClick.AddListener(() => { Night.Instance.MakeChoice(1); }); Button1.onClick.AddListener(CloseWindow); Button1Text.text = eventNode.Buttons[1].ButtonText; Button1.gameObject.SetActive(true); } gameObject.transform.SetAsLastSibling(); gameObject.SetActive(true); }
/// <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); }
public void ShowChoice(NightEventNode eventNode, Vector2 windowPosition) { SetPosition(windowPosition); Background.color = new Color(216f, 216f, 216f); ShowNode(eventNode); }
public void ShowFail(NightEventNode failNode, Vector2 windowPosition) { SetPosition(windowPosition); Background.color = new Color(255f, 0, 0); ShowNode(failNode); }