コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }