- [WIP] Comence amb el propertygrid

- [NEW] Módul aux
- [WIP] Módul tilemap ja mostra el mapa
- [FIX] japi/draw: les textures han de vores en NEAREST
This commit is contained in:
2025-11-18 17:12:53 +01:00
parent d686673b8e
commit 03baa43543
8 changed files with 183 additions and 1 deletions

66
source/tilemap.cpp Normal file
View File

@@ -0,0 +1,66 @@
#include "tilemap.h"
#include "japi/draw.h"
#include <stdint.h>
namespace tilemap
{
uint16_t tiles[16*32];
uint32_t back_color = 0xff000000;
SDL_Texture *tileset;
SDL_Texture *map;
uint32_t paleta[16] = {
0xff000000, 0xff3c351f, 0xff0000d8, 0xff0000ff, 0xffd80000, 0xffff0000,
0xffd800d8, 0xffff00ff, 0xff00d800, 0xff00ff00, 0xff00d8d8, 0xff00ffff,
0xffd8d800, 0xffffff00, 0xffd8d8d8, 0xffffffff
};
void init()
{
tileset = draw::loadSurface("tilesets/standard.gif", 16);
map = draw::createSurface(32*8, 16*8);
}
void start()
{
draw::setClip(200,48,draw::getWindowSize().x-400, draw::getWindowSize().y-48);
draw::setColor(0xff000000);
draw::fillrect(200,48,draw::getWindowSize().x-400, draw::getWindowSize().y-48);
}
void draw()
{
const int width = draw::getWindowSize().x-400;
const int height = (128*width)/256;
const int x = 200;
const int y = ((draw::getWindowSize().y-48)-height)/2;
draw::setSource(map);
draw::draw({0,0,256,128},{x,y,width,height});
}
void end()
{
draw::resetClip();
}
void set(uint16_t *tiles)
{
memcpy(tilemap::tiles, tiles, 32*16*2);
draw::setDestination(map);
draw::setSource(tileset);
draw::cls(back_color);
int i=0;
for (int y=0; y<16; ++y) {
for (int x=0; x<32; ++x) {
draw::draw({(tiles[i]%24)*8, (tiles[i]/24)*8, 8, 8}, {x*8, y*8, 8, 8});
i++;
}
}
draw::setDestination(nullptr);
}
void setBackground(int color)
{
back_color = paleta[color];
}
}