aboutsummaryrefslogtreecommitdiff
path: root/source/Sprite.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Sprite.hpp')
-rw-r--r--source/Sprite.hpp111
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);
-};