mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-13 03:28:19 +00:00
55 lines
1.1 KiB
C++
55 lines
1.1 KiB
C++
|
#include "../interface.h"
|
||
|
#include "mapres_tilemap.h"
|
||
|
#include "mapres_image.h"
|
||
|
#include "mapres.h"
|
||
|
|
||
|
int tilemap_init()
|
||
|
{
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
void tilemap_render(float scale, int fg)
|
||
|
{
|
||
|
if(!map_is_loaded())
|
||
|
return;
|
||
|
|
||
|
// fetch indecies
|
||
|
int start, num;
|
||
|
map_get_type(MAPRES_TILEMAP, &start, &num);
|
||
|
|
||
|
// render tilemaps
|
||
|
int passed_main = 0;
|
||
|
for(int t = 0; t < num; t++)
|
||
|
{
|
||
|
mapres_tilemap *tmap = (mapres_tilemap *)map_get_item(start+t,0,0);
|
||
|
unsigned char *data = (unsigned char *)map_get_data(tmap->data);
|
||
|
|
||
|
if(tmap->main)
|
||
|
passed_main = 1;
|
||
|
|
||
|
if((fg && passed_main) || (!fg && !passed_main))
|
||
|
{
|
||
|
gfx_texture_set(img_get(tmap->image));
|
||
|
gfx_quads_begin();
|
||
|
|
||
|
int c = 0;
|
||
|
float frac = (1.0f/1024.0f); //2.0f;
|
||
|
for(int y = 0; y < tmap->height; y++)
|
||
|
for(int x = 0; x < tmap->width; x++, c++)
|
||
|
{
|
||
|
unsigned char d = data[c*2];
|
||
|
if(d)
|
||
|
{
|
||
|
gfx_quads_setsubset(
|
||
|
(d%16)/16.0f+frac,
|
||
|
(d/16)/16.0f+frac,
|
||
|
(d%16)/16.0f+1.0f/16.0f-frac,
|
||
|
(d/16)/16.0f+1.0f/16.0f-frac);
|
||
|
gfx_quads_drawTL(x*scale, y*scale, scale, scale);
|
||
|
}
|
||
|
}
|
||
|
gfx_quads_end();
|
||
|
}
|
||
|
}
|
||
|
}
|