rm mitask
This commit is contained in:
parent
6dfb5b26ef
commit
f047697c03
@ -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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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()
|
|
||||||
{
|
|
||||||
}
|
|
@ -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();
|
|
||||||
};
|
|
@ -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()
|
|
||||||
{
|
|
||||||
}
|
|
@ -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();
|
|
||||||
};
|
|
Loading…
x
Reference in New Issue
Block a user