карта — Расчет урожая Tileset Переполнение стека

Так что у меня проблема с рендерингом набора тайлов. Это немного сложно объяснить, но я сделаю все возможное.

По сути, я загружаю эти «номера плиток» из файлов TMX, и они представляют только номер набора плиток в наборе плиток. Поэтому, если я использую плитку, расположенную в строке ниже первой, я получу только номер. Но я хочу, чтобы координаты X и Y вычисляли, где я могу обрезать изображение, когда я показываю его в своей игре.

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

1,1,1,2,1,1,1,1,9,1,6,1,1
1,1,1,2,2,2,1,1,1,1,1,1,1
1,1,1,1,1,2,1,1,1,1,1,1,1
1,1,1,1,1,2,1,1,1,3,1,1,1
1,6,1,1,1,2,1,1,1,1,1,1,1
1,1,5,5,1,2,2,2,1,1,1,1,1
1,1,1,1,1,1,1,2,1,1,1,1,1

Tileset:
http://puu.sh/9Tv2X/7938b6abf4.png

поэтому, когда я рендерил все плитки в первой строке в этом наборе плиток с номерами 1-4 (так как набор плиток имеет длину 4 плитки), он работает нормально, но все, что осталось, обрезается за пределами изображения.

Поэтому для этого мне нужно увеличить позицию Y и сбрасывать позицию X каждый раз, когда она выходит за пределы ширины набора тайлов (32 * (tileNumber — 1)), но мой мозг не может понять, как это сделать.

ширина плитки и высота 32.

мой код для рисования Tilset:

void TileMap::Draw()
{
for (unsigned int i = 0; i < mapVector.size(); i++)
{
for (unsigned int j = 0; j < mapVector[i].size(); j++)
{
int tileY = 0;
int tileX = mapVector[i][j] - 1;

if (tileWidth * mapVector[i][j] > tilesetWidth)
{
//now what
}if (mapVector[i][j] > 0)
{
tileSprite->SetPosition(j * tileWidth, i * tileHeight);
tileSprite->SetTextureRect(tileX * tileWidth, tileY * tileHeight, 32, 32);
tileSprite->Draw();
}
}
}
}

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]