예제 #1
0
        // Constructor
        public TileMap()
        {
            _name = "";
            _maxX = _maxY = 0;
            _myLayer = new List<TileLayer>();
            _block = new TileProperty[5];

            for (int i = 0; i < _block.Length; i++)
                _block[i] = new TileProperty(_maxX, _maxY);

            _eventManager = new EventManager[0, 0];
            for (int x = 0; x < _eventManager.GetLength(0); x++)
            {
                for (int y = 0; y < _eventManager.GetLength(1); y++)
                {
                    _eventManager[x, y] = new EventManager();
                }
            }
        }
예제 #2
0
        public TileMap(int maxX, int maxY, string name)
        {
            _name = name;
            _maxX = maxX;
            _maxY = maxY;

            _myLayer = new List<TileLayer>();
            _block = new TileProperty[5];

            for (int i = 0; i < _block.Length; i++)
                _block[i] = new TileProperty(_maxX, _maxY);

            _eventManager = new EventManager[_maxX, _maxY];
            for (int x = 0; x < _eventManager.GetLength(0); x++)
            {
                for (int y = 0; y < _eventManager.GetLength(1); y++)
                {
                    _eventManager[x, y] = new EventManager();
                }
            }
        }
예제 #3
0
        // Load the actual project. This will be the load game function for the actual game as well. Along with others game-only-related stuffs like Character save and such
        public void LoadProject(string path, Game obj)
        {
            Tile _tempTile = new Tile();
            Tileset _tempTileset = new Tileset();
            TileLayer _tempLayer = new TileLayer();
            TileLayer _tempMiniLayer = new TileLayer();
            TileMap _tempMap = new TileMap();
            Actor _tempActor = new Actor();
            Sprites _tempSprite = new Sprites();
            Face _tempFace = new Face();
            Switch _tempSwitch = new Switch();
            Variable _tempVariable = new Variable();

            GResource _tempResource = new GResource();

            using (br = new BinaryReader(File.Open(path, FileMode.Open)))
            {
                obj.Name = br.ReadString();
                obj.Path = br.ReadString();
                obj.Author = br.ReadString();
                obj.Description = br.ReadString();
                obj.SubName = br.ReadString();
                obj.TileX = br.ReadInt32();
                obj.TileY = br.ReadInt32();
                obj.StartMap = br.ReadInt32();
                obj.StartX = br.ReadInt32();
                obj.StartY = br.ReadInt32();

                int max = br.ReadInt32();
                for (int i = 0; i < max; i++)
                {
                    _tempSwitch = new Switch();
                    _tempSwitch.Name = br.ReadString();

                    obj.MySwitch.Add(_tempSwitch);
                }

                max = br.ReadInt32();

                for (int i = 0; i < max; i++)
                {
                    _tempVariable = new Variable();
                    _tempVariable.Name = br.ReadString();

                    obj.MyVariable.Add(_tempVariable);
                }

                //Initial Party
                max = br.ReadInt32();
                for (int i = 0; i < max; i++)
                {
                    obj.InitialParty.Add(br.ReadInt32());
                }

                //Please keep all the non engine related stuff up here

                // From this point onward is all engine related stuff

                // Tile Engine
                max = br.ReadInt32();
                for (int i = 0; i < max; i++)
                {
                    _tempTileset = new Tileset();
                    _tempTileset.Name = br.ReadString();
                    _tempTileset.ID = br.ReadInt32();
                    obj.TM.myTileset.Add(_tempTileset);
                }

                max = br.ReadInt32();
                for (int i = 0; i < max; i++)
                {
                    _tempMap = new TileMap();
                    _tempMap.maxX = br.ReadInt32();
                    _tempMap.maxY = br.ReadInt32();

                    _tempMap.InitEvent();

                    _tempMap.Name = br.ReadString();
                    _tempMap.PlayerAbove = br.ReadInt32();

                    _tempMap.Block = new TileProperty[5];

                    for (int b = 0; b < 5; b++)
                    {
                        TileProperty _tempTileProperty = new TileProperty(_tempMap.maxX, _tempMap.maxY);
                        for (int x = 0; x < _tempMap.maxX; x++)
                            for (int y = 0; y < _tempMap.maxY; y++)
                                _tempTileProperty.MyLayer[x, y] = br.ReadByte();

                        _tempMap.Block[b] = _tempTileProperty;
                    }

                    int secmax = br.ReadInt32();
                    for (int l = 0; l < secmax; l++)
                    {
                        _tempLayer = new TileLayer();
                        _tempLayer.Name = br.ReadString();
                        _tempLayer.Opacity = br.ReadInt32();
                        _tempLayer.Order = br.ReadInt32();
                        _tempLayer.Visible = br.ReadBoolean();

                        int thimax = br.ReadInt32();
                        for (int t = 0; t < thimax; t++)
                        {
                            _tempTile = new Tile();
                            _tempTile.Width = br.ReadInt32();
                            _tempTile.Height = br.ReadInt32();
                            _tempTile.TS = br.ReadInt32();
                            _tempTile.Opacity = br.ReadInt32();
                            _tempTile.plcX = br.ReadInt32();
                            _tempTile.plcY = br.ReadInt32();
                            _tempTile.srcX = br.ReadInt32();
                            _tempTile.srcY = br.ReadInt32();

                            _tempLayer.addTile(_tempTile);
                        }

                        thimax = br.ReadInt32();
                        for (int ml = 0; ml < thimax; ml++)
                        {
                            _tempMiniLayer = new TileLayer();
                            _tempMiniLayer.Name = br.ReadString();
                            _tempMiniLayer.Opacity = br.ReadInt32();
                            _tempMiniLayer.Order = br.ReadInt32();
                            _tempMiniLayer.Visible = br.ReadBoolean();

                            int foumax = br.ReadInt32();
                            for (int t = 0; t < foumax; t++)
                            {
                                _tempTile = new Tile();
                                _tempTile.Width = br.ReadInt32();
                                _tempTile.Height = br.ReadInt32();
                                _tempTile.TS = br.ReadInt32();
                                _tempTile.Opacity = br.ReadInt32();
                                _tempTile.plcX = br.ReadInt32();
                                _tempTile.plcY = br.ReadInt32();
                                _tempTile.srcX = br.ReadInt32();
                                _tempTile.srcY = br.ReadInt32();

                                _tempMiniLayer.addTile(_tempTile);
                            }

                            _tempLayer.MiniLayer.Add(_tempMiniLayer);
                        }

                        _tempMap.myLayer.Add(_tempLayer);
                    }

                    for (int x = 0; x < _tempMap.maxX; x++)
                    {
                        for (int y = 0; y < _tempMap.maxY; y++)
                        {
                            int count = br.ReadInt32();
                            for (int c = 0; c < count; c++)
                                LoadEvent(obj, _tempMap.EM[x, y].MyEvent);
                        }
                    }

                    obj.TM.myMap.Add(_tempMap);
                }

                // Graphic Manager
                max = br.ReadInt32();
                for (int i = 0; i < max; i++)
                {
                    _tempResource = new GResource();

                    _tempResource.Path = br.ReadString();
                    _tempResource.Type = br.ReadInt32();

                    obj.GM.myResource.Add(_tempResource);
                }

                // Actor Manager
                max = br.ReadInt32();
                for (int i = 0; i < max; i++)
                {
                    _tempActor = new Actor();
                    _tempActor.Name = br.ReadString();
                    _tempActor.Description = br.ReadString();
                    _tempActor.Level = br.ReadInt32();
                    _tempActor.Gender = br.ReadInt32();
                    _tempActor.Face = br.ReadInt32();
                    _tempActor.Sprite = br.ReadInt32();
                    _tempActor.Job = br.ReadInt32();
                    _tempActor.JobLevel = br.ReadInt32();
                    _tempActor.StatPoints = br.ReadInt32();

                    _tempActor.Stat = new int[br.ReadInt32()];
                    for (int s = 0; s < _tempActor.Stat.Length; s++)
                    {
                        _tempActor.Stat[s] = br.ReadInt32();
                    }

                    obj.AM.MyActor.Add(_tempActor);
                }

                max = br.ReadInt32();
                for (int i = 0; i < max; i++)
                {
                    _tempFace = new Face();
                    _tempFace.Name = br.ReadString();
                    _tempFace.ID = br.ReadInt32();

                    obj.AM.MyFace.Add(_tempFace);
                }

                max = br.ReadInt32();
                for (int i = 0; i < max; i++)
                {
                    _tempSprite = new Sprites();
                    _tempSprite.Name = br.ReadString();
                    _tempSprite.ID = br.ReadInt32();

                    obj.AM.MySprite.Add(_tempSprite);
                }
            }
        }
