Skip to content

Commit

Permalink
Refactor protocolcraft particles system
Browse files Browse the repository at this point in the history
  • Loading branch information
adepierre committed Apr 30, 2024
1 parent e8d600b commit ad890be
Show file tree
Hide file tree
Showing 40 changed files with 897 additions and 1,435 deletions.
48 changes: 22 additions & 26 deletions protocolCraft/CMakeLists.txt
Expand Up @@ -335,20 +335,18 @@ set(protocolCraft_PUBLIC_HDR
include/protocolCraft/Types/NBT/NBT.hpp
include/protocolCraft/Types/NBT/Tag.hpp

include/protocolCraft/Types/Particles/BlockcrackParticle.hpp
include/protocolCraft/Types/Particles/BlockdustParticle.hpp
include/protocolCraft/Types/Particles/BlockMarkerParticle.hpp
include/protocolCraft/Types/Particles/BlockParticle.hpp
include/protocolCraft/Types/Particles/DustColorTransitionParticle.hpp
include/protocolCraft/Types/Particles/DustParticle.hpp
include/protocolCraft/Types/Particles/FallingDustParticle.hpp
include/protocolCraft/Types/Particles/IconcrackParticle.hpp
include/protocolCraft/Types/Particles/ItemParticle.hpp
include/protocolCraft/Types/Particles/NoDataTypedParticle.hpp
include/protocolCraft/Types/Particles/Particle.hpp
include/protocolCraft/Types/Particles/SculkChargeParticle.hpp
include/protocolCraft/Types/Particles/ShriekParticle.hpp
include/protocolCraft/Types/Particles/VibrationParticle.hpp
include/protocolCraft/Types/Particles/ParticleOptions.hpp

include/protocolCraft/Types/Particles/BlockParticleOptions.hpp
include/protocolCraft/Types/Particles/ColorParticleOptions.hpp
include/protocolCraft/Types/Particles/IconcrackParticleOptions.hpp
include/protocolCraft/Types/Particles/DustColorTransitionOptions.hpp
include/protocolCraft/Types/Particles/DustParticleOptions.hpp
include/protocolCraft/Types/Particles/ItemParticleOptions.hpp
include/protocolCraft/Types/Particles/SculkChargeParticleOptions.hpp
include/protocolCraft/Types/Particles/ShriekParticleOptions.hpp
include/protocolCraft/Types/Particles/VibrationParticleOptions.hpp

include/protocolCraft/Types/Recipes/Ingredient.hpp
include/protocolCraft/Types/Recipes/Recipe.hpp
Expand Down Expand Up @@ -394,20 +392,18 @@ set(protocolCraft_SRC
src/Types/NBT/NBT.cpp
src/Types/NBT/Tag.cpp

src/Types/Particles/BlockcrackParticle.cpp
src/Types/Particles/BlockdustParticle.cpp
src/Types/Particles/BlockMarkerParticle.cpp
src/Types/Particles/BlockParticle.cpp
src/Types/Particles/DustColorTransitionParticle.cpp
src/Types/Particles/DustParticle.cpp
src/Types/Particles/FallingDustParticle.cpp
src/Types/Particles/IconcrackParticle.cpp
src/Types/Particles/ItemParticle.cpp
src/Types/Particles/NoDataTypedParticle.cpp
src/Types/Particles/Particle.cpp
src/Types/Particles/SculkChargeParticle.cpp
src/Types/Particles/ShriekParticle.cpp
src/Types/Particles/VibrationParticle.cpp
src/Types/Particles/ParticleOptions.cpp

src/Types/Particles/BlockParticleOptions.cpp
src/Types/Particles/ColorParticleOptions.cpp
src/Types/Particles/IconcrackParticleOptions.cpp
src/Types/Particles/DustColorTransitionOptions.cpp
src/Types/Particles/DustParticleOptions.cpp
src/Types/Particles/ItemParticleOptions.cpp
src/Types/Particles/SculkChargeParticleOptions.cpp
src/Types/Particles/ShriekParticleOptions.cpp
src/Types/Particles/VibrationParticleOptions.cpp

src/Types/Recipes/RecipeTypeData.cpp

Expand Down
Expand Up @@ -5,8 +5,6 @@
#if PROTOCOL_VERSION > 764 /* > 1.20.2 */
#include "protocolCraft/Types/Particles/Particle.hpp"
#include "protocolCraft/Types/Sound/SoundEvent.hpp"

#include <memory>
#endif

namespace ProtocolCraft
Expand Down Expand Up @@ -115,12 +113,12 @@ namespace ProtocolCraft
}

#if PROTOCOL_VERSION > 764 /* > 1.20.2 */
void SetSmallExplosionParticles(const std::shared_ptr<Particle>& small_explosion_particles_)
void SetSmallExplosionParticles(const Particle& small_explosion_particles_)
{
small_explosion_particles = small_explosion_particles_;
}

void SetLargeExplosionParticles(const std::shared_ptr<Particle>& large_explosion_particles_)
void SetLargeExplosionParticles(const Particle& large_explosion_particles_)
{
large_explosion_particles = large_explosion_particles_;
}
Expand Down Expand Up @@ -196,12 +194,12 @@ namespace ProtocolCraft
}

