bool Enemigo::personaje_en_radio(MapaServidor& mapa,PlayerManager& pm,TileServidor*& tilePersonaje){ //it-> first = nick //it-> second = pje //TileServidor* tileEnemigo = mapa.getTilePorPixeles(this->getX(),this->getY()); //int XlogicoEnemigo = tileEnemigo->getU(); //int YlogicoEnemigo = tileEnemigo->getV(); int XlogicoEnemigo = this->getX(); int YlogicoEnemigo = this->getY(); bool encontro_personaje = false; //posiciones fisicas for(auto it = pm.getPlayers().begin();it != pm.getPlayers().end(); it++) { int XLogicoPersonaje = it->second.getX(); int YLogicoPersonaje = it->second.getY(); if( (XLogicoPersonaje >= (XlogicoEnemigo - radioAtaque)) && (XLogicoPersonaje <= (XlogicoEnemigo + radioAtaque)) ){ if( (YLogicoPersonaje >= (YlogicoEnemigo - radioAtaque)) && (YLogicoPersonaje <= (YlogicoEnemigo + radioAtaque)) ){ encontro_personaje = true; tilePersonaje = mapa.getTile( XLogicoPersonaje,YLogicoPersonaje); break; } } } return encontro_personaje; }
bool Enemigo::personaje_adyacente(MapaServidor& mapa,PlayerManager& pm, TileServidor*& tilePersonaje,string& enemigoAtacado){ bool res = false; for(auto it = pm.getPlayers().begin();it != pm.getPlayers().end();it++) { int x = it->second.getX() - this->getX(); int y = it->second.getY() - this->getY(); if(abs(x) <=1 && abs(y)<=1){ tilePersonaje = mapa.getTile(it->second.getX(),it->second.getY()); res = true; enemigoAtacado = it->second.getNick(); break; } } return res; }