frameevent重构ok
This commit is contained in:
parent
3f62f0cadd
commit
1036102409
@ -103,7 +103,7 @@ void Car::GetDown(Human* passenger)
|
||||
passenger->CancelAction();
|
||||
passenger->RemoveBuffByEffectId(kBET_Driver);
|
||||
passenger->RemoveBuffByEffectId(kBET_Passenger);
|
||||
room->frame_event.AddCarChg(passenger);
|
||||
room->frame_event.AddCarChg(passenger->GetWeakPtrRef());
|
||||
if (passengers_.empty()) {
|
||||
team_id = 0;
|
||||
room->TakeOffCarObject(GetUniId(), GetPos());
|
||||
@ -167,7 +167,7 @@ void Car::GetOn(Human* passenger)
|
||||
passenger->TryAddBuff(passenger, meta->i->buffid());
|
||||
}
|
||||
passenger->CancelAction();
|
||||
room->frame_event.AddCarChg(passenger);
|
||||
room->frame_event.AddCarChg(passenger->GetWeakPtrRef());
|
||||
if (passengers_.size() == 1) {
|
||||
RemoveBuffByEffectId(kBET_CarDeactive);
|
||||
TryAddBuff(this, meta->car_active_buff_id);
|
||||
@ -198,7 +198,7 @@ void Car::SwitchSeat(Human* passenger, int seat)
|
||||
passenger->SetSeat(seat);
|
||||
driver_ = passenger;
|
||||
passenger->MustBeAddBuff(passenger, DRIVER_BUFFID);
|
||||
room->frame_event.AddCarChg(passenger);
|
||||
room->frame_event.AddCarChg(passenger->GetWeakPtrRef());
|
||||
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
||||
}
|
||||
}
|
||||
@ -328,7 +328,7 @@ void Car::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
||||
passenger->CancelAction();
|
||||
passenger->RemoveBuffByEffectId(kBET_Driver);
|
||||
passenger->RemoveBuffByEffectId(kBET_Passenger);
|
||||
room->frame_event.AddCarChg(passenger);
|
||||
room->frame_event.AddCarChg(passenger->GetWeakPtrRef());
|
||||
}
|
||||
Explosion(team_id);
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ void InternalShot(Creature* c,
|
||||
}
|
||||
}
|
||||
if (skill_id == 0) {
|
||||
c->room->frame_event.AddShot(c);
|
||||
c->room->frame_event.AddShot(c->GetWeakPtrRef());
|
||||
}
|
||||
for (auto& tuple : weapon_meta->bullet_born_offset) {
|
||||
a8::Vec2 bullet_born_offset = a8::Vec2(std::get<0>(tuple), std::get<1>(tuple));
|
||||
@ -58,7 +58,7 @@ void InternalShot(Creature* c,
|
||||
}
|
||||
}
|
||||
bullet_dir.Rotate(bullet_angle / 180.0f);
|
||||
c->room->frame_event.AddBullet(c,
|
||||
c->room->frame_event.AddBullet(c->GetWeakPtrRef(),
|
||||
weapon_meta,
|
||||
weapon_lv,
|
||||
bullet_born_pos,
|
||||
@ -1342,8 +1342,8 @@ void Creature::Shot(a8::Vec2& target_dir, bool& shot_ok, float fly_distance)
|
||||
}
|
||||
last_shot_frameno_ = room->GetFrameNo();
|
||||
if (!need_sync_active_player && IsPlayer()) {
|
||||
room->frame_event.AddBulletNumChg((Human*)this);
|
||||
room->frame_event.AddWeaponAmmoChg((Human*)this);
|
||||
room->frame_event.AddBulletNumChg(GetWeakPtrRef());
|
||||
room->frame_event.AddWeaponAmmoChg(GetWeakPtrRef());
|
||||
}
|
||||
shot_ok = true;
|
||||
}
|
||||
|
@ -124,6 +124,7 @@ class Creature : public MoveableEntity
|
||||
bool IsAndroid() const;
|
||||
bool IsHuman() const;
|
||||
bool IsCar() const;
|
||||
Human* AsHuman() { return IsHuman() ? (Human*)this : nullptr; };
|
||||
virtual void DecHP(float dec_hp, int killer_id, const std::string& killer_name, int weapon_id) {};
|
||||
void AddHp(float hp);
|
||||
|
||||
|
@ -18,7 +18,7 @@ void FrameEvent::AddAirDrop(int appear_time, int box_id, a8::Vec2 box_pos)
|
||||
TypeConvert::ToPb(box_pos, airdrop->mutable_pos());
|
||||
}
|
||||
|
||||
void FrameEvent::AddEmote(Human* sender, int emote_id)
|
||||
void FrameEvent::AddEmote(CreatureWeakPtr& sender, int emote_id)
|
||||
{
|
||||
{
|
||||
auto& tuple = a8::FastAppend(emotes_);
|
||||
@ -26,11 +26,11 @@ void FrameEvent::AddEmote(Human* sender, int emote_id)
|
||||
auto& p = std::get<1>(tuple);
|
||||
|
||||
p.set_emote_id(emote_id);
|
||||
p.set_player_id(sender->GetUniId());
|
||||
p.set_player_id(sender.Get()->GetUniId());
|
||||
}
|
||||
{
|
||||
int emote_idx = emotes_.size() - 1;
|
||||
sender->TraverseAllLayerHumanList
|
||||
sender.Get()->TraverseAllLayerHumanList
|
||||
(
|
||||
[emote_idx] (Human* hum, bool& stop)
|
||||
{
|
||||
@ -39,26 +39,26 @@ void FrameEvent::AddEmote(Human* sender, int emote_id)
|
||||
}
|
||||
}
|
||||
|
||||
void FrameEvent::AddShot(Creature* sender)
|
||||
void FrameEvent::AddShot(CreatureWeakPtr& sender)
|
||||
{
|
||||
{
|
||||
auto& tuple = a8::FastAppend(shots_);
|
||||
std::get<0>(tuple) = sender;
|
||||
auto& p = std::get<1>(tuple);
|
||||
|
||||
p.set_player_id(sender->GetUniId());
|
||||
if (sender->second_weapon.meta) {
|
||||
sender->second_weapon.ToPB(p.mutable_weapon());
|
||||
p.set_player_id(sender.Get()->GetUniId());
|
||||
if (sender.Get()->second_weapon.meta) {
|
||||
sender.Get()->second_weapon.ToPB(p.mutable_weapon());
|
||||
} else {
|
||||
sender->GetCurrWeapon()->ToPB(p.mutable_weapon());
|
||||
sender.Get()->GetCurrWeapon()->ToPB(p.mutable_weapon());
|
||||
}
|
||||
if (sender->IsCar()) {
|
||||
p.set_hole(sender->shot_hole);
|
||||
if (sender.Get()->IsCar()) {
|
||||
p.set_hole(sender.Get()->shot_hole);
|
||||
}
|
||||
}
|
||||
{
|
||||
int shot_idx = shots_.size() - 1;
|
||||
sender->TraverseAllLayerHumanList
|
||||
sender.Get()->TraverseAllLayerHumanList
|
||||
(
|
||||
[shot_idx] (Human* hum, bool& stop)
|
||||
{
|
||||
@ -67,7 +67,7 @@ void FrameEvent::AddShot(Creature* sender)
|
||||
}
|
||||
}
|
||||
|
||||
void FrameEvent::AddBullet(Creature* sender,
|
||||
void FrameEvent::AddBullet(CreatureWeakPtr& sender,
|
||||
MetaData::Equip* weapon_meta,
|
||||
int weapon_lv,
|
||||
a8::Vec2 born_pos,
|
||||
@ -79,7 +79,7 @@ void FrameEvent::AddBullet(Creature* sender,
|
||||
std::get<0>(tuple) = sender;
|
||||
auto& p = std::get<1>(tuple);
|
||||
|
||||
p.set_player_id(sender->GetUniId());
|
||||
p.set_player_id(sender.Get()->GetUniId());
|
||||
p.set_bullet_id(weapon_meta->i->use_bullet());
|
||||
TypeConvert::ToPb(born_pos, p.mutable_pos());
|
||||
TypeConvert::ToPb(dir, p.mutable_dir());
|
||||
@ -92,7 +92,7 @@ void FrameEvent::AddBullet(Creature* sender,
|
||||
}
|
||||
{
|
||||
int bullet_idx = bullets_.size() - 1;
|
||||
sender->TraverseAllLayerHumanList
|
||||
sender.Get()->TraverseAllLayerHumanList
|
||||
(
|
||||
[bullet_idx] (Human* hum, bool& stop)
|
||||
{
|
||||
@ -132,11 +132,13 @@ void FrameEvent::AddExplosionEx(CreatureWeakPtr& sender, int item_id, a8::Vec2 b
|
||||
}
|
||||
}
|
||||
|
||||
void FrameEvent::AddBulletNumChg(Human* hum)
|
||||
void FrameEvent::AddBulletNumChg(CreatureWeakPtr& sender)
|
||||
{
|
||||
chged_bullet_nums_.push_back(hum);
|
||||
int idx = chged_bullet_nums_.size() - 1;
|
||||
hum->chged_bullet_nums_.push_back(idx);
|
||||
if (sender.Get()->IsHuman()) {
|
||||
chged_bullet_nums_.push_back(sender);
|
||||
int idx = chged_bullet_nums_.size() - 1;
|
||||
((Human*)sender.Get())->chged_bullet_nums_.push_back(idx);
|
||||
}
|
||||
}
|
||||
|
||||
void FrameEvent::AddSmoke(Bullet* bullet, int item_id, a8::Vec2 pos)
|
||||
@ -199,18 +201,18 @@ void FrameEvent::AddHpChg(CreatureWeakPtr& sender)
|
||||
});
|
||||
}
|
||||
|
||||
void FrameEvent::AddWeaponAmmoChg(Human* hum)
|
||||
void FrameEvent::AddWeaponAmmoChg(CreatureWeakPtr& sender)
|
||||
{
|
||||
if (hum->GetCurrWeapon()) {
|
||||
if (sender.Get()->GetCurrWeapon() && sender.Get()->IsHuman()) {
|
||||
chged_weapon_ammo_.push_back
|
||||
(
|
||||
std::make_tuple(hum,
|
||||
hum->GetCurrWeapon()->weapon_idx,
|
||||
hum->GetCurrWeapon()->ammo
|
||||
std::make_tuple(sender,
|
||||
sender.Get()->GetCurrWeapon()->weapon_idx,
|
||||
sender.Get()->GetCurrWeapon()->ammo
|
||||
)
|
||||
);
|
||||
int idx = chged_weapon_ammo_.size() - 1;
|
||||
hum->chged_weapon_ammo_.push_back(idx);
|
||||
sender.Get()->AsHuman()->chged_weapon_ammo_.push_back(idx);
|
||||
}
|
||||
}
|
||||
|
||||
@ -272,19 +274,21 @@ void FrameEvent::AddSkillCurrTimesChg(CreatureWeakPtr sender, int skill_id, int
|
||||
}
|
||||
}
|
||||
|
||||
void FrameEvent::AddItemChg(Human* hum, int item_id, int item_num)
|
||||
void FrameEvent::AddItemChg(CreatureWeakPtr& sender, int item_id, int item_num)
|
||||
{
|
||||
chged_items_.push_back(std::make_tuple(hum, item_id, item_num));
|
||||
int idx = chged_items_.size() - 1;
|
||||
hum->chged_items_.push_back(idx);
|
||||
if (sender.Get()->IsHuman()) {
|
||||
chged_items_.push_back(std::make_tuple(sender, item_id, item_num));
|
||||
int idx = chged_items_.size() - 1;
|
||||
((Human*)sender.Get())->chged_items_.push_back(idx);
|
||||
}
|
||||
}
|
||||
|
||||
void FrameEvent::AddZombieIdChg(Human* sender)
|
||||
void FrameEvent::AddZombieIdChg(CreatureWeakPtr& sender)
|
||||
{
|
||||
chged_zombieids_.push_back(sender);
|
||||
int idx = chged_zombieids_.size() - 1;
|
||||
{
|
||||
sender->TraverseAllLayerHumanList
|
||||
sender.Get()->TraverseAllLayerHumanList
|
||||
(
|
||||
[idx] (Human* hum, bool& stop)
|
||||
{
|
||||
@ -342,11 +346,11 @@ void FrameEvent::AddRevive(CreatureWeakPtr& sender)
|
||||
}
|
||||
}
|
||||
|
||||
void FrameEvent::AddCarChg(Human* sender)
|
||||
void FrameEvent::AddCarChg(CreatureWeakPtr& sender)
|
||||
{
|
||||
chged_cars_.push_back(sender);
|
||||
int idx = chged_cars_.size() - 1;
|
||||
sender->TraverseAllLayerHumanList
|
||||
sender.Get()->TraverseAllLayerHumanList
|
||||
(
|
||||
[idx] (Human* hum, bool& stop)
|
||||
{
|
||||
|
@ -12,9 +12,9 @@ struct FrameEvent
|
||||
{
|
||||
public:
|
||||
void AddAirDrop(int appear_time, int box_id, a8::Vec2 box_pos);
|
||||
void AddEmote(Human* hum, int emote_id);
|
||||
void AddShot(Creature* sender);
|
||||
void AddBullet(Creature* sender,
|
||||
void AddEmote(CreatureWeakPtr& sender, int emote_id);
|
||||
void AddShot(CreatureWeakPtr& sender);
|
||||
void AddBullet(CreatureWeakPtr& sender,
|
||||
MetaData::Equip* weapon_meta,
|
||||
int weapon_lv,
|
||||
a8::Vec2 born_pos,
|
||||
@ -24,37 +24,37 @@ public:
|
||||
void AddSmoke(Bullet* bullet, int item_id, a8::Vec2 pos);
|
||||
void AddPlaySkill(CreatureWeakPtr& sender, int skill_id);
|
||||
void AddExplosionEx(CreatureWeakPtr& sender, int item_id, a8::Vec2 bomb_pos, int effect);
|
||||
void AddBulletNumChg(Human* hum);
|
||||
void AddBulletNumChg(CreatureWeakPtr& sender);
|
||||
void AddHpChg(CreatureWeakPtr& sender);
|
||||
void AddWeaponAmmoChg(Human* hum);
|
||||
void AddWeaponAmmoChg(CreatureWeakPtr& sender);
|
||||
void AddBuff(CreatureWeakPtr& sender, Buff* buff);
|
||||
void RemoveBuff(CreatureWeakPtr& sender, int buff_id);
|
||||
void AddSkillCdChg(CreatureWeakPtr sender, int skill_id, int left_time);
|
||||
void AddSkillCurrTimesChg(CreatureWeakPtr sender, int skill_id, int curr_times);
|
||||
void AddItemChg(Human* hum, int item_id, int item_num);
|
||||
void AddZombieIdChg(Human* hum);
|
||||
void AddItemChg(CreatureWeakPtr& sender, int item_id, int item_num);
|
||||
void AddZombieIdChg(CreatureWeakPtr& sender);
|
||||
void AddDead(CreatureWeakPtr& sender, int revive_time);
|
||||
void AddRevive(CreatureWeakPtr& sender);
|
||||
void AddCarChg(Human* sender);
|
||||
void AddCarChg(CreatureWeakPtr& sender);
|
||||
|
||||
void Clear();
|
||||
private:
|
||||
::google::protobuf::RepeatedPtrField<::cs::MFAirDrop> airdrops_;
|
||||
std::vector<std::tuple<Creature*, ::cs::MFShot>> shots_;
|
||||
std::vector<std::tuple<Creature*, ::cs::MFBullet>> bullets_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, ::cs::MFShot>> shots_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, ::cs::MFBullet>> bullets_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, ::cs::MFExplosion>> explosions_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, ::cs::MFSmoke>> smokes_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, ::cs::MFPlaySkill>> play_skills_;
|
||||
std::vector<std::tuple<Creature*, ::cs::MFEmote>> emotes_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, ::cs::MFEmote>> emotes_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, ::cs::MFBuffChg>> chged_buffs_;
|
||||
std::vector<std::tuple<Human*, int, int>> chged_items_;
|
||||
std::vector<Human*> chged_bullet_nums_;
|
||||
std::vector<std::tuple<Human*, int, int>> chged_weapon_ammo_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, int, int>> chged_items_;
|
||||
std::vector<CreatureWeakPtr> chged_bullet_nums_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, int, int>> chged_weapon_ammo_;
|
||||
std::vector<CreatureWeakPtr> chged_hps_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, int, int>> chged_skillcds_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, int, int>> chged_skill_curr_times_;
|
||||
std::vector<Human*> chged_zombieids_;
|
||||
std::vector<Human*> chged_cars_;
|
||||
std::vector<CreatureWeakPtr> chged_zombieids_;
|
||||
std::vector<CreatureWeakPtr> chged_cars_;
|
||||
std::vector<std::tuple<int, int, int>> dead_alive_objs_;
|
||||
|
||||
friend class FrameMaker;
|
||||
|
@ -92,7 +92,7 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
|
||||
for (size_t idx : hum->shots_) {
|
||||
if (idx < room->frame_event.shots_.size()) {
|
||||
auto& tuple = room->frame_event.shots_[idx];
|
||||
if (hum->CanSee(std::get<0>(tuple))) {
|
||||
if (std::get<0>(tuple).Get() && hum->CanSee(std::get<0>(tuple).Get())) {
|
||||
*msg->add_shots() = std::get<1>(tuple);
|
||||
} else {
|
||||
#ifdef DEBUG1
|
||||
@ -108,7 +108,7 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
|
||||
for (size_t idx : hum->bullets_) {
|
||||
if (idx < room->frame_event.bullets_.size()) {
|
||||
auto& tuple = room->frame_event.bullets_[idx];
|
||||
if (hum->CanSee(std::get<0>(tuple))) {
|
||||
if (std::get<0>(tuple).Get() && hum->CanSee(std::get<0>(tuple).Get())) {
|
||||
*msg->add_bullets() = std::get<1>(tuple);
|
||||
}
|
||||
}
|
||||
@ -144,19 +144,19 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
|
||||
for (size_t idx : hum->emotes_) {
|
||||
if (idx < room->frame_event.emotes_.size()) {
|
||||
auto& tuple = room->frame_event.emotes_[idx];
|
||||
if (hum->CanSee(std::get<0>(tuple))) {
|
||||
if (std::get<0>(tuple).Get() && hum->CanSee(std::get<0>(tuple).Get())) {
|
||||
*msg->add_emotes() = std::get<1>(tuple);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (size_t idx : hum->chged_bullet_nums_) {
|
||||
if (idx < room->frame_event.chged_bullet_nums_.size()) {
|
||||
Human* target = room->frame_event.chged_bullet_nums_[idx];
|
||||
if (target->GetCurrWeapon()) {
|
||||
CreatureWeakPtr& target = room->frame_event.chged_bullet_nums_[idx];
|
||||
if (target.Get()->GetCurrWeapon()) {
|
||||
auto p = msg->add_chged_property_list();
|
||||
p->set_obj_id(target->GetUniId());
|
||||
p->set_obj_id(target.Get()->GetUniId());
|
||||
p->set_property_type(kPropBulletNum);
|
||||
p->set_value(target->GetCurrWeapon()->ammo);
|
||||
p->set_value(target.Get()->GetCurrWeapon()->ammo);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -253,7 +253,7 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
|
||||
auto& tuple = room->frame_event.chged_items_[idx];
|
||||
{
|
||||
auto p = msg->add_chged_property_list();
|
||||
p->set_obj_id((std::get<0>(tuple))->GetUniId());
|
||||
p->set_obj_id((std::get<0>(tuple)).Get()->GetUniId());
|
||||
p->set_property_type(kPropItem);
|
||||
p->set_property_subtype(std::get<1>(tuple));
|
||||
p->set_value(std::get<2>(tuple));
|
||||
@ -265,7 +265,7 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
|
||||
auto& tuple = room->frame_event.chged_weapon_ammo_[idx];
|
||||
{
|
||||
auto p = msg->add_chged_property_list();
|
||||
p->set_obj_id((std::get<0>(tuple))->GetUniId());
|
||||
p->set_obj_id((std::get<0>(tuple)).Get()->GetUniId());
|
||||
p->set_property_type(kPropWeaponAmmo);
|
||||
p->set_property_subtype(std::get<1>(tuple));
|
||||
p->set_value(std::get<2>(tuple));
|
||||
@ -277,9 +277,9 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
|
||||
auto& chg_hum = room->frame_event.chged_zombieids_[idx];
|
||||
{
|
||||
auto p = msg->add_chged_property_list();
|
||||
p->set_obj_id(chg_hum->GetUniId());
|
||||
p->set_obj_id(chg_hum.Get()->GetUniId());
|
||||
p->set_property_type(kPropZombieId);
|
||||
p->set_value(chg_hum->meta->i->id());
|
||||
p->set_value(chg_hum.Get()->AsHuman()->meta->i->id());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -293,14 +293,14 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
|
||||
}
|
||||
for (size_t idx : hum->chged_cars_) {
|
||||
if (idx < room->frame_event.chged_cars_.size()) {
|
||||
Human* target = room->frame_event.chged_cars_[idx];
|
||||
if (hum->CanSee(target)) {
|
||||
CreatureWeakPtr& target = room->frame_event.chged_cars_[idx];
|
||||
if (target.Get() && target.Get()->IsHuman() && hum->CanSee(target.Get())) {
|
||||
auto p = msg->add_chged_property_list();
|
||||
p->set_obj_id(target->GetUniId());
|
||||
p->set_obj_id(target.Get()->GetUniId());
|
||||
p->set_property_type(kPropCar);
|
||||
if (target->GetCar()) {
|
||||
p->set_property_subtype(target->GetCar()->meta->i->id());
|
||||
p->set_value(target->GetSeat());
|
||||
if (target.Get()->AsHuman()->GetCar()) {
|
||||
p->set_property_subtype(target.Get()->AsHuman()->GetCar()->meta->i->id());
|
||||
p->set_value(target.Get()->AsHuman()->GetSeat());
|
||||
} else {
|
||||
p->set_property_subtype(0);
|
||||
p->set_value(0);
|
||||
|
@ -1824,7 +1824,7 @@ void Human::ChangeToRace(RaceType_e race, int level)
|
||||
void Human::ChangeToRaceAndNotify(RaceType_e race, int level)
|
||||
{
|
||||
ChangeToRace(race, level);
|
||||
room->frame_event.AddZombieIdChg(this);
|
||||
room->frame_event.AddZombieIdChg(GetWeakPtrRef());
|
||||
}
|
||||
|
||||
void Human::WinExp(Human* sender, int exp)
|
||||
@ -1866,7 +1866,7 @@ void Human::WinExp(Human* sender, int exp)
|
||||
}
|
||||
} while (true);
|
||||
if (old_meta != meta) {
|
||||
room->frame_event.AddZombieIdChg(this);
|
||||
room->frame_event.AddZombieIdChg(GetWeakPtrRef());
|
||||
OnMetaChange();
|
||||
if (GetRace() == kZombieRace && meta->i->level() == 3) {
|
||||
room->OnZombieAppear(this);
|
||||
@ -2654,7 +2654,7 @@ void Human::AddItem(int item_id, int item_num)
|
||||
}
|
||||
|
||||
if (room && room->GetFrameNo() > join_frameno) {
|
||||
room->frame_event.AddItemChg(this, item_id, items_[item_id]);
|
||||
room->frame_event.AddItemChg(GetWeakPtrRef(), item_id, items_[item_id]);
|
||||
} else {
|
||||
if (item_num <= 0) {
|
||||
battling_items_.insert(item_id);
|
||||
@ -2667,7 +2667,7 @@ void Human::DecItem(int item_id, int item_num)
|
||||
auto itr = items_.find(item_id);
|
||||
if (itr != items_.end()) {
|
||||
itr->second -= item_num;
|
||||
room->frame_event.AddItemChg(this, item_id, std::max(0, itr->second));
|
||||
room->frame_event.AddItemChg(GetWeakPtrRef(), item_id, std::max(0, itr->second));
|
||||
if (itr->second <= 0) {
|
||||
if (battling_items_.find(item_id) == battling_items_.end()) {
|
||||
items_.erase(itr);
|
||||
|
@ -380,7 +380,7 @@ void Player::UpdateSpectate()
|
||||
|
||||
void Player::UpdateEmote()
|
||||
{
|
||||
room->frame_event.AddEmote(this, emote_id);
|
||||
room->frame_event.AddEmote(GetWeakPtrRef(), emote_id);
|
||||
emote = false;
|
||||
emote_id = 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user