예제 #4
0
        public void DrawBlock(Texture t, int tilew, int tileh, RenderWindow toDraw, TileProperty[] tp, int x, int y)
        {
            Sprite sp = new Sprite(t);

            // Drawing the left most arrow)
            if (tp[4].MyLayer[x, y] != 1)
            {
                sp.TextureRect = new IntRect(0, 0, 8, 8);
                sp.Position = new Vector2f(x * tilew + 0, y * tileh + (tileh / 2) - 4);
            }
            else
            {
                sp.TextureRect = new IntRect(0, 8, 8, 8);
                sp.Position = new Vector2f(x * tilew + 0, y * tileh + (tileh / 2) - 4);
            }

            toDraw.Draw(sp);

            // Drawing the top most arrow)
            if (tp[3].MyLayer[x, y] != 1)
            {
                sp.TextureRect = new IntRect(8, 0, 8, 8);
                sp.Position = new Vector2f(x * tilew + tilew / 2 - 4, y * tileh + 0);
            }
            else
            {
                sp.TextureRect = new IntRect(8, 8, 8, 8);
                sp.Position = new Vector2f(x * tilew + tilew / 2 - 4, y * tileh + 0);
            }

            toDraw.Draw(sp);

            // Drawing the right most arrow)
            if (tp[2].MyLayer[x, y] != 1)
            {
                sp.TextureRect = new IntRect(16, 0, 8, 8);
                sp.Position = new Vector2f(x * tilew + tilew - 8, y * tileh + (tileh / 2) - 4);
            }
            else
            {
                sp.TextureRect = new IntRect(16, 8, 8, 8);
                sp.Position = new Vector2f(x * tilew + tilew - 8, y * tileh + (tileh / 2) - 4);
            }

            toDraw.Draw(sp);

            // Drawing the bottom most arrow)
            if (tp[1].MyLayer[x, y] != 1)
            {
                sp.TextureRect = new IntRect(24, 0, 8, 8);
                sp.Position = new Vector2f(x * tilew + tilew / 2 - 4, y * tileh + tileh - 8);
            }
            else
            {
                sp.TextureRect = new IntRect(24, 8, 8, 8);
                sp.Position = new Vector2f(x * tilew + tilew / 2 - 4, y * tileh + tileh - 8);
            }

            toDraw.Draw(sp);

            // Drawing the center)
            if (tp[0].MyLayer[x, y] != 1)
            {
                sp.TextureRect = new IntRect(32, 0, 8, 8);
                sp.Position = new Vector2f(x * tilew + tilew / 2 - 4, y * tileh + tileh / 2 - 4);
            }
            else
            {
                sp.TextureRect = new IntRect(32, 8, 8, 8);
                sp.Position = new Vector2f(x * tilew + tilew / 2 - 4, y * tileh + tileh / 2 - 4);
            }

            toDraw.Draw(sp);
        }