add AdjustPosInnnerMap function

This commit is contained in:
aozhiwei 2020-06-10 16:38:22 +08:00
parent 88980bd9da
commit f4098cb2db
2 changed files with 33 additions and 0 deletions

View File

@ -569,6 +569,38 @@ bool Room::OverBorder(const a8::Vec2 pos, float radius)
return false;
}
void Room::AdjustPosInnerMap(a8::Vec2& pos, float radius)
{
//检查x轴
{
int left_x = pos.x - radius;
if (left_x < 0.001f) {
pos.x = radius + 10;
}
int right_x = pos.x + radius;
if (right_x > map_meta_->i->map_width()) {
pos.x = map_meta_->i->map_width() - radius - 10;
}
}
//检查y轴
{
int up_y = pos.y + radius;
if (up_y > map_meta_->i->map_height()) {
pos.y = map_meta_->i->map_height() - radius - 10;
}
int down_y = pos.y - radius;
if (down_y < 0.001f) {
pos.y = radius + 10;
}
}
if (OverBorder(pos, radius)) {
pos = a8::Vec2(1800, 1800);
#ifdef DEBUG
abort();
#endif
}
}
Human* Room::GetWatchWarTarget(Human* hum)
{
if (hum->team_members) {

View File

@ -120,6 +120,7 @@ public:
Player* GetOneAlivePlayer();
void GetAlivePlayers(std::vector<Player*>& humans, size_t num);
int GetCanShuaNum(int shua_num);
void AdjustPosInnerMap(a8::Vec2& pos, float radius);
private:
int AllocUniid();