remove specmapobject
This commit is contained in:
parent
97d94f23d3
commit
3f62f0cadd
@ -3391,71 +3391,6 @@ void Human::DoGetOnWithCar(Car* car)
|
||||
car->GetOn(this);
|
||||
}
|
||||
|
||||
void Human::OnEnterSpecMapArea(int tag, SpecMapObject& map_obj)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
SendDebugMsg("进入特殊区域");
|
||||
#endif
|
||||
ClearSpecMapAreaTimer(map_obj);
|
||||
map_obj.enter_timer = room->xtimer.AddDeadLineTimerAndAttach
|
||||
(MetaMgr::Instance()->GetSpecMapAreaEnterTime(tag) * SERVER_FRAME_RATE,
|
||||
a8::XParams()
|
||||
.SetSender(this)
|
||||
.SetParam1(&map_obj)
|
||||
.SetParam2(tag),
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
Human* hum = (Human*)param.sender.GetUserData();
|
||||
int buff_id = MetaMgr::Instance()->GetSpecMapAreaBuffId(param.param2);
|
||||
hum->MustBeAddBuff(hum, buff_id);
|
||||
},
|
||||
&xtimer_attacher.timer_list_,
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
SpecMapObject* map_obj = (SpecMapObject*)param.param1.GetUserData();
|
||||
map_obj->enter_timer = nullptr;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
void Human::OnLeaveSpecMapArea(int tag, SpecMapObject& map_obj)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
SendDebugMsg("离开特殊区域");
|
||||
#endif
|
||||
ClearSpecMapAreaTimer(map_obj);
|
||||
map_obj.leave_timer = room->xtimer.AddDeadLineTimerAndAttach
|
||||
(MetaMgr::Instance()->GetSpecMapAreaLeaveTime(tag) * SERVER_FRAME_RATE,
|
||||
a8::XParams()
|
||||
.SetSender(this)
|
||||
.SetParam1(&map_obj)
|
||||
.SetParam2(tag),
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
Human* hum = (Human*)param.sender.GetUserData();
|
||||
hum->RemoveBuffById((MetaMgr::Instance()->GetSpecMapAreaBuffId(param.param2)));
|
||||
},
|
||||
&xtimer_attacher.timer_list_,
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
SpecMapObject* map_obj = (SpecMapObject*)param.param1.GetUserData();
|
||||
map_obj->leave_timer = nullptr;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
void Human::ClearSpecMapAreaTimer(SpecMapObject& map_obj)
|
||||
{
|
||||
if (map_obj.leave_timer) {
|
||||
room->xtimer.DeleteTimer(map_obj.leave_timer);
|
||||
map_obj.leave_timer = nullptr;
|
||||
}
|
||||
if (map_obj.enter_timer) {
|
||||
room->xtimer.DeleteTimer(map_obj.enter_timer);
|
||||
map_obj.enter_timer = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void Human::DoSkillPreProc(int skill_id, int target_id, const a8::Vec2& target_pos)
|
||||
{
|
||||
if (action_type == AT_Reload ||
|
||||
|
@ -21,12 +21,6 @@ enum HumanStatus
|
||||
HS_End
|
||||
};
|
||||
|
||||
struct SpecMapObject
|
||||
{
|
||||
struct xtimer_list* leave_timer = nullptr;
|
||||
struct xtimer_list* enter_timer = nullptr;
|
||||
};
|
||||
|
||||
struct PartObject
|
||||
{
|
||||
int entity_uniid = 0;
|
||||
@ -288,9 +282,6 @@ private:
|
||||
void NextReload(int prev_weapon_id, int prev_weapon_idx);
|
||||
void DoGetOnWithLoot(Loot* loot_entity);
|
||||
void DoGetOnWithCar(Car* car);
|
||||
void OnEnterSpecMapArea(int tag, SpecMapObject& map_obj);
|
||||
void OnLeaveSpecMapArea(int tag, SpecMapObject& map_obj);
|
||||
void ClearSpecMapAreaTimer(SpecMapObject& map_obj);
|
||||
virtual void AddBuffPostProc(Creature* caster, Buff* buff) override;
|
||||
virtual void OnBuffRemove(Buff& buff) override;
|
||||
virtual void DoSkillPreProc(int skill_id, int target_id, const a8::Vec2& target_pos) override;
|
||||
@ -352,7 +343,6 @@ private:
|
||||
size_t box_drop_times_ = 0;
|
||||
|
||||
std::array<ObjectSyncFlags, FIXED_OBJECT_MAXID> fixed_object_sync_flags_ = {};
|
||||
std::array<SpecMapObject, kColliderSpecTag_End - kColliderSpecTag_Begin + 1> spec_map_objects_ = {};
|
||||
|
||||
bool already_report_battle_ = false;
|
||||
bool sent_battlereport_ = false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user