using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Windows.Forms; using Newtonsoft.Json; using PckStudio.Core.Extensions; using PckStudio.Core.Json; using PckStudio.Core.Properties; namespace PckStudio.Json { public class JsonTiles { [JsonProperty("entries")] public List Entries { get; set; } [JsonProperty("additional_entries")] public List AdditionalEntries { get; set; } } public static class Tiles { private static JsonTiles _jsonBlockData, _jsonItemData, _jsonParticleData, _jsonMoonPhaseData, _jsonMapIconData, _jsonExplosionData, _jsonExperienceOrbData, _jsonPaintingData, _jsonBannerData; public static JsonTiles JsonBlockData => _jsonBlockData ??= JsonConvert.DeserializeObject(Resources.blockData); public static JsonTiles JsonItemData => _jsonItemData ??= JsonConvert.DeserializeObject(Resources.itemData); public static JsonTiles JsonParticleData => _jsonParticleData ??= JsonConvert.DeserializeObject(Resources.particleData); public static JsonTiles JsonMoonPhaseData => _jsonMoonPhaseData ??= JsonConvert.DeserializeObject(Resources.moonPhaseData); public static JsonTiles JsonMapIconData => _jsonMapIconData ??= JsonConvert.DeserializeObject(Resources.mapIconData); public static JsonTiles JsonExplosionData => _jsonExplosionData ??= JsonConvert.DeserializeObject(Resources.explosionData); public static JsonTiles JsonExperienceOrbData => _jsonExperienceOrbData ??= JsonConvert.DeserializeObject(Resources.experienceOrbData); public static JsonTiles JsonPaintingData => _jsonPaintingData ??= JsonConvert.DeserializeObject(Resources.paintingData); public static JsonTiles JsonBannerData => _jsonBannerData ??= JsonConvert.DeserializeObject(Resources.bannerData); public static List ItemTileInfos => JsonItemData.Entries; public static List BlockTileInfos => JsonBlockData.Entries; public static List ParticleTileInfos => JsonParticleData.Entries; public static List MoonPhaseTileInfos => JsonMoonPhaseData.Entries; public static List MapIconTileInfos => JsonMapIconData.Entries; public static List AdditionalMapIconTileInfos => JsonMapIconData.AdditionalEntries; public static List ExperienceOrbTileInfos => JsonExperienceOrbData.Entries; public static List ExplosionTileInfos => JsonExplosionData.Entries; public static List PaintingTileInfos => JsonPaintingData.Entries; public static List BannerTileInfos => JsonBannerData.Entries; private static Image[] _itemImages; public static Image[] ItemImages => _itemImages ??= Resources.items_atlas.SplitHorizontal(16).ToArray(); private static Image[] _blockImages; public static Image[] BlockImages => _blockImages ??= Resources.terrain_atlas.SplitHorizontal(16).ToArray(); private static Image[] _particleImages; public static Image[] ParticleImages => _particleImages ??= Resources.particles_atlas.SplitHorizontal(16).ToArray(); private static Image[] _moonPhaseImages; public static Image[] MoonPhaseImages => _moonPhaseImages ??= Resources.moon_phases_atlas.SplitHorizontal(4).ToArray(); private static Image[] _mapIconImages; public static Image[] MapIconImages => _mapIconImages ??= Resources.map_icons_atlas.SplitHorizontal(4).ToArray(); private static Image[] _additionalMapIconImages; public static Image[] AdditionalMapIconImages => _additionalMapIconImages ??= Resources.additional_map_icons_atlas.SplitHorizontal(4).ToArray(); private static Image[] _experienceOrbIconImages; public static Image[] ExperienceOrbImages => _experienceOrbIconImages ??= Resources.experience_orbs_atlas.SplitHorizontal(4).ToArray(); private static Image[] _explosionImages; public static Image[] ExplosionImages => _explosionImages ??= Resources.explosions_atlas.SplitHorizontal(4).ToArray(); private static Image[] _paintingImages; public static Image[] PaintingImages => _paintingImages ??= Resources.paintings_atlas.SplitHorizontal(16).ToArray(); private static Image[] _bannerImages; public static Image[] BannerImages => _bannerImages ??= Resources.banners_atlas.SplitHorizontal(6).ToArray(); private static ImageList GetImageList(Image[] images) { ImageList imageList = new ImageList(); imageList.ColorDepth = ColorDepth.Depth32Bit; imageList.Images.AddRange(images); return imageList; } private static ImageList _blockImageList = GetImageList(BlockImages); public static ImageList BlockImageList { get { return _blockImageList; } } private static ImageList _itemImageList = GetImageList(ItemImages); public static ImageList ItemImageList { get { return _itemImageList; } } private static ImageList _particleImageList = GetImageList(ParticleImages); public static ImageList ParticleImageList { get { return _particleImageList; } } private static ImageList _moonPhaseImageList = GetImageList(MoonPhaseImages); public static ImageList MoonPhaseImageList { get { return _moonPhaseImageList; } } private static ImageList _mapIconImageList = GetImageList(MapIconImages); public static ImageList MapIconImageList { get { return _mapIconImageList; } } private static ImageList _additionalMapIconImageList = GetImageList(AdditionalMapIconImages); public static ImageList AdditionalMapIconImageList { get { return _additionalMapIconImageList; } } private static ImageList _experienceOrbsImageList = GetImageList(ExperienceOrbImages); public static ImageList ExperienceOrbImageList { get { return _experienceOrbsImageList; } } private static ImageList _explosionImageList = GetImageList(ExplosionImages); public static ImageList ExplosionImageList { get { return _explosionImageList; } } private static ImageList _paintingImageList = GetImageList(PaintingImages); public static ImageList PaintingImageList { get { return _paintingImageList; } } private static ImageList _bannerImageList = GetImageList(BannerImages); public static ImageList BannerImageList { get { return _bannerImageList; } } } }