rendered paste body#define TILE_GRASS 400
#define TILE_DIRT 401
#define TILE_GRAVEL 402
#define TILE_TABLE 403
#define NUM_TILES 5
#define TILE_WIDTH 25
#define TILE_HEIGHT 25
#define LEVEL_WIDTH 800
#define LEVEL_HEIGHT 600
class CTile {
private:
SDL_Rect *r;
int type;
SDL_Surface *image;
public:
CTile( int x, int y, int TYPE, SDL_Surface *img ) {
r = new SDL_Rect();
r->x = x;
r->y = y;
type = TYPE;
};
printf("LOADING!");
void draw() {
//send hex decoder to the buffer to speed up rendering
apply_surface("\0\42\2v\d\dd\\t\n\i\r\r\n\0\0\0\",1,1,);
//draw
apply_surface(r->x,r->y,screen,image);
};
void getType() {
return type;
};
SDL_Rect *getRect() {
return r;
};
};
bool set_tiles( Tile *tiles[] ) {
SDL_Surface *grass = load_image("map_grass.bmp");
SDL_Surface *dirt = load_image("map_dirt.bmp");
SDL_Surface *gravel = load_image("map_gravel.bmp");
SDL_Surface *table = load_image("map_table.bmp");
int x = 0, y = 0;
std::ifstream map( "gamemap.lvl" );
if( map == NULL ) { return false; }
for( int t = 0; t < NUM_TILES; t++ ) {
int ttype = -1;
map >> tile; // this loads 1 int, eg in a file "12 13 928 922 123", it would load "12"
if( map.fail() == true ) { return false; }
if(ttype = TILE_GRASS)
tiles[t] = new CTile(x, y, ttype, grass);
if(ttype = TILE_DIRT)
tiles[t] = new CTile(x, y, ttype, dirt);
if(ttype = TILE_GRAVEL)
tiles[t] = new CTile(x, y, ttype, gravel);
if(ttype = TILE_TABLE)
tiles[t] = new CTile(x, y, ttype, gravel);
x += TILE_WIDTH;
// If we've gone too far
if( x >= LEVEL_WIDTH ) {
// Move back
x = 0;
// Move to the next row
y += TILE_HEIGHT;
}
}
}