From 91c9cef56de3937859898723d6c7b0bb0c0bb758 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Fri, 28 Feb 2014 03:40:18 +1100 Subject: [PATCH] Working on the TileSheet class --- common/graphics/tile_sheet.cpp | 41 +++++++++++++++++++++++++++ common/graphics/tile_sheet.hpp | 52 ++++++++++++++++++++++++++++++++++ editor/main.cpp | 18 +----------- 3 files changed, 94 insertions(+), 17 deletions(-) create mode 100644 common/graphics/tile_sheet.cpp create mode 100644 common/graphics/tile_sheet.hpp diff --git a/common/graphics/tile_sheet.cpp b/common/graphics/tile_sheet.cpp new file mode 100644 index 0000000..ef3153d --- /dev/null +++ b/common/graphics/tile_sheet.cpp @@ -0,0 +1,41 @@ +/* Copyright: (c) Kayne Ruse 2014 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. +*/ +#include "tile_sheet.hpp" + +void TileSheet::Load(std::string fname, int xc, int yc) { + XCount = xc; + YCount = yc; + image.LoadSurface(fname); + image.SetClipW(image.GetClipW()/XCount); + image.SetClipH(image.GetClipH()/YCount); +} + +void TileSheet::Unload() { + image.FreeSurface(); + XCount = YCount = 0; +} + +void TileSheet::DrawTo(SDL_Surface* const dest, int x, int y, int tile) { + image.SetClipX(tile % XCount * image.GetClipW()); + image.SetClipY(tile / XCount * image.GetClipH()); + image.DrawTo(dest, x, y); +} diff --git a/common/graphics/tile_sheet.hpp b/common/graphics/tile_sheet.hpp new file mode 100644 index 0000000..c0ee836 --- /dev/null +++ b/common/graphics/tile_sheet.hpp @@ -0,0 +1,52 @@ +/* Copyright: (c) Kayne Ruse 2014 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. +*/ +#ifndef TILESHEET_HPP_ +#define TILESHEET_HPP_ + +#include "image.hpp" + +#include + +class TileSheet { +public: + TileSheet() = default; + TileSheet(std::string f, int x, int y) { Load(f, x, y); } + ~TileSheet() = default; + + void Load(std::string fname, int XCount, int YCount); + void Unload(); + + void DrawTo(SDL_Surface* const dest, int x, int y, int tile); + + //accessors + Image* GetImage() { return ℑ } + int GetXCount() { return XCount; } + int GetYCount() { return YCount; } + int GetTileW() { return image.GetClipW(); } + int GetTileH() { return image.GetClipH(); } +private: + Image image; + int XCount = 0, YCount = 0; +}; + +#endif + \ No newline at end of file diff --git a/editor/main.cpp b/editor/main.cpp index f8dc556..3348ec0 100644 --- a/editor/main.cpp +++ b/editor/main.cpp @@ -18,7 +18,7 @@ * * 3. This notice may not be removed or altered from any source * distribution. -* / +*/ #include "editor_application.hpp" #include @@ -39,20 +39,4 @@ int main(int, char**) { } cout << "Clean exit" << endl; return 0; -} -*/ -#include "region_pager.hpp" -#include "map_file_format.hpp" -#include "map_generator.hpp" - -#include - -int main() { - RegionPager pager(40, 40, 3); - pager.CreateRegion(0, 0); - pager.SaveRegion(0, 0); - pager.LoadRegion(0, 0); - pager.UnloadRegion(0, 0); - std::cout << "Finishing program" << std::endl; - return 0; } \ No newline at end of file