#if PROTOCOL_VERSION > 764 /* > 1.20.2 */
const std::shared_ptr<Particle>& GetSmallExplosionParticles() const
const Particle& GetSmallExplosionParticles() const
{
return small_explosion_particles;
}

const std::shared_ptr<Particle>& GetLargeExplosionParticles() const
const Particle& GetLargeExplosionParticles() const
{
return large_explosion_particles;
}
Expand Down Expand Up @@ -263,12 +261,8 @@ namespace ProtocolCraft
knockback_z = ReadData<float>(iter, length);
#if PROTOCOL_VERSION > 764 /* > 1.20.2 */
block_interaction = ReadData<VarInt>(iter, length);
const int small_explosion_particles_type = ReadData<VarInt>(iter, length);
small_explosion_particles = Particle::CreateParticle(static_cast<ParticleType>(small_explosion_particles_type));
small_explosion_particles->Read(iter, length);
const int large_explosion_particles_type = ReadData<VarInt>(iter, length);
large_explosion_particles = Particle::CreateParticle(static_cast<ParticleType>(large_explosion_particles_type));
large_explosion_particles->Read(iter, length);
small_explosion_particles = ReadData<Particle>(iter, length);
large_explosion_particles = ReadData<Particle>(iter, length);
explosion_sound = ReadData<SoundEvent>(iter, length);
#endif
}
Expand Down Expand Up @@ -309,10 +303,8 @@ namespace ProtocolCraft
WriteData<float>(knockback_z, container);
#if PROTOCOL_VERSION > 764 /* > 1.20.2 */
WriteData<VarInt>(block_interaction, container);
WriteData<VarInt>(static_cast<int>(small_explosion_particles->GetType()), container);
small_explosion_particles->Write(container);
WriteData<VarInt>(static_cast<int>(large_explosion_particles->GetType()), container);
large_explosion_particles->Write(container);
WriteData<Particle>(small_explosion_particles, container);
WriteData<Particle>(large_explosion_particles, container);
WriteData<SoundEvent>(explosion_sound, container);
#endif
}
Expand All @@ -331,8 +323,8 @@ namespace ProtocolCraft
output["knockback_z"] = knockback_z;
#if PROTOCOL_VERSION > 764 /* > 1.20.2 */
output["block_interaction"] = block_interaction;
output["small_explosion_particles"] = small_explosion_particles->Serialize();
output["large_explosion_particles"] = large_explosion_particles->Serialize();
output["small_explosion_particles"] = small_explosion_particles;
output["large_explosion_particles"] = large_explosion_particles;
output["explosion_sound"] = explosion_sound;
#endif

Expand All @@ -355,8 +347,8 @@ namespace ProtocolCraft
float knockback_y = 0.0f;
float knockback_z = 0.0f;
#if PROTOCOL_VERSION > 764 /* > 1.20.2 */
std::shared_ptr<Particle> small_explosion_particles;
std::shared_ptr<Particle> large_explosion_particles;
Particle small_explosion_particles;
Particle large_explosion_particles;
int block_interaction;
SoundEvent explosion_sound;
#endif
Expand Down
Expand Up @@ -115,7 +115,7 @@ namespace ProtocolCraft
override_limiter = override_limiter_;
}

