Правильно ли отображается простая карта тайлов? - PullRequest
0 голосов
/ 01 апреля 2011

Хорошо, я пытаюсь отобразить карту тайлов, но моя математика, кажется, выключена.

private void MapPanel_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            GraphicsUnit units = GraphicsUnit.Pixel;

            for (int i = 0; i < map.tiles.Length; i++)
            {
                for (int j = 0; j < map.tiles[i].Length; j++)
                {
                    int tileXCoord = 0;
                    int tileYCoord = 0;
                    int tileSheetWidth = tileMap.Width / map.tileSize;

                    if (map.tiles[i][j] != 0)
                    {
                        tileXCoord = tileSheetWidth % map.tiles[i][j];
                        tileYCoord = tileSheetWidth / map.tiles[i][j];
                    }

                    Rectangle destRect = new Rectangle((i * map.tileSize) - hScrollValue, (j * map.tileSize) - vScrollValue, map.tileSize, map.tileSize);
                    g.DrawImage(tileMap, destRect, tileXCoord * map.tileSize, tileYCoord * map.tileSize, map.tileSize, map.tileSize, units);
                }
            }
        }

Теперь я пытаюсь, чтобы моя карта использовала индекс мозаики «завернутый в слово»

[0][1]
[2][3]

Но это не работает, кто-нибудь знает почему?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011
private void MapPanel_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            GraphicsUnit units = GraphicsUnit.Pixel;

            for (int i = 0; i < map.tiles.Length; i++)
            {
                for (int j = 0; j < map.tiles[i].Length; j++)
                {
                    int tileXCoord = 0;
                    int tileYCoord = 0;
                    int tileSheetWidth = tileMap.Width / map.tileSize;

                    if (map.tiles[i][j] != 0)
                    {
                        tileXCoord = map.tiles[i][j] % tileSheetWidth;
                        tileYCoord = map.tiles[i][j] / tileSheetWidth;
                    }

                    Rectangle destRect = new Rectangle((i * map.tileSize) - hScrollValue, (j * map.tileSize) - vScrollValue, map.tileSize, map.tileSize);
                    g.DrawImage(tileMap, destRect, tileXCoord * map.tileSize, tileYCoord * map.tileSize, map.tileSize, map.tileSize, units);
                }
            }
        }
0 голосов
/ 01 апреля 2011

Я использую

tileXCoord = ((currentTile % tilesize) * Imagewidth);
tileYCoord = ((currentTile / tileSize) * Imagewidth);

, которые прекрасно работают для меня.Обратите внимание, что я ни в коем случае не эксперт в подобных вещах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...