public override void Unmarshal(string data, bool withV = true) { XmlNode xmlNode1 = this.GetRoot(data).SelectSingleNode("node"); if (xmlNode1 == null) { throw new SerializingException("node tag not found"); } HeroClassDef heroClassDef = this.Type.Id.Definition as HeroClassDef; for (XmlNode xmlNode2 = xmlNode1.FirstChild; xmlNode2 != null; xmlNode2 = xmlNode2.NextSibling) { if (xmlNode2.Name == "f") { string name = xmlNode2.Attributes["name"].Value; HeroFieldDef field = heroClassDef.GetField(name); if (field != null) { HeroAnyValue heroAnyValue = HeroAnyValue.Create(field.FieldType); heroAnyValue.Unmarshal("<v>" + xmlNode2.InnerXml + "</v>", true); this.Variables.Add(new Variable(new DefinitionId(field.Id), 0, heroAnyValue)); } } } }
public override void Unmarshal(string data, bool withV = true) { XmlNode node = base.GetRoot(data).SelectSingleNode("node"); if (node == null) { throw new SerializingException("node tag not found"); } HeroClassDef definition = base.Type.Id.Definition as HeroClassDef; for (node = node.FirstChild; node != null; node = node.NextSibling) { if (node.Name == "f") { string name = node.Attributes["name"].Value; HeroFieldDef field = definition.GetField(name); if (field != null) { HeroAnyValue value2 = HeroAnyValue.Create(field.FieldType); value2.Unmarshal("<v>" + node.InnerXml + "</v>", true); this.Variables.Add(new Variable(new DefinitionId(field.Id), 0, value2)); } } } }
public void SetVariable <T>(string name, T value) where T : HeroAnyValue { if (!GOM.Instance.DefinitionsByName[HeroDefinition.Types.Field].ContainsKey(name)) { throw new Exception("Field name does not exist"); } HeroFieldDef def = GOM.Instance.DefinitionsByName[(HeroDefinition.Types) 3][name] as HeroFieldDef; this.SetVariable <T>(new DefinitionId(def.Id), value); }
public override void Deserialize(PackedStream_2 stream) { this.hasValue = true; this.Variables = new VariableList(); DeserializeClass deserializeClass = new DeserializeClass(stream, 1); for (uint index = 0U; index < deserializeClass.Count; ++index) { uint type1 = 0U; int variableId = 0; ulong fieldId; int d; deserializeClass.ReadFieldData(out fieldId, ref type1, ref variableId, out d); if (d != 2) { HeroType type2 = new HeroType((HeroTypes)type1); DefinitionId field = new DefinitionId(fieldId); if (field.Definition != null) { HeroFieldDef heroFieldDef = field.Definition as HeroFieldDef; switch (heroFieldDef.FieldType.Type) { case HeroTypes.Enum: case HeroTypes.ScriptRef: type2.Id = heroFieldDef.FieldType.Id; break; case HeroTypes.LookupList: type2 = heroFieldDef.FieldType; break; } } HeroAnyValue heroAnyValue = HeroAnyValue.Create(type2); heroAnyValue.Deserialize(stream); this.Variables.Add(new Variable(field, variableId, heroAnyValue)); } } }
public void SetVariable <T>(DefinitionId field, T value) where T : HeroAnyValue { int variableId; Variable variable; HeroFieldDef definition = field.Definition as HeroFieldDef; if ((definition != null) && (definition.FieldType.Type != value.Type.Type)) { throw new Exception("Type mismatch exception"); } this.dictIdToVariable.TryGetValue(field.Id, out variable); if (variable != null) { variableId = variable.VariableId; variable.Value = value; } else { variableId = this.GetNextId(); variable = new Variable(field, variableId, value); this.dictIdToVariable[field.Id] = variable; base.Add(variable); } }