Exemple #1
0
        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]);
                    }
                }
            }
        }
Exemple #3
0
        /// <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);
        }