rm mitask

This commit is contained in:
aozhiwei 2021-05-07 11:49:06 +08:00
parent 6dfb5b26ef
commit f047697c03
5 changed files with 0 additions and 274 deletions

View File

@ -12,8 +12,6 @@
#include "perfmonitor.h" #include "perfmonitor.h"
#include "smoke_mitask.h" #include "smoke_mitask.h"
#include "frag_mitask.h" #include "frag_mitask.h"
#include "posiongas_mitask.h"
#include "molotor_cocktail_mitask.h"
#include "creature.h" #include "creature.h"
#include "roomobstacle.h" #include "roomobstacle.h"
@ -378,7 +376,6 @@ void Bullet::ProcFragBomb(int delay_time)
void Bullet::ProcPosionGasBomb(int delay_time) void Bullet::ProcPosionGasBomb(int delay_time)
{ {
if (sender.Get()) { if (sender.Get()) {
#if 1
a8::Vec2 old_buff_vec2_param1 = sender.Get()->buff_vec2_param1; a8::Vec2 old_buff_vec2_param1 = sender.Get()->buff_vec2_param1;
sender.Get()->buff_vec2_param1 = GetPos(); sender.Get()->buff_vec2_param1 = GetPos();
MetaData::Buff * buff_meta = MetaMgr::Instance()->GetBuff(gun_meta->i->buffid()); MetaData::Buff * buff_meta = MetaMgr::Instance()->GetBuff(gun_meta->i->buffid());
@ -389,40 +386,12 @@ void Bullet::ProcPosionGasBomb(int delay_time)
); );
} }
sender.Get()->buff_vec2_param1 = old_buff_vec2_param1; sender.Get()->buff_vec2_param1 = old_buff_vec2_param1;
#else
PosionGasMiTask* task = new PosionGasMiTask();
task->room = room;
task->sender.Attach(sender.Get());
task->bomb_pos = GetPos();
task->gun_meta = gun_meta;
task->meta = meta;
task->Initialzie();
room->xtimer.AddDeadLineTimerAndAttach
(delay_time / FRAME_RATE_MS,
a8::XParams()
.SetSender(task),
[] (const a8::XParams& param)
{
PosionGasMiTask* task = (PosionGasMiTask*)param.sender.GetUserData();
task->room->frame_event.AddExplosionEx
(task->sender,
task->meta->i->id(),
task->bomb_pos,
task->gun_meta->i->explosion_effect());
task->Active();
},
&room->timer_attacher.timer_list_
);
#endif
} }
} }
void Bullet::ProcMolotorCocktailBomb(int delay_time) void Bullet::ProcMolotorCocktailBomb(int delay_time)
{ {
if (sender.Get()) { if (sender.Get()) {
#if 1
a8::Vec2 old_buff_vec2_param1 = sender.Get()->buff_vec2_param1; a8::Vec2 old_buff_vec2_param1 = sender.Get()->buff_vec2_param1;
sender.Get()->buff_vec2_param1 = GetPos(); sender.Get()->buff_vec2_param1 = GetPos();
MetaData::Buff * buff_meta = MetaMgr::Instance()->GetBuff(gun_meta->i->buffid()); MetaData::Buff * buff_meta = MetaMgr::Instance()->GetBuff(gun_meta->i->buffid());
@ -433,32 +402,5 @@ void Bullet::ProcMolotorCocktailBomb(int delay_time)
); );
} }
sender.Get()->buff_vec2_param1 = old_buff_vec2_param1; sender.Get()->buff_vec2_param1 = old_buff_vec2_param1;
#else
MolotorCocktailMiTask* task = new MolotorCocktailMiTask();
task->room = room;
task->sender.Attach(sender.Get());
task->bomb_pos = GetPos();
task->gun_meta = gun_meta;
task->meta = meta;
task->Initialzie();
room->xtimer.AddDeadLineTimerAndAttach
(delay_time / FRAME_RATE_MS,
a8::XParams()
.SetSender(task),
[] (const a8::XParams& param)
{
MolotorCocktailMiTask* task = (MolotorCocktailMiTask*)param.sender.GetUserData();
task->room->frame_event.AddExplosionEx
(task->sender,
task->meta->i->id(),
task->bomb_pos,
task->gun_meta->i->explosion_effect());
task->Active();
},
&room->timer_attacher.timer_list_
);
#endif
} }
} }

View File

