Цитата DivES (
)
veeroteen, ты покажи нам код отрисовки, а мы посмотрим, раскритикуем и что-нибудь посоветуем
Код
void drwTile() {
for (int i = 0; i < MapY; i++) {
for (int n = 0; n < MapX; n++)
{
MapSprite.setTextureRect(sf::IntRect(0 + 32 * std::atoi((TileMap[(int(actor.GetActorPos().y) / 32) - (MapY / 2) + 1 + i][(int(actor.GetActorPos().x) / 32) - (MapX / 2) + 1 + n]).c_str()), 0, 32, 32));//достаем определенный тайл
MapSprite.setPosition(((int(actor.GetActorPos().x) / 32) - (MapX / 2) + 1 + n) * 32, (int((actor.GetActorPos().y) / 32) - (MapY / 2) + 1 + i) * 32);//выставляем позицию
window.draw(MapSprite);
}
}
}
это старый вариант отрисовки, он отлично работает, но требует буфер, и соответственно я упираюсь в размер этого самого буфера
Код
void SetMap()
{
for (int y = 0; y < MapY; y++) {
for (int x = 0; x < MapX; x++) {
jj = "tile" + std::to_string((int(actor.GetActorPos().x) / 32)- MapX/2 + x) + "x" + std::to_string((int(actor.GetActorPos().y) / 32)-MapY/2 + y);//имя элемента
text = level->FirstChildElement(jj.c_str());//достаем элемент
MapSprite.setTextureRect(sf::IntRect(0 + 32 * std::atoi(text->GetText()), 0, 32, 32));//номер тайла
MapSprite.setPosition(
(int((actor.GetActorPos().x) / 32) - MapX/2 + x) * 32,
(int((actor.GetActorPos().y) / 32) - MapY/2 + y) * 32
);
window.draw(MapSprite);
}
}
}
а тут для меня очевидно в чем проблема, но зато в таком виде я ограничен только оперативной памятьюДобавлено (25 Апреля 2020, 09:14)
---------------------------------------------
Цитата realm786 (
)
tile map
Не?
ограничения на размер массива