1
This commit is contained in:
parent
e1a15cec09
commit
e96243a29a
@ -36,18 +36,18 @@ void Car::GetDown(Human* passenger)
|
|||||||
if (later_removed_) {
|
if (later_removed_) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (passengers.find(passenger) == passengers.end()) {
|
if (passengers_.find(passenger) == passengers_.end()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (driver == passenger) {
|
if (driver_ == passenger) {
|
||||||
driver = nullptr;
|
driver_ = nullptr;
|
||||||
}
|
}
|
||||||
if (meta->i->buffid()) {
|
if (meta->i->buffid()) {
|
||||||
passenger->RemoveBuffById(meta->i->buffid());
|
passenger->RemoveBuffById(meta->i->buffid());
|
||||||
passenger->RecalcSelfCollider();
|
passenger->RecalcSelfCollider();
|
||||||
}
|
}
|
||||||
passengers.erase(passenger);
|
passengers_.erase(passenger);
|
||||||
if (passengers.empty()) {
|
if (passengers_.empty()) {
|
||||||
int loot_uniid = room->CreateLoot(meta->i->id(), GetPos(), 1, 1);
|
int loot_uniid = room->CreateLoot(meta->i->id(), GetPos(), 1, 1);
|
||||||
Entity* loot_entity = room->GetEntityByUniId(loot_uniid);
|
Entity* loot_entity = room->GetEntityByUniId(loot_uniid);
|
||||||
if (loot_entity && loot_entity->IsEntityType(ET_Loot)) {
|
if (loot_entity && loot_entity->IsEntityType(ET_Loot)) {
|
||||||
@ -72,3 +72,11 @@ void Car::GetDown(Human* passenger)
|
|||||||
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
||||||
room->NotifyUiUpdate();
|
room->NotifyUiUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Car::GetOn(Human* passenger)
|
||||||
|
{
|
||||||
|
if (later_removed_) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -16,8 +16,6 @@ class Car : public MoveableEntity
|
|||||||
public:
|
public:
|
||||||
int car_uniid = 0;
|
int car_uniid = 0;
|
||||||
MetaData::Equip* meta = nullptr;
|
MetaData::Equip* meta = nullptr;
|
||||||
Human* driver = nullptr;
|
|
||||||
std::set<Human*> passengers;
|
|
||||||
|
|
||||||
Car();
|
Car();
|
||||||
virtual ~Car() override;
|
virtual ~Car() override;
|
||||||
@ -26,7 +24,11 @@ class Car : public MoveableEntity
|
|||||||
virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override;
|
virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override;
|
||||||
|
|
||||||
void GetDown(Human* passenger);
|
void GetDown(Human* passenger);
|
||||||
|
void GetOn(Human* passenger);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool later_removed_ = false;
|
bool later_removed_ = false;
|
||||||
|
Human* driver_ = nullptr;
|
||||||
|
std::set<Human*> passengers_;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -1368,9 +1368,9 @@ void Human::DoGetOn(int obj_uniid)
|
|||||||
DoGetOnWithLoot((Loot*)entity);
|
DoGetOnWithLoot((Loot*)entity);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ET_Player:
|
case ET_Car:
|
||||||
{
|
{
|
||||||
DoGetOnWithTeammate((Human*)entity);
|
DoGetOnWithCar((Car*)entity);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -4241,6 +4241,9 @@ void Human::DoGetOnWithLoot(Loot* entity)
|
|||||||
item_meta,
|
item_meta,
|
||||||
GetPos()
|
GetPos()
|
||||||
);
|
);
|
||||||
|
car_->GetOn(this);
|
||||||
|
room->NotifyUiUpdate();
|
||||||
|
#if 0
|
||||||
SetCar(car_);
|
SetCar(car_);
|
||||||
SetSeat(0);
|
SetSeat(0);
|
||||||
SetPos(entity->GetPos());
|
SetPos(entity->GetPos());
|
||||||
@ -4259,11 +4262,13 @@ void Human::DoGetOnWithLoot(Loot* entity)
|
|||||||
CancelAction();
|
CancelAction();
|
||||||
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
||||||
room->TakeOnCarObject(car_->car_uniid);
|
room->TakeOnCarObject(car_->car_uniid);
|
||||||
room->NotifyUiUpdate();
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Human::DoGetOnWithTeammate(Human* teammate)
|
void Human::DoGetOnWithCar(Car* car)
|
||||||
{
|
{
|
||||||
|
car->GetOn(this);
|
||||||
|
#if 0
|
||||||
if (teammate->team_id != team_id) {
|
if (teammate->team_id != team_id) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -4276,16 +4281,15 @@ void Human::DoGetOnWithTeammate(Human* teammate)
|
|||||||
if (!teammate->HasBuffEffect(kBET_Driver)) {
|
if (!teammate->HasBuffEffect(kBET_Driver)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (HasBuffEffect(kBET_Driver)) {
|
if (GetCar()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (HasBuffEffect(kBET_Passenger)) {
|
if (!teammate->GetCar()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
teammate->GetCar()->PassengerGetOn(this);
|
||||||
|
|
||||||
#if 0
|
SetCar(teammate->GetCar());
|
||||||
teammate->GetCar().passengers.insert(this);
|
|
||||||
#endif
|
|
||||||
SetPos(teammate->GetPos());
|
SetPos(teammate->GetPos());
|
||||||
{
|
{
|
||||||
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(PASSENGER_BUFFID);
|
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(PASSENGER_BUFFID);
|
||||||
@ -4293,6 +4297,13 @@ void Human::DoGetOnWithTeammate(Human* teammate)
|
|||||||
AddBuff(this, buff_meta, 1);
|
AddBuff(this, buff_meta, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(car_->meta->i->buffid());
|
||||||
|
if (buff_meta) {
|
||||||
|
AddBuff(this, buff_meta, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
CancelAction();
|
CancelAction();
|
||||||
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -353,7 +353,7 @@ private:
|
|||||||
void OnLand();
|
void OnLand();
|
||||||
void NextReload(int prev_weapon_id, int prev_weapon_idx);
|
void NextReload(int prev_weapon_id, int prev_weapon_idx);
|
||||||
void DoGetOnWithLoot(Loot* loot_entity);
|
void DoGetOnWithLoot(Loot* loot_entity);
|
||||||
void DoGetOnWithTeammate(Human* teammate);
|
void DoGetOnWithCar(Car* car);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int level_ = 0;
|
int level_ = 0;
|
||||||
|
@ -802,8 +802,7 @@ void Player::ProcPrepareItems(const ::google::protobuf::RepeatedField< ::google:
|
|||||||
item_meta,
|
item_meta,
|
||||||
GetPos()
|
GetPos()
|
||||||
);
|
);
|
||||||
SetCar(car);
|
car->GetOn(this);
|
||||||
SetSeat(0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user