From 572f39d8485c6a4aa88b5dc1b63adfa633612c20 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 29 May 2020 12:56:05 +0800 Subject: [PATCH] 1 --- server/gameserver/room.cc | 4 ---- server/gameserver/room.h | 5 +---- server/gameserver/roommgr.cc | 10 ++++++---- third_party/a8engine | 2 +- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index e36d56e..c869508 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -59,10 +59,6 @@ void Room::Init() void Room::UnInit() { App::Instance()->perf.alive_count -= alive_count_; - if (game_over_timer) { - a8::Timer::Instance()->DeleteTimer(game_over_timer); - game_over_timer = nullptr; - } xtimer_attacher_.ClearTimerList(); for (auto& pair : accountid_hash_) { PlayerMgr::Instance()->RemovePlayerBySocket(pair.second->socket_handle); diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 167b3dd..a88865f 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -1,7 +1,6 @@ #pragma once #include -#include #include "frameevent.h" #include "framemaker.h" @@ -23,7 +22,6 @@ namespace metatable class DropObjJson; } -struct timer_list; struct xtimer_list; class Entity; class RoomEntity; @@ -34,7 +32,6 @@ class Bullet; class Human; class Player; class Building; -class Hero; class AabbCollider; class Android; class Room @@ -50,7 +47,6 @@ public: bool game_over = false; long long game_over_frameno = 0; long long game_over_tick = 0; - timer_list* game_over_timer = nullptr; a8::XTimer xtimer; GridService* grid_service = nullptr; MapService* map_service = nullptr; @@ -64,6 +60,7 @@ public: std::vector* loots = nullptr; std::vector* buildings = nullptr; Human* first_newbie = nullptr; + a8::XTimerAttacher timer_attacher; ~Room(); void Init(); diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 16ccd4c..c22ebda 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -176,10 +176,12 @@ void RoomMgr::AddOverRoom(long long room_uuid) Room* room = GetRoomByUuid(room_uuid); if (room) { room->game_over_tick = a8::XGetTickCount(); - room->game_over_timer = a8::Timer::Instance()->AddRepeatTimer(500, - a8::XParams() - .SetSender(room_uuid), - callback); + a8::Timer::Instance()->AddRepeatTimerAndAttach + (500, + a8::XParams() + .SetSender(room_uuid), + callback, + &room->timer_attacher.timer_list_); } } diff --git a/third_party/a8engine b/third_party/a8engine index 51e1820..8ab07d8 160000 --- a/third_party/a8engine +++ b/third_party/a8engine @@ -1 +1 @@ -Subproject commit 51e182024207ec893cd0ed1b8f8d971341afb4a9 +Subproject commit 8ab07d896fab50c552a60220fa2508967f76a69b