aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/interface/GFXObject.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/openvic-simulation/interface/GFXObject.hpp')
-rw-r--r--src/openvic-simulation/interface/GFXObject.hpp205
1 files changed, 204 insertions, 1 deletions
diff --git a/src/openvic-simulation/interface/GFXObject.hpp b/src/openvic-simulation/interface/GFXObject.hpp
index db15096..a633cb5 100644
--- a/src/openvic-simulation/interface/GFXObject.hpp
+++ b/src/openvic-simulation/interface/GFXObject.hpp
@@ -74,4 +74,207 @@ namespace OpenVic::GFX {
OV_DETAIL_GET_TYPE
};
-}
+
+ /* arrows.gfx */
+ class ArrowType final : public Object {
+ friend std::unique_ptr<ArrowType> std::make_unique<ArrowType>();
+
+ private:
+ //Named<> already handles the name property
+ fixed_point_t PROPERTY(size);
+ std::string PROPERTY(texture_file);
+ std::string PROPERTY(body_texture_file);
+ colour_t PROPERTY(back_colour);
+ colour_t PROPERTY(progress_colour);
+
+ fixed_point_t PROPERTY(end_at); //how should float be repd? >> fixed_point handles it
+ fixed_point_t PROPERTY(height);
+ uint64_t PROPERTY(arrow_type);
+ fixed_point_t PROPERTY(heading); //also float
+
+ std::string PROPERTY(effect_file);
+
+ protected:
+ ArrowType();
+
+ bool _fill_key_map(NodeTools::case_insensitive_key_map_t& key_map) override;
+
+ public:
+ ArrowType(ArrowType&&) = default;
+ virtual ~ArrowType() = default;
+
+ OV_DETAIL_GET_TYPE
+ };
+
+ /* battlearrow.gfx */
+ class BattleArrow final : public Object {
+ friend std::unique_ptr<BattleArrow> std::make_unique<BattleArrow>();
+
+ private:
+ //Named<> already handles the name property
+ //TODO verify the texture places
+ std::string PROPERTY(texture_file);
+ std::string PROPERTY(back_texture_file);
+
+ fixed_point_t PROPERTY(start);
+ fixed_point_t PROPERTY(stop);
+ uint64_t PROPERTY(x);
+ uint64_t PROPERTY(y);
+
+ std::string PROPERTY(font);
+ uint64_t PROPERTY(scale);
+ bool PROPERTY(no_fade);
+ fixed_point_t PROPERTY(texture_loop);
+
+ protected:
+ BattleArrow();
+
+ bool _fill_key_map(NodeTools::case_insensitive_key_map_t& key_map) override;
+
+ public:
+ BattleArrow(BattleArrow&&) = default;
+ virtual ~BattleArrow() = default;
+
+ OV_DETAIL_GET_TYPE
+ };
+
+ class MapInfo final : public Object {
+ friend std::unique_ptr<MapInfo> std::make_unique<MapInfo>();
+
+ private:
+ std::string PROPERTY(texture_file);
+ fixed_point_t PROPERTY(scale);
+
+ protected:
+ MapInfo();
+
+ bool _fill_key_map(NodeTools::case_insensitive_key_map_t& key_map) override;
+
+ public:
+ MapInfo(MapInfo&&) = default;
+ virtual ~MapInfo() = default;
+
+ OV_DETAIL_GET_TYPE
+ };
+
+ /* mapitems.gfx */
+ class Projection final : public Object {
+ friend std::unique_ptr<Projection> std::make_unique<Projection>();
+
+ private:
+ //Named<> already handles the name property
+ std::string PROPERTY(texture_file);
+ //TODO: should size, pulseSpeed, duration, fadeout be ints or fixed points? assume fixed_point_t to start
+ fixed_point_t PROPERTY(size);
+ fixed_point_t PROPERTY(spin);
+ bool PROPERTY(pulsating);
+ fixed_point_t PROPERTY(pulse_lowest);
+ fixed_point_t PROPERTY(pulse_speed);
+ bool PROPERTY(additative);
+ fixed_point_t PROPERTY(expanding);
+ std::optional<fixed_point_t> PROPERTY(duration);
+ std::optional<fixed_point_t> PROPERTY(fadeout);
+
+ protected:
+ Projection();
+
+ bool _fill_key_map(NodeTools::case_insensitive_key_map_t& key_map) override;
+
+ public:
+ Projection(Projection&&) = default;
+ virtual ~Projection() = default;
+
+ OV_DETAIL_GET_TYPE
+ };
+
+ class Billboard final : public Object {
+ friend std::unique_ptr<Billboard> std::make_unique<Billboard>();
+
+ public:
+ struct Offset {
+ friend class Billboard;
+
+ private:
+ fixed_point_t PROPERTY(x);
+ fixed_point_t PROPERTY(y);
+ fixed_point_t PROPERTY(z);
+
+ Offset(fixed_point_t new_x, fixed_point_t new_y, fixed_point_t new_z);
+
+ public:
+ Offset(Offset&&) = default;
+ };
+
+ private:
+ std::string PROPERTY(texture_file);
+ fixed_point_t PROPERTY(scale);
+ int64_t PROPERTY(no_of_frames);
+ int64_t PROPERTY(font_size); //TODO: is this fixed point?
+ Offset PROPERTY(offset);
+ std::string PROPERTY(font);
+
+ protected:
+ Billboard();
+
+ bool _fill_key_map(NodeTools::case_insensitive_key_map_t& key_map) override;
+
+ public:
+ Billboard(Billboard&&) = default;
+ virtual ~Billboard() = default;
+
+ OV_DETAIL_GET_TYPE
+ };
+
+
+ class UnitStatsBillboard final : public Object {
+ friend std::unique_ptr<UnitStatsBillboard> std::make_unique<UnitStatsBillboard>();
+
+ private:
+ //Named<> already handles the name property
+ std::string PROPERTY(texture_file);
+ std::string PROPERTY(effect_file);
+ std::string PROPERTY(mask_file);
+ fixed_point_t PROPERTY(scale);
+ int64_t PROPERTY(no_of_frames);
+ int64_t PROPERTY(font_size); //TODO: is this fixed point?
+ std::string PROPERTY(font);
+
+ protected:
+ UnitStatsBillboard();
+
+ bool _fill_key_map(NodeTools::case_insensitive_key_map_t& key_map) override;
+
+ public:
+ UnitStatsBillboard(UnitStatsBillboard&&) = default;
+ virtual ~UnitStatsBillboard() = default;
+
+ OV_DETAIL_GET_TYPE
+ };
+
+ class ProgressBar3d final : public Object {
+ friend std::unique_ptr<ProgressBar3d> std::make_unique<ProgressBar3d>();
+
+ private:
+ //Named<> already handles the name property
+ //TODO: are there any other properties which are unused
+ colour_t PROPERTY(back_colour);
+ colour_t PROPERTY(progress_colour);
+ ivec2_t PROPERTY(size);
+ std::string PROPERTY(effect_file);
+
+ protected:
+ ProgressBar3d();
+
+ bool _fill_key_map(NodeTools::case_insensitive_key_map_t& key_map) override;
+
+ public:
+ ProgressBar3d(ProgressBar3d&&) = default;
+ virtual ~ProgressBar3d() = default;
+
+ OV_DETAIL_GET_TYPE
+ };
+
+ /* Core.gfx */
+
+
+} \ No newline at end of file