46 lines
1.3 KiB
C++
46 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "weakptr.h"
|
|
|
|
class Room;
|
|
class Explosion
|
|
{
|
|
public:
|
|
int exclude_uniid = 0;
|
|
|
|
Room* GetRoom() { return room_; };
|
|
CreatureWeakPtr GetSender() { return sender_; };
|
|
float GetDmg() { return dmg_; };
|
|
long long GetSpecialDamageType() { return special_damage_type_; };
|
|
bool IsPreBattleExplosion();
|
|
|
|
void IndifferenceAttack(Room* room,
|
|
const a8::Vec2& center,
|
|
float explosion_range,
|
|
int explosion_effect,
|
|
float dmg,
|
|
long long special_damage_type = 0);
|
|
void EnemyAndObstacleAttack(CreatureWeakPtr& sender,
|
|
const a8::Vec2& center,
|
|
float explosion_range,
|
|
int explosion_effect,
|
|
float dmg,
|
|
long long special_damage_type = 0);
|
|
void AddForceTarget(CreatureWeakPtr force_target);
|
|
|
|
private:
|
|
void InternalAttack();
|
|
|
|
private:
|
|
int type_ = 0;
|
|
Room* room_ = nullptr;
|
|
CreatureWeakPtr sender_;
|
|
CreatureWeakPtr force_target_;
|
|
float explosion_range_ = 0;
|
|
int explosion_effect_ = 0;
|
|
float dmg_ = 0;
|
|
a8::Vec2 center_;
|
|
long long special_damage_type_ = 0;
|
|
long long create_frameno_ = 0;
|
|
};
|