This commit is contained in:
aozhiwei 2019-07-15 19:35:58 +08:00
parent 718b2263f9
commit 44deb18e2c
2 changed files with 9 additions and 9 deletions

View File

@ -137,6 +137,9 @@ bool Bullet::IsBomb()
void Bullet::MapServiceUpdate()
{
if (dead) {
return;
}
pos = pos + dir * meta->i->bullet_speed() / (float)SERVER_FRAME_RATE;
float distance = (pos - born_pos).Norm();
if (room->OverBorder(pos, meta->i->bullet_rad())) {
@ -187,6 +190,7 @@ void Bullet::MapServiceUpdate()
void Bullet::PostAttack()
{
dead = true;
auto fire_func =
[] (const a8::XParams& param)
{

View File

@ -165,10 +165,9 @@ void Obstacle::Explosion()
if (explosioned) {
return;
}
float old_rad = self_collider_->rad;
if (self_collider_) {
self_collider_->rad = meta->i->damage_dia();
}
CircleCollider collider;
collider.owner = this;
collider.rad = meta->i->damage_dia();
if (meta->i->damage_dia() > 0.01f &&
meta->i->damage() > 0.01f) {
std::set<Entity*> objects;
@ -176,7 +175,7 @@ void Obstacle::Explosion()
room->grid_service.GetAllCellsByXy(pos.x, pos.y, grid_list);
for (auto& grid : grid_list) {
for (Human* hum: grid->human_list) {
if (TestCollision(hum)) {
if (hum->TestCollision(&collider)) {
objects.insert(hum);
}
}
@ -185,7 +184,7 @@ void Obstacle::Explosion()
case ET_Obstacle:
case ET_Building:
{
if (entity != this && TestCollision(entity)) {
if (entity != this && entity->TestCollision(&collider)) {
objects.insert(entity);
}
}
@ -238,9 +237,6 @@ void Obstacle::Explosion()
}
}
}
if (self_collider_) {
self_collider_->rad = old_rad;
}
explosioned = true;
NotifyDelObject();
room->RemoveObjectLater(this);