コード例 #1
0
        private static void LoadFromXml(string xmlFileName)
        {
            var loadedGameTypes = new Dictionary <GameType, GameTypeInfo>();

            try
            {
                var xmlDocument = new XmlDocument();
                xmlDocument.Load(xmlFileName);

                XmlSerializer.VerifyFileInfo(xmlDocument, "GameTypes", new Version(1, 0));

                var gameTypeNodes = xmlDocument.SelectNodes("/LazerSwarm/GameTypes/GameType");
                if (gameTypeNodes == null)
                {
                    throw new NullReferenceException("gameTypeNodes");
                }
                foreach (XmlNode gameTypeNode in gameTypeNodes)
                {
                    var gameTypeInfo = new GameTypeInfo();

                    if (gameTypeNode.Attributes == null)
                    {
                        throw new NullReferenceException("gameTypeNode.Attributes");
                    }
                    var nameAttribute = gameTypeNode.Attributes["Name"];
                    if (nameAttribute == null)
                    {
                        throw new NullReferenceException("nameAttribute");
                    }
                    gameTypeInfo.Type = TypeFromName(nameAttribute.Value);
                    gameTypeInfo.Name = (LazerTagString)nameAttribute.Value;

                    gameTypeInfo.DisplayName          = XmlSerializer.GetNodeLocalizedText(gameTypeNode, "DisplayName");
                    gameTypeInfo.PacketType           = (PacketType)XmlSerializer.GetNodeTextInt(gameTypeNode, "AnnounceGameCommandCode");
                    gameTypeInfo.TeamCount            = XmlSerializer.GetNodeTextInt(gameTypeNode, "TeamCount");
                    gameTypeInfo.GameTimeStepMinutes  = XmlSerializer.GetNodeTextInt(gameTypeNode, "GameTimeStepMinutes");
                    gameTypeInfo.DefaultSlowTags      = XmlSerializer.GetNodeTextBool(gameTypeNode, "SlowTags");
                    gameTypeInfo.HuntThePrey          = XmlSerializer.GetNodeTextBool(gameTypeNode, "HuntThePrey");
                    gameTypeInfo.ReverseHuntDirection = XmlSerializer.GetNodeTextBool(gameTypeNode, "ReverseHuntDirection");
                    gameTypeInfo.Zones = XmlSerializer.GetNodeTextBool(gameTypeNode, "Zones");
                    gameTypeInfo.NeutralizePlayersTaggedInZone = XmlSerializer.GetNodeTextBool(gameTypeNode, "NeutralizePlayersTaggedInZone");
                    gameTypeInfo.DefaultTeamTags        = XmlSerializer.GetNodeTextBool(gameTypeNode, "DefaultTeamTags");
                    gameTypeInfo.DefaultMedicMode       = XmlSerializer.GetNodeTextBool(gameTypeNode, "DefaultMedicMode");
                    gameTypeInfo.DefaultGameTimeMinutes = XmlSerializer.GetNodeTextInt(gameTypeNode, "DefaultGameTimeMinutes");
                    gameTypeInfo.DefaultReloads         = XmlSerializer.GetNodeTextInt(gameTypeNode, "DefaultReloads");
                    gameTypeInfo.DefaultMega            = XmlSerializer.GetNodeTextInt(gameTypeNode, "DefaultMega");
                    gameTypeInfo.DefaultShields         = XmlSerializer.GetNodeTextInt(gameTypeNode, "DefaultShields");
                    gameTypeInfo.DefaultTags            = XmlSerializer.GetNodeTextInt(gameTypeNode, "DefaultTags");

                    loadedGameTypes.Add(TypeFromName(gameTypeInfo.Name), gameTypeInfo);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            _gameTypesInfo = loadedGameTypes;
        }
コード例 #2
0
ファイル: GameTypes.cs プロジェクト: astrospark/LazerTagHost
        private static void LoadFromXml(string xmlFileName)
        {
            var loadedGameTypes = new Dictionary<GameType, GameTypeInfo>();

            try
            {
                var xmlDocument = new XmlDocument();
                xmlDocument.Load(xmlFileName);

                XmlSerializer.VerifyFileInfo(xmlDocument, "GameTypes", new Version(1, 0));

                var gameTypeNodes = xmlDocument.SelectNodes("/LazerSwarm/GameTypes/GameType");
                if (gameTypeNodes == null) throw new NullReferenceException("gameTypeNodes");
                foreach (XmlNode gameTypeNode in gameTypeNodes)
                {
                    var gameTypeInfo = new GameTypeInfo();

                    if (gameTypeNode.Attributes == null) throw new NullReferenceException("gameTypeNode.Attributes");
                    var nameAttribute = gameTypeNode.Attributes["Name"];
                    if (nameAttribute == null) throw new NullReferenceException("nameAttribute");
                    gameTypeInfo.Type = TypeFromName(nameAttribute.Value);
                    gameTypeInfo.Name = (LazerTagString) nameAttribute.Value;

                    gameTypeInfo.DisplayName = XmlSerializer.GetNodeLocalizedText(gameTypeNode, "DisplayName");
                    gameTypeInfo.PacketType = (PacketType)XmlSerializer.GetNodeTextInt(gameTypeNode, "AnnounceGameCommandCode");
                    gameTypeInfo.TeamCount = XmlSerializer.GetNodeTextInt(gameTypeNode, "TeamCount");
                    gameTypeInfo.GameTimeStepMinutes = XmlSerializer.GetNodeTextInt(gameTypeNode, "GameTimeStepMinutes");
                    gameTypeInfo.DefaultSlowTags = XmlSerializer.GetNodeTextBool(gameTypeNode, "SlowTags");
                    gameTypeInfo.HuntThePrey = XmlSerializer.GetNodeTextBool(gameTypeNode, "HuntThePrey");
                    gameTypeInfo.ReverseHuntDirection = XmlSerializer.GetNodeTextBool(gameTypeNode, "ReverseHuntDirection");
                    gameTypeInfo.Zones = XmlSerializer.GetNodeTextBool(gameTypeNode, "Zones");
                    gameTypeInfo.NeutralizePlayersTaggedInZone = XmlSerializer.GetNodeTextBool(gameTypeNode, "NeutralizePlayersTaggedInZone");
                    gameTypeInfo.DefaultTeamTags = XmlSerializer.GetNodeTextBool(gameTypeNode, "DefaultTeamTags");
                    gameTypeInfo.DefaultMedicMode = XmlSerializer.GetNodeTextBool(gameTypeNode, "DefaultMedicMode");
                    gameTypeInfo.DefaultGameTimeMinutes = XmlSerializer.GetNodeTextInt(gameTypeNode, "DefaultGameTimeMinutes");
                    gameTypeInfo.DefaultReloads = XmlSerializer.GetNodeTextInt(gameTypeNode, "DefaultReloads");
                    gameTypeInfo.DefaultMega = XmlSerializer.GetNodeTextInt(gameTypeNode, "DefaultMega");
                    gameTypeInfo.DefaultShields = XmlSerializer.GetNodeTextInt(gameTypeNode, "DefaultShields");
                    gameTypeInfo.DefaultTags = XmlSerializer.GetNodeTextInt(gameTypeNode, "DefaultTags");

                    loadedGameTypes.Add(TypeFromName(gameTypeInfo.Name), gameTypeInfo);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            _gameTypesInfo = loadedGameTypes;
        }