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