added basic mappers

This commit is contained in:
2026-07-24 18:01:59 -07:00
parent c7cdfd402e
commit a89ef52247
10 changed files with 127 additions and 20 deletions
+16
View File
@@ -0,0 +1,16 @@
#pragma once
#include <stdint.h>
#include "../datatypes.cpp"
#include "../helpers.cpp"
namespace UwU {
template <class MapperT>
class MapperBase {
public:
Coord2 map(uint16_t x, uint16_t y) {
return static_cast<MapperT*>(this)->map(x, y);
}
};
}
+4
View File
@@ -0,0 +1,4 @@
#include "mapperbase.cpp"
#include "nullmapper.cpp"
#include "offsetmapper.cpp"
#include "tilemapper.cpp"
+18
View File
@@ -0,0 +1,18 @@
#pragma once
#include <stdint.h>
#include "../datatypes.cpp"
#include "../helpers.cpp"
#include "mapperbase.cpp"
namespace UwU {
class NullMapper : public MapperBase<NullMapper> {
public:
NullMapper() {}
Coord2 map(uint16_t x, uint16_t y) {
return Coord2(x, y);
}
};
}
+24
View File
@@ -0,0 +1,24 @@
#pragma once
#include <stdint.h>
#include "../datatypes.cpp"
#include "../helpers.cpp"
#include "mapperbase.cpp"
namespace UwU {
class OffsetMapper : public MapperBase<OffsetMapper> {
public:
OffsetMapper(uint16_t x0, uint16_t y0) {
this->x0 = x0;
this->y0 = y0;
}
uint16_t x0, y0;
Coord2 map(uint16_t x, uint16_t y) {
uint16_t u = x -x0;
uint16_t v = y -y0;
return Coord2(u, v);
}
};
}
+24
View File
@@ -0,0 +1,24 @@
#pragma once
#include <stdint.h>
#include "../datatypes.cpp"
#include "../helpers.cpp"
#include "mapperbase.cpp"
namespace UwU {
class TileMapper : public MapperBase<TileMapper> { // not actually tilemapping yet
public:
TileMapper(uint16_t x0, uint16_t y0) {
this->x0 = x0;
this->y0 = y0;
}
uint16_t x0, y0;
Coord2 map(uint16_t x, uint16_t y) {
uint16_t u = x -x0;
uint16_t v = y -y0;
return Coord2(u, v);
}
};
}