mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-25 15:13:36 +00:00
47 lines
1 KiB
C++
47 lines
1 KiB
C++
#pragma once
|
|
#include "TilePos.h"
|
|
#include "../Player/Player.h"
|
|
|
|
class Random;
|
|
class Level;
|
|
|
|
class Explosion {
|
|
public:
|
|
bool fire;
|
|
bool destroyBlocks;
|
|
|
|
private:
|
|
int size;
|
|
|
|
Random* random;
|
|
Level* level;
|
|
|
|
public:
|
|
double x, y, z;
|
|
std::shared_ptr<Entity> source;
|
|
float r;
|
|
|
|
std::unordered_set<TilePos, TilePosKeyHash, TilePosKeyEq> toBlow;
|
|
|
|
private:
|
|
typedef std::unordered_map<std::shared_ptr<Player>, Vec3*, PlayerKeyHash,
|
|
PlayerKeyEq>
|
|
playerVec3Map;
|
|
playerVec3Map hitPlayers;
|
|
|
|
public:
|
|
Explosion(Level* level, std::shared_ptr<Entity> source, double x, double y,
|
|
double z, float r);
|
|
~Explosion();
|
|
|
|
public:
|
|
void explode();
|
|
|
|
public:
|
|
void finalizeExplosion(bool generateParticles,
|
|
std::vector<TilePos>* toBlowDirect =
|
|
NULL); // 4J - added toBlow parameter
|
|
playerVec3Map* getHitPlayers();
|
|
Vec3* getHitPlayerKnockback(std::shared_ptr<Player> player);
|
|
std::shared_ptr<LivingEntity> getSourceMob();
|
|
}; |