@ -1,80 +0,0 @@
#include "precompile.h"
#include "molotor_cocktail_mitask.h"
#include "room.h"
#include "player.h"
#include "metadata.h"
void MolotorCocktailMiTask::Initialzie()
{
sender.Get()->room->grid_service->GetAllCellsByXy
(
sender.Get()->room,
bomb_pos.x,
bomb_pos.y,
grid_list
);
}
void MolotorCocktailMiTask::Active()
{
room->xtimer.AddRepeatTimerAndAttach
(SERVER_FRAME_RATE / 2,
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
MolotorCocktailMiTask* task = (MolotorCocktailMiTask*)param.sender.GetUserData();
task->Check();
},
&timer_attacher.timer_list_);
room->xtimer.AddDeadLineTimerAndAttach
(SERVER_FRAME_RATE * meta->i->time(),
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
},
&timer_attacher.timer_list_,
[] (const a8::XParams& param)
{
MolotorCocktailMiTask* task = (MolotorCocktailMiTask*)param.sender.GetUserData();
task->Done();
delete task;
}
);
}
void MolotorCocktailMiTask::Check()
{
if (sender.Get()) {
std::set<Creature*> objects;
sender.Get()->room->grid_service->TouchCreatures
(
sender.Get()->room->GetRoomIdx(),
grid_list,
[this, &objects] (Creature* c, bool& stop)
{
if (sender.Get()->IsProperTarget(c)) {
if (bomb_pos.Distance(c->GetPos()) < meta->i->explosion_range()) {
objects.insert(c);
}
}
}
);
for (Creature* target : objects) {
if (!target->GetBuffById(meta->i->buffid())) {
a8::Vec2 old_buff_vec2_param1 = target->buff_vec2_param1;
target->buff_vec2_param1 = target->GetPos();
target->MustBeAddBuff(sender.Get(), meta->i->buffid());
target->buff_vec2_param1 = old_buff_vec2_param1;
}
}
}
}
void MolotorCocktailMiTask::Done()
{
}

View File

@ -1,28 +0,0 @@
#pragma once
#include "microtask.h"
#include "gridcell.h"
namespace MetaData
{
struct Buff;
struct Equip;
}
class Room;
class Player;
class MolotorCocktailMiTask : public MicroTask
{
public:
Room* room = nullptr;
a8::Vec2 bomb_pos;
CreatureWeakPtr sender;
MetaData::Equip* gun_meta = nullptr;
MetaData::Equip* meta = nullptr;
std::set<GridCell*> grid_list;
void Initialzie();
void Active();
void Check();
void Done();
};

View File

@ -1,80 +0,0 @@
#include "precompile.h"
#include "posiongas_mitask.h"
#include "room.h"
#include "player.h"
#include "metadata.h"
void PosionGasMiTask::Initialzie()
{
sender.Get()->room->grid_service->GetAllCellsByXy
(
sender.Get()->room,
bomb_pos.x,
bomb_pos.y,
grid_list
);
}
void PosionGasMiTask::Active()
{
room->xtimer.AddRepeatTimerAndAttach
(SERVER_FRAME_RATE / 2,
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
PosionGasMiTask* task = (PosionGasMiTask*)param.sender.GetUserData();
task->Check();
},
&timer_attacher.timer_list_);
room->xtimer.AddDeadLineTimerAndAttach
(SERVER_FRAME_RATE * meta->i->time(),
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
},
&timer_attacher.timer_list_,
[] (const a8::XParams& param)
{
PosionGasMiTask* task = (PosionGasMiTask*)param.sender.GetUserData();
task->Done();
delete task;
}
);
}
void PosionGasMiTask::Check()
{
if (sender.Get()) {
std::set<Creature*> objects;
sender.Get()->room->grid_service->TouchCreatures
(
sender.Get()->room->GetRoomIdx(),
grid_list,
[this, &objects] (Creature* c, bool& stop)
{
if (sender.Get()->IsProperTarget(c)) {
if (bomb_pos.Distance(c->GetPos()) < meta->i->explosion_range()) {
objects.insert(c);
}
}
}
);
for (Creature* target : objects) {
if (!target->GetBuffById(meta->i->buffid())) {
a8::Vec2 old_buff_vec2_param1 = target->buff_vec2_param1;
target->buff_vec2_param1 = target->GetPos();
target->MustBeAddBuff(sender.Get(), meta->i->buffid());
target->buff_vec2_param1 = old_buff_vec2_param1;
}
}
}
}
void PosionGasMiTask::Done()
{
}

View File

@ -1,28 +0,0 @@
#pragma once
#include "microtask.h"
#include "gridcell.h"
namespace MetaData
{
struct Buff;
struct Equip;
}
class Room;
class Player;
class PosionGasMiTask : public MicroTask
{
public:
Room* room = nullptr;
a8::Vec2 bomb_pos;
CreatureWeakPtr sender;
MetaData::Equip* gun_meta = nullptr;
MetaData::Equip* meta = nullptr;
std::set<GridCell*> grid_list;
void Initialzie();
void Active();
void Check();
void Done();
};