public static VarHackContainer CreateFromXml( VarHackFlowLayoutPanel varHackPanel, XElement element) { int xPos = ParsingUtilities.ParseInt(element.Attribute(XName.Get("xPos")).Value); int yPos = ParsingUtilities.ParseInt(element.Attribute(XName.Get("yPos")).Value); string specialType = element.Attribute(XName.Get("specialType"))?.Value; if (specialType != null) { return(new VarHackContainer( varHackPanel, 0 /* creationIndex */, false /* useDefaults */, specialType, true /* noNumIn */, null /* varNameIn */, null /* addressIn */, null /* memoryTypeIn */, null /* useHexIn */, null /* pointerOffsetIn */, xPos, yPos)); } else { string varName = element.Attribute(XName.Get("name")).Value; uint address = ParsingUtilities.ParseHex(element.Attribute(XName.Get("address")).Value); Type type = TypeUtilities.StringToType[element.Attribute(XName.Get("type")).Value]; bool useHex = ParsingUtilities.ParseBool(element.Attribute(XName.Get("useHex")).Value); uint? pointerOffset = ParsingUtilities.ParseHexNullable(element.Attribute(XName.Get("pointerOffset"))?.Value); bool noNum = ParsingUtilities.ParseBool(element.Attribute(XName.Get("noNum")).Value); return(new VarHackContainer( varHackPanel, 0 /* creationIndex */, false /* useDefaults */, null /* sepcialTypeIn */, noNum, varName, address, type, useHex, pointerOffset, xPos, yPos)); } }