game2006/server/gameserver/virtualbullet.h
aozhiwei fb29e1282a 1
2022-10-26 17:00:56 +08:00

52 lines
1.3 KiB
C++

#pragma once
namespace MetaData
{
struct Skill;
struct Equip;
}
class Room;
class VirtualBullet : public IBullet, public ITask
{
public:
long long weapon_uniid = 0;
MetaData::Skill* skill_meta = nullptr;
MetaData::Equip* gun_meta = nullptr;
MetaData::Equip* bullet_meta = nullptr;
CreatureWeakPtr sender;
CreatureWeakPtr passenger;
Room* room = nullptr;
bool is_pre_battle_bullet = false;
a8::Vec2 dir;
a8::Vec2 born_pos;
a8::Vec2 born_dir;
virtual float GetStrengthenWall() override;
virtual long long GetWeaponUniId() override;
virtual MetaData::Skill* GetSkillMeta() override;
virtual MetaData::Equip* GetGunMeta() override;
virtual MetaData::Equip* GetBulletMeta() override;
virtual CreatureWeakPtr GetSender() override;
virtual CreatureWeakPtr GetPassenger() override;
virtual bool IsBomb() override;
virtual bool IsPreBattleBullet() override;
virtual Room* GetRoom() override;
virtual void Update(int delta_time) override;
virtual bool IsDone() override;
void SetPos(a8::Vec2 pos) { pos_ = pos; };
a8::Vec2 GetPos() { return pos_; };
private:
void Check(float distance);
void ForceRemove();
void OnHit(std::set<Entity*>& objects);
private:
bool later_removed_ = false;
a8::Vec2 pos_;
};