remove specmapobject

This commit is contained in:
aozhiwei 2021-06-08 16:08:38 +08:00
parent 97d94f23d3
commit 3f62f0cadd
2 changed files with 0 additions and 75 deletions

View File

@ -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 ||

View File

@ -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;