diff options
author | rtk0c <[email protected]> | 2022-05-30 17:03:20 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2022-05-30 17:03:20 -0700 |
commit | e66286ebe30afc9acc4531fc2bea29b7fb924f93 (patch) | |
tree | fa6b76554c3eb88bc8f088fbab68e20c40118ca7 /source/Sprite.hpp | |
parent | 366ef5a5450c6e0e680c924c3454943a9ae9814d (diff) |
Changeset: 56 Buildsystem cleanup: change to layered structure for different targets
Diffstat (limited to 'source/Sprite.hpp')
-rw-r--r-- | source/Sprite.hpp | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/source/Sprite.hpp b/source/Sprite.hpp deleted file mode 100644 index e163a01..0000000 --- a/source/Sprite.hpp +++ /dev/null @@ -1,111 +0,0 @@ -#pragma once - -#include "Ires.hpp" -#include "PodVector.hpp" -#include "RcPtr.hpp" -#include "Renderer.hpp" -#include "Texture.hpp" - -#include <rapidjson/fwd.h> -#include <glm/glm.hpp> -#include <string> -#include <string_view> -#include <vector> - -class SpriteDefinition : public RefCounted { - friend class IresSpriteFiles; - friend class IresSpritesheet; - -private: - RcPtr<Texture> mAtlas; - glm::ivec2 mBoundingBox; - std::vector<Subregion> mFrames; - -public: - bool IsValid() const; - Texture* GetAtlas() const { return mAtlas.Get(); } - glm::ivec2 GetBoundingBox() const { return mBoundingBox; } - const decltype(mFrames)& GetFrames() const { return mFrames; } -}; - -class IresSpriteFiles : public IresObject { -public: - RcPtr<SpriteDefinition> mInstance; - std::vector<std::string> spriteFiles; - -public: - IresSpriteFiles() - : IresObject(KD_SpriteFiles) {} - - // NOTE: does not check whether all specified files have the same dimensions - bool IsValid() const; - - SpriteDefinition* CreateInstance() const; - SpriteDefinition* GetInstance(); - void InvalidateInstance(); - - void Write(IresWritingContext& ctx, rapidjson::Value& value, rapidjson::Document& root) const override; - void Read(IresLoadingContext& ctx, const rapidjson::Value& value) override; -}; - -class IresSpritesheet : public IresObject { -public: - RcPtr<SpriteDefinition> mInstance; - std::string spritesheetFile; - int sheetWSplit = 1; - int sheetHSplit = 1; - int frameCountOverride = 0; - -public: - IresSpritesheet() - : IresObject(KD_Spritesheet) {} - - bool IsValid() const; - - static void ResplitSpritesheet(SpriteDefinition* sprite, const IresSpritesheet* conf); - static void ResplitSpritesheet(SpriteDefinition* sprite, int wSplit, int hSplit, int frameCountOverride = -1); - - SpriteDefinition* CreateInstance() const; - SpriteDefinition* GetInstance(); - void InvalidateInstance(); - - bool IsFrameCountOverriden() const; - int GetFrameCount() const; - - void ShowEditor(IEditor& editor) override; - - void Write(IresWritingContext& ctx, rapidjson::Value& value, rapidjson::Document& root) const override; - void Read(IresLoadingContext& ctx, const rapidjson::Value& value) override; -}; - -// TODO -class SpriteCollection { -private: - std::vector<SpriteDefinition> mSprites; -}; - -class Sprite { -private: - RcPtr<SpriteDefinition> mDefinition; - int mCurrentFrame = 0; - int mTimeElapsed = 0; - // # of frames per second - int mPlaybackSpeed = 5; - -public: - Sprite(); - - bool IsValid() const; - - SpriteDefinition* GetDefinition() const { return mDefinition.Get(); } - void SetDefinition(SpriteDefinition* definition); - - int GetFrame() const; - const Subregion& GetFrameSubregion() const; - void SetFrame(int frame); - // Update as if a render frame has passed - void PlayFrame(); - - int GetPlaybackSpeed() const; - void SetPlaybackSpeed(int speed); -}; |