/// <summary> /// Adds A Layer To The World. Note: All Layers Are Added To The End Call Reorder Layer Method To Change Layer Order. /// </summary> /// <param name="Name">Layer Name</param> /// <param name="Visible">If It Is Visible</param> /// <returns></returns> public bool AddLayer(LayerInfo NewLayer) { if (_Layers.ContainsKey(NewLayer.Name.ToLower()) == true) { ErrorLogable.LogError(null, "Duplicate Layer Found"); return(false); } _Layers.Add(NewLayer.Name.ToLower(), NewLayer); return(true); }
public static Dictionary <string, LayerInfo> CreateDefault() { Dictionary <string, LayerInfo> _TmpReturn = new Dictionary <string, LayerInfo>(); LayerInfo _Back = new LayerInfo(); _Back.Name = "Background"; _Back.Visible = true; _Back.LayerType = Enumerations.LayerType.Background; LayerInfo _Passable = new LayerInfo(); _Passable.Name = "Passable"; _Passable.Visible = true; _Passable.LayerType = Enumerations.LayerType.Passable; _TmpReturn.Add("Background", _Back); _TmpReturn.Add("Passable", _Passable); return(_TmpReturn); }
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); }