#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); private: void InternalAttack(); private: int type_ = 0; Room* room_ = nullptr; CreatureWeakPtr sender_; 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; };