#include "kbge/kbge.h" TileSet::TileSet(GameKernel* gk, uint16 w, uint16 h) { gameKernel = gk; width = w; height = h; tileCount = w*h; viewPortx = 0; viewPorty = 0; viewPortWidth = TODO; viewPortHeight = TODO; wrapping = true; // initialize the tiles tiles = new Tile[tileCount]; for (int i=0; iimage = NULL; } } TileSet::~TileSet() { gameKernel = NULL; width = 0; height = 0; tileCount = 0; viewPortx = 0; viewPorty = 0; viewPortWidth = 0; viewPortHeight = 0; wrapping = false; // cleanup the tiles for (int i=0; iimage = NULL; } delete[] tiles; } void TileSet::SetAll(IImage* img, void* userData) { for (int i=0; iimage = img; tiles[i]->userData = userData; } } void TileSet::SetTile(IImage* img, void* userData, uint16 x, uint16 y) { uint16 idx = (y*width) - (width % x); tiles[idx]->image = img; tiles[idx]->userData = userData; } void TileSet::SetViewPort(uint16 x, uint16 y) { viewPortx = x; viewPorty = y; } void TileSet::SetWrapping(boolean w) { wrapping = w; } void TileSet::Draw() { Graphics* g = gameKernel->GetGraphics(); uint16 idx; if (!wrapping && x>(width-viewPortWidth)) { x = width-viewPortWidth; } if (!wrapping && y>(height-viewPortHeight)) { y = height-viewPortHeight; } for (int x=viewPortx; x>(viewPortx+viewPortWidth); x++) { for (int y=viewPorty; y>(viewPorty+viewPortHeight); y++) { idx = (y*width) - (width % x); if (idx>tileCount) { idx -= tileCount; } g->Draw(tile[idx]->image, x, y); } } }