Bläddra i källkod

Added spriterenderer and changed a bit in Renderer to allow child classes to edit themselves in render, because map is pricky

Eiyeron Fulmincendii 10 år sedan
förälder
incheckning
032063f786
5 ändrade filer med 32 tillägg och 7 borttagningar
  1. 1 1
      include/Renderer.h
  2. 6 4
      include/SpriteRenderer.h
  3. 1 1
      include/TileRenderer.h
  4. 23 0
      src/SpriteRenderer.cpp
  5. 1 1
      src/TileRenderer.cpp

+ 1 - 1
include/Renderer.h

@@ -9,7 +9,7 @@ namespace WalrusRPG
     {
       public:
         virtual ~Renderer(){};
-        virtual void render(const unsigned id, const WalrusRPG::Utils::Rect &rect) const = 0;
+        virtual void render(const unsigned id, const WalrusRPG::Utils::Rect &rect) = 0;
     };
 }
 

+ 6 - 4
include/SpriteRenderer.h

@@ -10,12 +10,14 @@ namespace WalrusRPG
     class SpriteRenderer : public Renderer
     {
       protected:
-        tinystl::unordered_map<unsigned, WalrusRPG::Uils::Rect> sprites;
+        unsigned short *tilesheet;
+        tinystl::unordered_map<unsigned, WalrusRPG::Utils::Rect> sprites;
 
       public:
-        SpriteRenderer(/*char *tilesheet*/);
-        virtual void render(const unsigned id, const WalrusRPG::Utils::Rect &rect) const throw;
-    }
+        SpriteRenderer(unsigned short *tilesheet);
+        void add_sprite(unsigned id, WalrusRPG::Utils::Rect rect);
+        virtual void render(const unsigned id, const WalrusRPG::Utils::Rect &rect);
+    };
 }
 
 #endif

+ 1 - 1
include/TileRenderer.h

@@ -15,7 +15,7 @@ namespace WalrusRPG
 
       public:
         TileRenderer(unsigned short *tilesheet, unsigned tile_width, unsigned tile_height);
-        void render(const unsigned id, const WalrusRPG::Utils::Rect &rect) const;
+        void render(const unsigned id, const WalrusRPG::Utils::Rect &rect);
 
         int get_tile_width() const;
         int get_tile_height() const;

+ 23 - 0
src/SpriteRenderer.cpp

@@ -0,0 +1,23 @@
+#include "SpriteRenderer.h"
+#include "Graphics.h"
+#include "Rect.h"
+#include <TINYSTL/unordered_map.h>
+
+#define SPRITERENDERER WalrusRPG::SpriteRenderer
+#define GRAPHICS WalrusRPG::Graphics
+#define RECT WalrusRPG::Utils::Rect
+
+SPRITERENDERER::SpriteRenderer(unsigned short *_tilesheet)
+    : tilesheet(_tilesheet)
+{
+}
+
+void SPRITERENDERER::add_sprite(unsigned id, WalrusRPG::Utils::Rect rect)
+{
+    sprites[id] = rect;
+}
+
+void SPRITERENDERER::render(const unsigned id, const RECT &rect)
+{
+    GRAPHICS::draw_sprite_sheet(tilesheet, rect.x, rect.y, sprites[id]);
+}

+ 1 - 1
src/TileRenderer.cpp

@@ -11,7 +11,7 @@ TILERENDERER::TileRenderer(unsigned short *_tilesheet, unsigned tile_width, unsi
 {
 }
 
-void TILERENDERER::render(const unsigned id, const RECT &rect) const
+void TILERENDERER::render(const unsigned id, const RECT &rect)
 {
     unsigned num_tiles_x = tilesheet[0] / tile_width;
     //unsigned num_tiles_y = sheet_height / tile_height;