52 lines
1.3 KiB
C++
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_;
|
|
|
|
};
|