This commit is contained in:
aozhiwei 2023-03-02 18:31:11 +08:00
parent 4f64659756
commit cbeed93374
6 changed files with 17 additions and 4 deletions

View File

@ -335,6 +335,7 @@ void Bullet::ProcSmokeBomb()
task->bomb_pos = GetPos();
task->buff_meta = buff_meta;
task->gun_meta = gun_meta;
task->Initialize();
auto task_wp = std::weak_ptr<SmokeMiTask>(task);
room->xtimer.SetIntervalEx
(SERVER_FRAME_RATE / 2,
@ -508,7 +509,7 @@ void Bullet::Check(float distance)
void Bullet::ProcFragBomb(int delay_time)
{
if (sender.Get()) {
std::shared_ptr<FragMiTask> task = std::shared_ptr<FragMiTask>();
std::shared_ptr<FragMiTask> task = std::make_shared<FragMiTask>();
task->room = room;
task->sender.Attach(sender.Get());
task->bomb_pos = GetPos();
@ -516,6 +517,7 @@ void Bullet::ProcFragBomb(int delay_time)
task->meta = meta;
task->atk = GetAtk();
task->explosion_range = GetExplosionRange();
task->Initialize();
room->xtimer.SetTimeoutEx
(std::max(1, (int)(delay_time / FRAME_RATE_MS)),
[task] (int event, const a8::Args* args)
@ -563,6 +565,7 @@ void Bullet::ProcC4Bomb(Car* target, int delay_time)
task->gun_meta = gun_meta;
task->meta = meta;
task->atk = GetAtk();
task->Initialize();
room->xtimer.SetTimeoutEx
(std::max(1, (int)(delay_time / FRAME_RATE_MS)),
[task] (int event, const a8::Args* args)

View File

@ -7,7 +7,6 @@ class Player;
class FragMiTask : public MicroTask
{
public:
Room* room = nullptr;
Position bomb_pos;
CreatureWeakPtr sender;
CreatureWeakPtr follow_target;

View File

@ -431,7 +431,7 @@ void PlayerStats::AdjustRewardData()
Human::Human():Creature()
{
default_weapon.weapon_idx = 0;
default_weapon.weapon_id = 30101;
default_weapon.weapon_id = 30102;
default_weapon.ammo = 1;
default_weapon.meta = mt::Equip::GetById(default_weapon.weapon_id);
default_weapon.Recalc();

View File

@ -1,3 +1,9 @@
#include "precompile.h"
#include "microtask.h"
#include "room.h"
void MicroTask::Initialize()
{
xtimer_attacher.SetOwner(&room->xtimer);
}

View File

@ -5,5 +5,8 @@
class MicroTask
{
public:
Room* room = nullptr;
a8::Attacher xtimer_attacher;
virtual void Initialize();
};

View File

@ -1106,7 +1106,7 @@ void Human::ProcThrowDmg(int throw_uniid)
auto proc_frag_func =
[this, equip_meta, context, bomb_pos, bomb_dir, target_pos] ()
{
std::shared_ptr<FragMiTask> task = std::shared_ptr<FragMiTask>();
std::shared_ptr<FragMiTask> task = std::make_shared<FragMiTask>();
task->room = room;
task->sender.Attach(this);
task->bomb_pos.FromGlmVec3(target_pos);
@ -1114,6 +1114,7 @@ void Human::ProcThrowDmg(int throw_uniid)
task->meta = equip_meta;
task->atk = equip_meta->atk();
task->explosion_range = equip_meta->explosion_range();
task->Initialize();
int delay_time = equip_meta->missiles_time();;
room->xtimer.SetTimeoutEx
(std::max(1, (int)(delay_time / FRAME_RATE_MS)),
@ -1137,6 +1138,7 @@ void Human::ProcThrowDmg(int throw_uniid)
task->bomb_pos.FromGlmVec3(target_pos);
task->buff_meta = buff_meta;
task->gun_meta = equip_meta;
task->Initialize();
auto task_wp = std::weak_ptr<SmokeMiTask>(task);
room->xtimer.SetIntervalEx
(SERVER_FRAME_RATE / 2,