예제 #1
0
        public static void LoadSpawns()
        {
            if (m_Initialized)
            {
                return;
            }

            RemoveSpawns();

            Utility.PushColor(ConsoleColor.White);
            Console.WriteLine("Generating Champion Spawns");
            Utility.PopColor();

            ChampionSpawn spawn;

            XmlDocument doc = new XmlDocument();

            doc.Load(m_ConfigPath);
            foreach (XmlNode node in doc.GetElementsByTagName("championSystem")[0].ChildNodes)
            {
                if (node.Name.Equals("spawn"))
                {
                    spawn = new ChampionSpawn
                    {
                        SpawnName = GetAttr(node, "name", "Unamed Spawner")
                    };
                    string value = GetAttr(node, "type", null);

                    if (value == null)
                    {
                        spawn.RandomizeType = true;
                    }
                    else
                    {
                        spawn.Type = (ChampionSpawnType)Enum.Parse(typeof(ChampionSpawnType), value);
                    }

                    value          = GetAttr(node, "spawnMod", "1.0");
                    spawn.SpawnMod = XmlConvert.ToDouble(value);
                    value          = GetAttr(node, "killsMod", "1.0");
                    spawn.KillsMod = XmlConvert.ToDouble(value);

                    foreach (XmlNode child in node.ChildNodes)
                    {
                        if (child.Name.Equals("location"))
                        {
                            int    x       = XmlConvert.ToInt32(GetAttr(child, "x", "0"));
                            int    y       = XmlConvert.ToInt32(GetAttr(child, "y", "0"));
                            int    z       = XmlConvert.ToInt32(GetAttr(child, "z", "0"));
                            int    r       = XmlConvert.ToInt32(GetAttr(child, "radius", "0"));
                            string mapName = GetAttr(child, "map", "Felucca");
                            Map    map     = Map.Parse(mapName);

                            spawn.SpawnRadius = r;
                            spawn.MoveToWorld(new Point3D(x, y, z), map);
                        }
                    }

                    spawn.GroupName = GetAttr(node, "group", null);
                    m_AllSpawns.Add(spawn);

                    if (spawn.Type == ChampionSpawnType.Infuse)
                    {
                        PrimevalLichPuzzle.GenLichPuzzle(null);
                    }
                }
            }

            Rotate();

            m_Initialized = true;
        }