public override OgmoValueDefinition ReadJson(JsonReader reader, Type objectType, OgmoValueDefinition existingValue, bool hasExistingValue, JsonSerializer serializer) { JObject obj = JObject.Load(reader); switch ((string)obj["definition"]) { case "String": var strValue = new OgmoStringValueDefinition(); strValue.Name = (string)obj["name"]; strValue.Default = (string)obj["defaults"]; strValue.MaxLength = (int)obj["maxLength"]; strValue.TrimWhitespace = (bool)obj["trimWhitespace"]; return(strValue); case "Text": var textValue = new OgmoTextValueDefinition(); textValue.Name = (string)obj["name"]; textValue.Default = (string)obj["defaults"]; return(textValue); case "Enum": var enumValue = new OgmoEnumValueDefinition(); enumValue.Name = (string)obj["name"]; var arr = obj["choices"].Children().ToArray(); var finalChoices = new string[arr.Length]; for (int i = 0; i < arr.Length; i++) { finalChoices[i] = (string)arr[i]; } enumValue.Choices = finalChoices; enumValue.Default = (int)obj["defaults"]; return(enumValue); case "Integer": var intValue = new OgmoIntegerValueDefinition(); intValue.Name = (string)obj["name"]; intValue.Default = (int)obj["defaults"]; intValue.Bounded = (bool)obj["bounded"]; intValue.Min = (int)obj["min"]; intValue.Max = (int)obj["max"]; return(intValue); case "Float": var floatValue = new OgmoFloatValueDefinition(); floatValue.Name = (string)obj["name"]; floatValue.Default = (float)obj["defaults"]; floatValue.Bounded = (bool)obj["bounded"]; floatValue.Min = (float)obj["min"]; floatValue.Max = (float)obj["max"]; return(floatValue); case "Color": var colValue = new OgmoColorValueDefinition(); colValue.Name = (string)obj["name"]; colValue.Default = ColorExt.HexToColor((string)obj["defaults"]); colValue.IncludeAlpha = (bool)obj["includeAlpha"]; return(colValue); } return(null); }
public override OgmoEntityDefinition ReadJson(JsonReader reader, Type objectType, OgmoEntityDefinition existingValue, bool hasExistingValue, JsonSerializer serializer) { JObject obj = JObject.Load(reader); var def = new OgmoEntityDefinition(); def.Name = (string)obj["name"]; def.ExportID = (string)obj["_eid"]; def.Size = new Point(); def.Size.X = (int)obj["size"]["x"]; def.Size.Y = (int)obj["size"]["y"]; def.Origin = new Point(); def.Origin.X = (int)obj["origin"]["x"]; def.Origin.Y = (int)obj["origin"]["y"]; def.TileSize = new Point(); def.TileSize.X = (int)obj["tileSize"]["x"]; def.TileSize.Y = (int)obj["tileSize"]["y"]; def.Limit = (int)obj["limit"]; var taglist = obj["tags"].Children().ToArray(); def.Tags = new string[taglist.Length]; for (int i = 0; i < taglist.Length; i++) { def.Tags[i] = (string)taglist[i]; } var valuelist = obj["values"].Children().ToArray(); def.ValueDefinitions = new OgmoValueDefinition[valuelist.Length]; for (int i = 0; i < valuelist.Length; i++) { OgmoValueDefinition ov = new OgmoEnumValueDefinition(); OgmoValueDefinition result = (OgmoValueDefinition)OgmoValueDefinitionConverter.Instance.ReadJson(valuelist[i].CreateReader(), typeof(OgmoValueDefinition), ov, serializer); def.ValueDefinitions[i] = result; } return(def); }
public override OgmoLayerDefinition ReadJson(JsonReader reader, Type objectType, OgmoLayerDefinition existingValue, bool hasExistingValue, JsonSerializer serializer) { JObject obj = JObject.Load(reader); switch ((string)obj["definition"]) { case "entity": var entLayer = new OgmoEntityLayerDefinition(); entLayer.Name = (string)obj["name"]; entLayer.ExportID = (string)obj["exportID"]; var entsize = new Point(); entsize.X = (int)obj["gridSize"]["x"]; entsize.Y = (int)obj["gridSize"]["y"]; entLayer.GridSize = entsize; return(entLayer); case "decal": var decLayer = new OgmoDecalLayerDefinition(); decLayer.Name = (string)obj["name"]; decLayer.ExportID = (string)obj["exportID"]; var decsize = new Point(); decsize.X = (int)obj["gridSize"]["x"]; decsize.Y = (int)obj["gridSize"]["y"]; decLayer.GridSize = decsize; decLayer.Folder = (string)obj["folder"]; decLayer.Scalable = (bool)obj["scaleable"]; decLayer.Rotatable = (bool)obj["rotatable"]; var vallist = obj["values"].Children().ToArray(); decLayer.Values = new OgmoValueDefinition[vallist.Length]; for (int i = 0; i < vallist.Length; i++) { OgmoValueDefinition ov = new OgmoEnumValueDefinition(); OgmoValueDefinition result = (OgmoValueDefinition)OgmoValueDefinitionConverter.Instance.ReadJson(vallist[i].CreateReader(), typeof(OgmoValueDefinition), ov, serializer); decLayer.Values[i] = result; } return(decLayer); case "tile": var tileLayer = new OgmoTileLayerDefinition(); tileLayer.Name = (string)obj["name"]; tileLayer.ExportID = (string)obj["exportID"]; var tilesize = new Point(); tilesize.X = (int)obj["gridSize"]["x"]; tilesize.Y = (int)obj["gridSize"]["y"]; tileLayer.GridSize = tilesize; tileLayer.ExportStyle = (OgmoTileLayerDefinition.ExportMode)((int)obj["exportMode"]); tileLayer.ArrayStyle = (OgmoTileLayerDefinition.ArrayMode)((int)obj["arrayMode"]); tileLayer.DefaultTileset = (string)obj["defaultTileset"]; return(tileLayer); } return(null); }