From 324aaadb0acbba1c4d4455b4164d5436abbcf148 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 2 Apr 2021 20:07:39 +0800 Subject: [PATCH] 1 --- server/gameserver/bullet.cc | 39 ++++++++++++++++---- server/gameserver/molotor_cocktail_mitask.cc | 4 ++ server/gameserver/molotor_cocktail_mitask.h | 1 + server/gameserver/posiongas_mitask.cc | 5 +++ server/gameserver/posiongas_mitask.h | 1 + 5 files changed, 42 insertions(+), 8 deletions(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 6ec1f08..3c8476c 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -377,22 +377,34 @@ void Bullet::ProcPosionGasBomb(int delay_time) task->bomb_pos = GetPos(); task->gun_meta = gun_meta; task->meta = meta; - room->xtimer.AddDeadLineTimerAndAttach - (std::max(1, (int)(delay_time / FRAME_RATE_MS)), + + room->xtimer.AddRepeatTimerAndAttach + (SERVER_FRAME_RATE / 2, a8::XParams() .SetSender(task), [] (const a8::XParams& param) { PosionGasMiTask* task = (PosionGasMiTask*)param.sender.GetUserData(); - task->Done(); + task->Check(); }, - &task->timer_attacher.timer_list_, + &task->timer_attacher.timer_list_); + + room->xtimer.AddDeadLineTimerAndAttach + (SERVER_FRAME_RATE * MetaMgr::Instance()->GetSysParamAsInt("smoke_duration", 10), + a8::XParams() + .SetSender(task), + [] (const a8::XParams& param) + { + }, + &room->timer_attacher.timer_list_, [] (const a8::XParams& param) { PosionGasMiTask* task = (PosionGasMiTask*)param.sender.GetUserData(); + task->Done(); delete task; } ); + } } @@ -405,19 +417,30 @@ void Bullet::ProcMolotorCocktailBomb(int delay_time) task->bomb_pos = GetPos(); task->gun_meta = gun_meta; task->meta = meta; - room->xtimer.AddDeadLineTimerAndAttach - (std::max(1, (int)(delay_time / FRAME_RATE_MS)), + + room->xtimer.AddRepeatTimerAndAttach + (SERVER_FRAME_RATE / 2, a8::XParams() .SetSender(task), [] (const a8::XParams& param) { MolotorCocktailMiTask* task = (MolotorCocktailMiTask*)param.sender.GetUserData(); - task->Done(); + task->Check(); }, - &task->timer_attacher.timer_list_, + &task->timer_attacher.timer_list_); + + room->xtimer.AddDeadLineTimerAndAttach + (SERVER_FRAME_RATE * MetaMgr::Instance()->GetSysParamAsInt("smoke_duration", 10), + a8::XParams() + .SetSender(task), + [] (const a8::XParams& param) + { + }, + &room->timer_attacher.timer_list_, [] (const a8::XParams& param) { MolotorCocktailMiTask* task = (MolotorCocktailMiTask*)param.sender.GetUserData(); + task->Done(); delete task; } ); diff --git a/server/gameserver/molotor_cocktail_mitask.cc b/server/gameserver/molotor_cocktail_mitask.cc index b79cde4..d5da782 100644 --- a/server/gameserver/molotor_cocktail_mitask.cc +++ b/server/gameserver/molotor_cocktail_mitask.cc @@ -5,6 +5,10 @@ #include "player.h" #include "metadata.h" +void MolotorCocktailMiTask::Check() +{ +} + void MolotorCocktailMiTask::Done() { } diff --git a/server/gameserver/molotor_cocktail_mitask.h b/server/gameserver/molotor_cocktail_mitask.h index 526cbdc..ea1a1e8 100644 --- a/server/gameserver/molotor_cocktail_mitask.h +++ b/server/gameserver/molotor_cocktail_mitask.h @@ -19,5 +19,6 @@ class MolotorCocktailMiTask : public MicroTask MetaData::Equip* gun_meta = nullptr; MetaData::Equip* meta = nullptr; + void Check(); void Done(); }; diff --git a/server/gameserver/posiongas_mitask.cc b/server/gameserver/posiongas_mitask.cc index eeb4f9b..2e90a9d 100644 --- a/server/gameserver/posiongas_mitask.cc +++ b/server/gameserver/posiongas_mitask.cc @@ -5,6 +5,11 @@ #include "player.h" #include "metadata.h" +void PosionGasMiTask::Check() +{ + +} + void PosionGasMiTask::Done() { diff --git a/server/gameserver/posiongas_mitask.h b/server/gameserver/posiongas_mitask.h index 705bc68..a6acab3 100644 --- a/server/gameserver/posiongas_mitask.h +++ b/server/gameserver/posiongas_mitask.h @@ -19,5 +19,6 @@ class PosionGasMiTask : public MicroTask MetaData::Equip* gun_meta = nullptr; MetaData::Equip* meta = nullptr; + void Check(); void Done(); };