#pragma once #include "moveableentity.h" #include "cs_proto.pb.h" namespace MetaData { struct Equip; struct Player; } class Human; class Room; class Car : public MoveableEntity { public: int car_uniid = 0; a8::Vec2 move_dir; MetaData::Equip* meta = nullptr; Car(); virtual ~Car() override; virtual void Initialize() override; virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) override; virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override; bool IsDriver(Human* hum) { return driver_ == hum && driver_; } void GetDown(Human* passenger); void GetOn(Human* passenger); void SyncPos(); private: int AllocSeat(); private: bool later_removed_ = false; Human* driver_ = nullptr; std::set passengers_; MetaData::Player* hero_meta_ = nullptr; };