Exemple #1
0
        // dwp. против зацикливание при выборе охраны на остатке силы.
        // так как уже достаточно велико минимальное ограничение количества юнитов.
        private List <Monster> get_ALL_monster(int level, MonsterPlaceHolder holder)
        {
            List <Monster> list = m_parser_.Monsters.FindAll(
                delegate(Monster m)
            {
                return(m.Level == level &&                                                          //level filter
                       (current_alignment_ != ArmyAlignment.Town ||
                        current_alignment_ == ArmyAlignment.Town && m.TownType == current_town_) && //race filter
                       (current_alignment_ != ArmyAlignment.Side ||
                        current_alignment_ == ArmyAlignment.Side && m.RaceSide == current_side_) && //side filter
                       (placeholders_.Count == 0 ||
                        holder.Traits == MonsterTraits.Any ||
                        (m.Traits & holder.Traits) != MonsterTraits.Any)
                       &&
                       //dwp !!! ограничение парсера по выбранным городам
                       (!Settings.Default.SelectedFactionGuards || (Settings.Default.SelectedFactionGuards && (
                                                                        m.TownType == (eTownType)Settings.Default.FactionRed || m.TownType == (eTownType)Settings.Default.FactionBlue ||
                                                                        (m.TownType == (eTownType)Settings.Default.FactionGreen && !Program.frmMainMenu.RadioButton1.Checked) ||
                                                                        (m.TownType == (eTownType)Settings.Default.FactionYellow && (Program.frmMainMenu.RadioButton3.Checked || Program.frmMainMenu.RadioButton4.Checked))
                                                                        )))); //monster type filter
            }
                );

            if (list.Count == 0)
            {
                return(null);
            }
            return(list);
        }
Exemple #2
0
 /// <summary>
 /// Save additional monster in an army
 /// </summary>
 private void save_additional_monster(XmlNode xml_additionals, MonsterPlaceHolder holder)
 {
     xml_additionals.ChildNodes[0]["Creature"].InnerText = holder.Monster.Name;
     xml_additionals.ChildNodes[0]["Amount"].InnerText   = holder.Amount.ToString();
     // add next node
     xml_additionals.AppendChild(xml_additionals.ChildNodes[0].Clone());
 }
        private void parse(XmlNode node)
        {
            XmlNodeList items = node.SelectNodes(".//Item");

            foreach (XmlNode n in items)
            {
                XmlNode            name  = n.SelectSingleNode(".//Creature");
                XmlNode            count = n.SelectSingleNode(".//Count");
                MonsterPlaceHolder h     = new MonsterPlaceHolder(MonsterTraits.Any);
                h.Monster      = new Monster();
                h.Monster.Name = name.InnerText;
                h.Amount       = int.Parse(count.InnerText);
                monsters_.Add(h);
            }
            node_ = node;
        }
Exemple #4
0
        /// <summary>
        /// Save first monster in an army
        /// </summary>
        /// <param name="xml_node"></param>
        /// <param name="holder"></param>
        /// <returns></returns>
        private XmlNode save_primary_monster(XmlNode xml_node, MonsterPlaceHolder holder)
        {
            StringBuilder href = new StringBuilder();

            if (holder.Monster.CreatureName == "")   //random monster
            {
                href.AppendFormat("Random/Random-Monster-L{0}.(AdvMapMonsterShared).xdb", holder.Monster.Level);
            }
            else   //defined moster
            {
                string ext = holder.Monster.CreatureName.Contains(".xdb") ? "" : ".(AdvMapMonsterShared).xdb";
                href.AppendFormat("{0}/{1}{2}", EnumConvert.HREFTownStringFromString(holder.Monster.Town), holder.Monster.CreatureName, ext);
            }
            XmlNode shared = ((XmlElement)xml_node).GetElementsByTagName("Shared")[0];

            ((XmlElement)shared).SetAttribute("href", shared.Attributes["href"].Value.Replace("Random/Random-Monster-L3.(AdvMapMonsterShared).xdb", href.ToString()));
            XmlNode amount = ((XmlElement)xml_node).GetElementsByTagName("Amount")[0];

            amount.InnerText = holder.Amount.ToString();
            return(((XmlElement)xml_node).GetElementsByTagName("AdditionalStacks")[0]);
        }
Exemple #5
0
        /// <summary>
        /// Get random monster
        /// </summary>
        /// <param name="level"></param>
        /// <returns></returns>
        private Monster get_random_monster(int level, MonsterPlaceHolder holder)
        {
            List <Monster> list = m_parser_.Monsters.FindAll(
                delegate(Monster m) {
                return(m.Level == level &&                                                          //level filter
                       (current_alignment_ != ArmyAlignment.Town ||
                        current_alignment_ == ArmyAlignment.Town && m.TownType == current_town_) && //race filter
                       (current_alignment_ != ArmyAlignment.Side ||
                        current_alignment_ == ArmyAlignment.Side && m.RaceSide == current_side_) && //side filter
                       (placeholders_.Count == 0 ||
                        holder.Traits == MonsterTraits.Any ||
                        (m.Traits & holder.Traits) != MonsterTraits.Any));    //monster type filter
            }
                );

            if (list.Count == 0)
            {
                return(null);
            }
            int rnd = Randomizer.rnd.Next(list.Count);

            return(list[rnd]);
        }