Ejemplo n.º 1
0
        //マップチップを読み取る
        public Bitmap GetMapChip(int spno)
        {
            // 座標を読み取り.
            var mcpoint = SpliteCell(spno);
            // 座標とサイズを格納.
            Rectangle rect = new Rectangle(mcpoint.X, mcpoint.Y, MapChip, MapChip);
            // 座標とサイズからコピーを作成.
            Bitmap bmpNew = MapImage.Clone(rect, MapImage.PixelFormat);

            // コピーを返す.
            return(bmpNew);
        }
Ejemplo n.º 2
0
        private void GetTiles()
        {
            if (MapImage.Width % Constants.TileWidthPixels != 0 || MapImage.Height % Constants.TileHeightPixels != 0)
            {
                throw new InvalidOperationException("Map is not divisible by tile size");
            }

            var tilesPerRow    = MapImage.Width / Constants.TileWidthPixels;
            var tilesPerColumn = MapImage.Height / Constants.TileHeightPixels;

            Tiles = new Tile[tilesPerRow, tilesPerColumn];

            for (int y = 0; y < MapImage.Height; y += Constants.TileHeightPixels)
            {
                for (int x = 0; x < MapImage.Width; x += Constants.TileWidthPixels)
                {
                    var rect      = new Rectangle(x, y, Constants.TileWidthPixels, Constants.TileHeightPixels);
                    var tileImage = MapImage.Clone(rect, PixelFormat.Format32bppArgb);
                    Tiles[x / Constants.TileWidthPixels, y / Constants.TileWidthPixels] = new Tile(new Point(x, y), tileImage);
                }
            }
        }
Ejemplo n.º 3
0
        private void GetScreens()
        {
            if (MapImage.Width % Constants.ScreenWidthPixels != 0 || MapImage.Height % Constants.ScreenHeightPixels != 0)
            {
                throw new InvalidOperationException("Map is not divisible by screen size");
            }

            var screensPerRow    = MapImage.Width / Constants.ScreenWidthPixels;
            var screensPerColumn = MapImage.Height / Constants.ScreenHeightPixels;

            Screens = new Screen[screensPerRow, screensPerColumn];

            for (int y = 0; y < MapImage.Height; y += Constants.ScreenHeightPixels)
            {
                for (int x = 0; x < MapImage.Width; x += Constants.ScreenWidthPixels)
                {
                    var rect        = new Rectangle(x, y, Constants.ScreenWidthPixels, Constants.ScreenHeightPixels);
                    var screenImage = MapImage.Clone(rect, PixelFormat.Format32bppArgb);
                    Screens[x / Constants.ScreenWidthPixels, y / Constants.ScreenHeightPixels] = new Screen(new Point(x, y), screenImage);
                }
            }

            GiveScreensTiles();
        }