Пример #1
0
        public void ch(BattleUnitsStack stack)
        {
            if (stack.Initiative < 0)
            {
                throw new MyException("Нельзя больше 1 раза за ход");
            }

            stack.Initiative = -stack.Unit.Initiative;
            stacks.Add(stack.Initiative, stack);
        }
Пример #2
0
        public void Add(BattleUnitsStack stack)
        {
            if (Count == 6)
            {
                throw new MyException("Превышено максимальное количество стеков");
            }

            if (stacks.ContainsKey(stack.Name))
            {
                throw new MyException("В этой армии уже есть стек с таким названием");
            }

            stacks.Add(stack.Name, stack);
            stack.Army = this;
        }
Пример #3
0
        public (Dictionary <string, Army>, Dictionary <string, BattleUnitsStack>) Open(string directory, string filename, Dictionary <string, Unit> units)
        {
            var doc    = XDocument.Load(directory + @"\" + filename + ".mygame");
            var armys  = new Dictionary <string, Army>();
            var stacks = new Dictionary <string, BattleUnitsStack>();

            foreach (var army_node in doc.Element("Armys").Elements("Army"))
            {
                var army_name = army_node.Attribute("name").Value;
                var army      = new Army(army_name);
                foreach (var stack_node in army_node.Element("BattleUnitsStacks").Elements("BattleUnitsStack"))
                {
//                    Enum.TryParse<Units>(stack_node.Attribute("unit").Value, out var unit);
                    var unit          = stack_node.Attribute("unit").Value;
                    var stack_name    = stack_node.Attribute("name").Value;
                    var count         = Convert.ToInt32(stack_node.Attribute("count").Value);
                    var currentcount  = Convert.ToInt32(stack_node.Attribute("currentcount").Value);
                    var currenthealth = Convert.ToInt32(stack_node.Attribute("currenthealth").Value);
                    var mods          = new SortedDictionary <TempMods, int>();
                    foreach (var mod_node in stack_node.Element("TempMods").Elements("TempMod"))
                    {
                        Enum.TryParse <TempMods>(mod_node.Attribute("name").Value, out var mod);
                        var mod_count = Convert.ToInt32(mod_node.Attribute("count").Value);
                        mods.Add(mod, mod_count);
                    }

                    var stack = new BattleUnitsStack(units[unit], count, stack_name, currentcount, currenthealth, mods);
                    army.Add(stack);
                    stacks.Add(stack_name, stack);
                }

                armys.Add(army_name, army);
            }

            return(armys, stacks);
        }