1
This commit is contained in:
parent
324aaadb0a
commit
dbc74c3a04
@ -377,6 +377,7 @@ void Bullet::ProcPosionGasBomb(int delay_time)
|
|||||||
task->bomb_pos = GetPos();
|
task->bomb_pos = GetPos();
|
||||||
task->gun_meta = gun_meta;
|
task->gun_meta = gun_meta;
|
||||||
task->meta = meta;
|
task->meta = meta;
|
||||||
|
task->Initialzie();
|
||||||
|
|
||||||
room->xtimer.AddRepeatTimerAndAttach
|
room->xtimer.AddRepeatTimerAndAttach
|
||||||
(SERVER_FRAME_RATE / 2,
|
(SERVER_FRAME_RATE / 2,
|
||||||
@ -417,6 +418,7 @@ void Bullet::ProcMolotorCocktailBomb(int delay_time)
|
|||||||
task->bomb_pos = GetPos();
|
task->bomb_pos = GetPos();
|
||||||
task->gun_meta = gun_meta;
|
task->gun_meta = gun_meta;
|
||||||
task->meta = meta;
|
task->meta = meta;
|
||||||
|
task->Initialzie();
|
||||||
|
|
||||||
room->xtimer.AddRepeatTimerAndAttach
|
room->xtimer.AddRepeatTimerAndAttach
|
||||||
(SERVER_FRAME_RATE / 2,
|
(SERVER_FRAME_RATE / 2,
|
||||||
|
@ -5,10 +5,26 @@
|
|||||||
#include "player.h"
|
#include "player.h"
|
||||||
#include "metadata.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::Check()
|
void MolotorCocktailMiTask::Check()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void MolotorCocktailMiTask::Done()
|
void MolotorCocktailMiTask::Done()
|
||||||
{
|
{
|
||||||
|
for (auto& pair : targets) {
|
||||||
|
if (pair.second.Get()) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "microtask.h"
|
#include "microtask.h"
|
||||||
|
#include "gridcell.h"
|
||||||
|
|
||||||
namespace MetaData
|
namespace MetaData
|
||||||
{
|
{
|
||||||
@ -18,7 +19,10 @@ class MolotorCocktailMiTask : public MicroTask
|
|||||||
CreatureWeakPtr sender;
|
CreatureWeakPtr sender;
|
||||||
MetaData::Equip* gun_meta = nullptr;
|
MetaData::Equip* gun_meta = nullptr;
|
||||||
MetaData::Equip* meta = nullptr;
|
MetaData::Equip* meta = nullptr;
|
||||||
|
std::map<int, CreatureWeakPtr> targets;
|
||||||
|
std::set<GridCell*> grid_list;
|
||||||
|
|
||||||
|
void Initialzie();
|
||||||
void Check();
|
void Check();
|
||||||
void Done();
|
void Done();
|
||||||
};
|
};
|
||||||
|
@ -5,12 +5,42 @@
|
|||||||
#include "player.h"
|
#include "player.h"
|
||||||
#include "metadata.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::Check()
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PosionGasMiTask::Done()
|
void PosionGasMiTask::Done()
|
||||||
{
|
{
|
||||||
|
for (auto& pair : targets) {
|
||||||
|
if (pair.second.Get()) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "microtask.h"
|
#include "microtask.h"
|
||||||
|
#include "gridcell.h"
|
||||||
|
|
||||||
namespace MetaData
|
namespace MetaData
|
||||||
{
|
{
|
||||||
@ -18,7 +19,10 @@ class PosionGasMiTask : public MicroTask
|
|||||||
CreatureWeakPtr sender;
|
CreatureWeakPtr sender;
|
||||||
MetaData::Equip* gun_meta = nullptr;
|
MetaData::Equip* gun_meta = nullptr;
|
||||||
MetaData::Equip* meta = nullptr;
|
MetaData::Equip* meta = nullptr;
|
||||||
|
std::map<int, CreatureWeakPtr> targets;
|
||||||
|
std::set<GridCell*> grid_list;
|
||||||
|
|
||||||
|
void Initialzie();
|
||||||
void Check();
|
void Check();
|
||||||
void Done();
|
void Done();
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user