public TextureInfo(string id, string name, string displayname, string description, string filename, string basedirectory) { ID = id; Name = name; DisplayName = displayname; Description = description; FileName = filename; _baseDirectory = basedirectory; if (System.IO.File.Exists(basedirectory.EnsureDirectoryFormat() + filename) == false) { throw new System.IO.FileNotFoundException("File Not Found " + basedirectory.EnsureDirectoryFormat() + filename); } Image = new CompressibleImage(System.Drawing.Image.FromFile(basedirectory.EnsureDirectoryFormat() + filename), System.Drawing.Imaging.ImageFormat.Png); }
public EditorWorld(string FileName, int EditorWidth, int EditorHeight, Point FocusPoint) { if (System.IO.File.Exists(FileName) == false) { throw new Exception("World File Not Found"); } _ApplicationDirectory = AppDomain.CurrentDomain.BaseDirectory.EnsureDirectoryFormat(); _BaseDirectory = FileName.Substring(0, FileName.LastIndexOf("\\") + 1).EnsureDirectoryFormat(); _LayersDirectory = _BaseDirectory + "layers\\"; _ObjectDirectory = _BaseDirectory + "objects\\"; // LOAD FILE NEW FORMAT dynamic Settings = ACT.Core.Dynamic.Encoder.LoadFromFile(FileName); NonPassableColor = System.Drawing.ColorTranslator.FromHtml(Settings.nonpassablecolor); #region Load The Layers foreach (string name in Settings.layers.GetMemberNames) { if (name == "name") { continue; } dynamic _TmpLayerData = Settings.layers.GetObject(name); LayerInfo _NewLayer = new LayerInfo(); _NewLayer.Name = _TmpLayerData.Name; _NewLayer.Visible = Convert.ToBoolean(_TmpLayerData.visible); _NewLayer.LayerType = Enum.Parse(typeof(Enumerations.LayerType), _TmpLayerData.type); _Layers.Add(_NewLayer.Name, _NewLayer); } #endregion #region Load The Screens foreach (string name in Settings.screens.GetMemberNames) { if (name == "name") { continue; } dynamic _TmpScreenData = Settings.screens.GetObject(name); string[] PositionData = name.SplitString("-", StringSplitOptions.RemoveEmptyEntries); if (PositionData.Length != 2) { ErrorLogable.LogError(null, "Invalid PositionData-Name", ACT.Core.Enums.ErrorLevel.Severe); continue; } EditorScreen _NewScreen = new EditorScreen(Convert.ToInt32(PositionData[0]), Convert.ToInt32(PositionData[1]), this); #region Load the Objects foreach (string objname in _TmpScreenData.objects.GetMemberNames) { if (objname == "name") { continue; } dynamic MapObjectInfo = _TmpScreenData.objects.GetObject(objname); try { MapObject _NewMapObject = new MapObject(); _NewMapObject.ID = new Guid(objname.Trim()); string _MapImageLocation = _ObjectDirectory + _NewMapObject.ID + ".png"; if (!System.IO.File.Exists(_MapImageLocation)) { ErrorLogable.LogError(null, "Error Locating Object: " + _NewMapObject.ID.ToString(), ACT.Core.Enums.ErrorLevel.Critical); continue; } string _Location = MapObjectInfo.location; string _Size = MapObjectInfo.size; string[] _Points = _Location.SplitString(",", StringSplitOptions.RemoveEmptyEntries); string[] _Sizes = _Location.SplitString(",", StringSplitOptions.RemoveEmptyEntries); _NewMapObject.DrawLocation = new Point(Convert.ToInt32(_Points[0]), Convert.ToInt32(_Points[1])); _NewMapObject.ImageSize = new Size(Convert.ToInt32(_Sizes[0]), Convert.ToInt32(_Sizes[1])); _NewMapObject.Position = Enum.Parse(typeof(NebulaGames.RPGWorld.Enumerations.RelativePosition), MapObjectInfo.relativeposition); _NewMapObject.ResourceName = ""; _NewMapObject.Screen = _NewScreen; _NewScreen.MapObjects.Add(_NewMapObject); Graphics.CompressibleImage _TmpMapObject = new CompressibleImage(Image.FromFile(_MapImageLocation), System.Drawing.Imaging.ImageFormat.Png); ResourceManager.AddObject(_NewMapObject.ID.ToString(), _TmpMapObject); } catch (Exception ex) { ErrorLogable.LogError(ex, "Error Loading Object: " + name, ACT.Core.Enums.ErrorLevel.Critical); } } #endregion #region Load the Layer Images foreach (string TmpLayerName in _Layers.Keys) { if (System.IO.File.Exists(_LayersDirectory + TmpLayerName + "\\" + name + ".png")) { _NewScreen.AddUpdateLayerImage(TmpLayerName.ToLower(), Image.FromFile(_LayersDirectory + TmpLayerName + "\\" + name + ".png")); } } #endregion Screens.Add(name, _NewScreen); } #endregion EditorScreenWidth = EditorWidth; EditorScreenHeight = EditorHeight; OffsetX = (EditorScreenWidth - 800) / 2; OffsetY = (EditorScreenHeight - 600) / 2; _BackBufferImage = new Bitmap(EditorScreenWidth, EditorScreenHeight); _G = System.Drawing.Graphics.FromImage(_BackBufferImage); _MiniMapBufferGraphics = System.Drawing.Graphics.FromImage(_MiniMapBufferImage); _SingleScreenGraphicsObject = System.Drawing.Graphics.FromImage(_SingleScreenImage); }