1
This commit is contained in:
parent
718b2263f9
commit
44deb18e2c
@ -137,6 +137,9 @@ bool Bullet::IsBomb()
|
|||||||
|
|
||||||
void Bullet::MapServiceUpdate()
|
void Bullet::MapServiceUpdate()
|
||||||
{
|
{
|
||||||
|
if (dead) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
pos = pos + dir * meta->i->bullet_speed() / (float)SERVER_FRAME_RATE;
|
pos = pos + dir * meta->i->bullet_speed() / (float)SERVER_FRAME_RATE;
|
||||||
float distance = (pos - born_pos).Norm();
|
float distance = (pos - born_pos).Norm();
|
||||||
if (room->OverBorder(pos, meta->i->bullet_rad())) {
|
if (room->OverBorder(pos, meta->i->bullet_rad())) {
|
||||||
@ -187,6 +190,7 @@ void Bullet::MapServiceUpdate()
|
|||||||
|
|
||||||
void Bullet::PostAttack()
|
void Bullet::PostAttack()
|
||||||
{
|
{
|
||||||
|
dead = true;
|
||||||
auto fire_func =
|
auto fire_func =
|
||||||
[] (const a8::XParams& param)
|
[] (const a8::XParams& param)
|
||||||
{
|
{
|
||||||
|
@ -165,10 +165,9 @@ void Obstacle::Explosion()
|
|||||||
if (explosioned) {
|
if (explosioned) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
float old_rad = self_collider_->rad;
|
CircleCollider collider;
|
||||||
if (self_collider_) {
|
collider.owner = this;
|
||||||
self_collider_->rad = meta->i->damage_dia();
|
collider.rad = meta->i->damage_dia();
|
||||||
}
|
|
||||||
if (meta->i->damage_dia() > 0.01f &&
|
if (meta->i->damage_dia() > 0.01f &&
|
||||||
meta->i->damage() > 0.01f) {
|
meta->i->damage() > 0.01f) {
|
||||||
std::set<Entity*> objects;
|
std::set<Entity*> objects;
|
||||||
@ -176,7 +175,7 @@ void Obstacle::Explosion()
|
|||||||
room->grid_service.GetAllCellsByXy(pos.x, pos.y, grid_list);
|
room->grid_service.GetAllCellsByXy(pos.x, pos.y, grid_list);
|
||||||
for (auto& grid : grid_list) {
|
for (auto& grid : grid_list) {
|
||||||
for (Human* hum: grid->human_list) {
|
for (Human* hum: grid->human_list) {
|
||||||
if (TestCollision(hum)) {
|
if (hum->TestCollision(&collider)) {
|
||||||
objects.insert(hum);
|
objects.insert(hum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -185,7 +184,7 @@ void Obstacle::Explosion()
|
|||||||
case ET_Obstacle:
|
case ET_Obstacle:
|
||||||
case ET_Building:
|
case ET_Building:
|
||||||
{
|
{
|
||||||
if (entity != this && TestCollision(entity)) {
|
if (entity != this && entity->TestCollision(&collider)) {
|
||||||
objects.insert(entity);
|
objects.insert(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -238,9 +237,6 @@ void Obstacle::Explosion()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (self_collider_) {
|
|
||||||
self_collider_->rad = old_rad;
|
|
||||||
}
|
|
||||||
explosioned = true;
|
explosioned = true;
|
||||||
NotifyDelObject();
|
NotifyDelObject();
|
||||||
room->RemoveObjectLater(this);
|
room->RemoveObjectLater(this);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user