From 7d9d38aee9eea9ec60a513da289e10503606cbc9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 27 Mar 2019 17:51:41 +0800 Subject: [PATCH] add hit --- server/gameserver/bullet.cc | 1 + server/gameserver/obstacle.cc | 1 + server/gameserver/obstacle.h | 1 + server/gameserver/room.cc | 1 + server/gameserver/room.h | 1 + 5 files changed, 5 insertions(+) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 02c6c2c..c8cec94 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -73,6 +73,7 @@ void Bullet::OnHit(std::vector& objects) if (!obstacle->dead && obstacle->meta->i->attackable()) { obstacle->health = std::min(0.0f, obstacle->health - 10); obstacle->dead = std::min(obstacle->health, 0.001f) <= 0.01f; + obstacle->dead_frameno = room->frame_no; if (obstacle->dead) { obstacle->ClearColliders(); room->ProcDrop(obstacle->pos, obstacle->meta->i->drop()); diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 058e15a..abd5e28 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -81,4 +81,5 @@ void Obstacle::FillMFObjectFull(cs::MFObjectFull* full_data) p->set_obstacle_id(meta->i->thing_id()); p->set_health(health); p->set_dead(dead); + p->set_dead_at_thisframe(dead ? dead_frameno < room->frame_no : false); } diff --git a/server/gameserver/obstacle.h b/server/gameserver/obstacle.h index e1e4d98..1fca18f 100644 --- a/server/gameserver/obstacle.h +++ b/server/gameserver/obstacle.h @@ -18,6 +18,7 @@ class Obstacle : public Entity MetaData::MapThing* meta = nullptr; float health = 0.0f; bool dead = false; + long long dead_frameno = 0; Obstacle(); virtual ~Obstacle() override; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index a45a557..46ac92a 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -19,6 +19,7 @@ const int ANDROID_NUM = 0; void Room::Update(int delta_time) { elapsed_time_ += delta_time; + ++frame_no; while (elapsed_time_ >= 50) { ResetFrameData(); int i = 0; diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 9608867..692b2dd 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -33,6 +33,7 @@ public: long long room_uuid = 0; MetaData::Map* map_meta = nullptr; RoomFrameData frame_data; + long long frame_no = 0; void Update(int delta_time); bool IsFull();