void SetParticle(const std::shared_ptr<Particle>& particle_)
void SetParticle(const Particle& particle_)
{
particle = particle_;
}
Expand Down Expand Up @@ -183,7 +183,7 @@ namespace ProtocolCraft
return override_limiter;
}

std::shared_ptr<Particle> GetParticle() const
const Particle& GetParticle() const
{
return particle;
}
Expand All @@ -194,7 +194,7 @@ namespace ProtocolCraft
{
#if PROTOCOL_VERSION < 759 /* < 1.19 */
const ParticleType particle_type = static_cast<ParticleType>(ReadData<int>(iter, length));
#else
#elif PROTOCOL_VERSION < 766 /* < 1.20.5 */
const ParticleType particle_type = static_cast<ParticleType>(static_cast<int>(ReadData<VarInt>(iter, length)));
#endif
override_limiter = ReadData<bool>(iter, length);
Expand All @@ -212,15 +212,19 @@ namespace ProtocolCraft
z_dist = ReadData<float>(iter, length);
max_speed = ReadData<float>(iter, length);
count = ReadData<int>(iter, length);
particle = Particle::CreateParticle(particle_type);
particle->Read(iter, length);
#if PROTOCOL_VERSION < 766 /* < 1.20.5 */
particle.SetParticleType(static_cast<ParticleType>(particle_type));
particle.ReadOptions(iter, length);
#else
particle = ReadData<Particle>(iter, length);
#endif
}

virtual void WriteImpl(WriteContainer& container) const override
{
#if PROTOCOL_VERSION < 759 /* < 1.19 */
WriteData<int>(static_cast<int>(particle->GetType()), container);
#else
#elif PROTOCOL_VERSION < 766 /* < 1.20.5 */
WriteData<VarInt>(static_cast<int>(particle->GetType()), container);
#endif
WriteData<bool>(override_limiter, container);
Expand All @@ -238,7 +242,11 @@ namespace ProtocolCraft
WriteData<float>(z_dist, container);
WriteData<float>(max_speed, container);
WriteData<int>(count, container);
particle->Write(container);
#if PROTOCOL_VERSION < 766 /* < 1.20.5 */
particle.WriteOptions(container);
#else
WriteData<Particle>(particle, container);
#endif
}

virtual Json::Value SerializeImpl() const override
Expand All @@ -254,8 +262,7 @@ namespace ProtocolCraft
output["z_dist"] = z_dist;
output["max_speed"] = max_speed;
output["count"] = count;
output["particle_type"] = particle->GetName();
output["particle"] = particle->Serialize();
output["particle"] = particle;

return output;
}
Expand All @@ -276,7 +283,7 @@ namespace ProtocolCraft
float max_speed = 0.0f;
int count = 0;
bool override_limiter = false;
std::shared_ptr<Particle> particle;
Particle particle;

};
} //ProtocolCraft

This file was deleted.

@@ -1,34 +1,26 @@
#if PROTOCOL_VERSION > 392 /* > 1.12.2 */
#pragma once

#include "protocolCraft/Types/Particles/Particle.hpp"
#include "protocolCraft/Types/Particles/ParticleOptions.hpp"

namespace ProtocolCraft
{
class BlockParticle : public Particle
class BlockParticleOptions : public ParticleOptions
{
public:
BlockParticle();

virtual ~BlockParticle();

virtual std::string GetName() const override;

virtual ParticleType GetType() const override;
BlockParticleOptions();

virtual ~BlockParticleOptions();

int GetState() const;

void SetState(const int state_);

protected:
virtual void ReadImpl(ReadIterator& iter, size_t& length) override;

virtual void WriteImpl(WriteContainer& container) const override;

virtual Json::Value SerializeImpl() const override;

private:
int state = 0;
};
}
#endif

This file was deleted.

This file was deleted.

0 comments on commit ad890be

Please sign in to comment.