aozhiwei 09bcbe9142 1
2019-06-19 16:33:42 +08:00

47 lines
941 B
C++

#pragma once
#include "entity.h"
namespace MetaData
{
struct Player;
struct Equip;
struct EquipUpgrade;
}
class Human;
class Obstacle;
class CircleCollider;
class MovementComponent;
class Bullet : public Entity
{
public:
int gun_lv = 0;
MetaData::Equip* gun_meta = nullptr;
MetaData::EquipUpgrade* gun_upgrade_meta = nullptr;
MetaData::Equip* meta = nullptr;
Human* player = nullptr;
Vector2D dir;
Vector2D born_pos;
Vector2D born_dir;
float fly_distance = 0.0f;
MovementComponent* movement = nullptr;
Bullet();
virtual ~Bullet() override;
virtual void Initialize() override;
virtual void Update(int delta_time) override;
void RecalcSelfCollider();
private:
void OnHit(std::set<Entity*>& objects);
void ProcBomb();
bool IsBomb();
void RayDetectionUpdate();
void MapServiceUpdate();
private:
CircleCollider* self_collider_ = nullptr;
};