Cześć, potrzebuję pomocy z jedną rzeczą, podczas walki z przeciwnikiem, jak go pokonam chcę go usunąć (na stałe) z planszy. Mam aktualnie zanik pamięci i nie wiem jak to zrobić. W funkcji action zmieniam jego typ na DEFAULT (czyli, nie powinno się nic rysować w tym miejscu po wywołaniu kolejnych funkcji)
Wstawię kawałki kodu, gdzie ingeruję w modyfikację przeciwników:
bool Engine::action(View& viewMenu)
{
bool typ;
if (npc1->action(window, &viewMenu, font,player,&typ)) {
this->flaga = 0;
if (typ) {
pair<int, int> temp;
npc.NPCMap[position.y][position.x].type = NPC::DEFAULT;
npc.NPCMap[position.y][position.x].interactable = false;
temp = updateMap();
updateMapNPC(temp);
this->canMove = true;
}
return false;
}
return true;
}
/////////////
void Engine::setMap()
{
string name = "level_" + to_string(this->player->getcurrentLevel()) + ".txt";
cout << this->player->getcurrentLevel();
// wczytanie mapy i ustawienie wskaŸnika
if (!level.loadFromFile(name)) {
cout << "[ERROR] Problem z zaladowaniem poziomu do pamieci!n";
return;
}
if (!tPlayer.loadFromFile("Data/Graphic/Male.png")) cout << "[error] gracz jest nagi!";
tPlayer.isSmooth();
this->player->setPosition(level.startX * TILE_SIZE, level.startY* TILE_SIZE);
this->player->setTexture(tPlayer);
npc.setMonster(level.getHeight(), level.getWidth(), level);
pair<int, int> temp;
temp = updateMap();
updateMapNPC(temp);
window->setView(*viewGame);
}
//////////////
void Engine::updateMapNPC(pair<int,int> temp)
{
for (int y = 0, h = temp.first;y < HEIGHT;y++) {
for (int x = 0, v = temp.second;x < WIDTH;x++) {
if (npc.NPCMap[h][v].type == NPC::MONSTER)
{
spriteNPC[y][x].setPosition(v*TILE_SIZE, h*TILE_SIZE);
spriteNPC[y][x].setTexture(texture2[npc.NPCMap[h][v].type]);
}
if (npc.NPCMap[h][v].type == NPC::TRADER)
{
spriteNPC[y][x].setPosition(v*TILE_SIZE, h*TILE_SIZE);
spriteNPC[y][x].setTexture(texture2[npc.NPCMap[h][v].type]);
}
if (npc.NPCMap[h][v].type == NPC::BOSS)
{
spriteNPC[y][x].setPosition(v*TILE_SIZE, h*TILE_SIZE);
spriteNPC[y][x].setTexture(texture2[npc.NPCMap[h][v].type]);
}
v++;
}
h++;
}
}
////////////////
w funkcji rysowania:
for (int y = 0; y < HEIGHT; y++) {
for (int x = 0; x < WIDTH; x++) {
window->draw(spriteNPC[y][x]);
}
}
/////////////