This commit is contained in:
aozhiwei 2021-04-12 17:38:39 +08:00
parent 5677b168a5
commit 9c122135cf
7 changed files with 37 additions and 3 deletions

View File

@ -6,6 +6,7 @@
#include "room.h"
#include "collider.h"
#include "skill.h"
#include "incubator.h"
int Buff::GetLeftTime()
{
@ -145,6 +146,24 @@ void Buff::ProcSummonHero(Creature* caster)
}
}
void Buff::ProcBeRecycle(Creature* caster)
{
owner->room->xtimer.AddRepeatTimerAndAttach
(
SERVER_FRAME_RATE * 2,
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
Buff* buff = (Buff*)param.sender.GetUserData();
if (buff->owner->IsHuman()) {
buff->owner->room->GetIncubator()->RecycleAndroid((Human*)buff->owner);
}
},
&xtimer_attacher.timer_list_
);
}
bool Buff::NeedSync(Human* hum)
{
return !meta->i->only_server() || !(meta->i->only_self() && owner == hum);

View File

@ -36,6 +36,7 @@ class Buff
void ProcIntervalAddBuff(Creature* caster);
void ProcBatchAddBuff(Creature* caster);
void ProcSummonHero(Creature* caster);
void ProcBeRecycle(Creature* caster);
private:
void InternalTimerAddBuff(Creature* caster);

View File

@ -874,6 +874,11 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff)
buff->ProcBatchAddBuff(caster);
}
break;
case kBET_BeRecycle:
{
buff->ProcBeRecycle(caster);
}
break;
default:
{
}

View File

@ -1056,9 +1056,6 @@ void Human::DoJump()
MustBeAddBuff(this, JUMP_BUFFID);
jump_frameno_ = room->GetFrameNo();
SyncAroundPlayers(__FILE__, __LINE__, __func__);
if (IsAndroid() && team_uuid.empty()) {
MustBeAddBuff(this, kBeRecycleBuffId);
}
}
}
@ -3226,6 +3223,9 @@ void Human::OnLand()
}
SetPos(old_pos);
}
if (IsAndroid() && team_uuid.empty()) {
MustBeAddBuff(this, kBeRecycleBuffId);
}
}
void Human::NextReload(int prev_weapon_id, int prev_weapon_idx)

View File

@ -12,6 +12,11 @@ void Incubator::UnInit()
}
void Incubator::RecycleAndroid(Human* hum)
{
}
void Incubator::AddHoldHuman(Human* hum)
{
hold_humans_.insert(hum);

View File

@ -9,6 +9,9 @@ class Incubator
void Init();
void UnInit();
void RecycleAndroid(Human* hum);
private:
void AddHoldHuman(Human* hum);
private:

View File

@ -170,6 +170,7 @@ public:
int GetOnlinePlayerNum();
RoomObstacle* CreateObstacle(int id, float x, float y);
int AllocUniid();
Incubator* GetIncubator() { return incubator_;};
private:
void ShuaAndroid();