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; }
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; }