gba-sprite-engine/src/engine/palette_manager.h

50 lines
1.3 KiB
C
Raw Normal View History

2018-08-01 16:03:16 +02:00
//
// Created by Wouter Groeneveld on 27/07/18.
//
#ifndef GBA_SPRITE_ENGINE_PALETTE_MANAGER_H
#define GBA_SPRITE_ENGINE_PALETTE_MANAGER_H
#include <engine/gba/tonc_types.h>
#define PALETTE_BANK_SIZE 16
#define PALETTE_MAX_SIZE 256
class PaletteManager {
protected:
const u16 *data;
int size;
virtual void* palletteAddress() = 0;
public:
PaletteManager(const u16 paletteData[]) : data(paletteData), size(PALETTE_MAX_SIZE) {}
PaletteManager(const u16 paletteData[], int size) : data(paletteData), size(size) {}
void persist();
};
class BackgroundPaletteManager : public PaletteManager {
protected:
void *palletteAddress() override {
return pal_bg_mem;
}
public:
BackgroundPaletteManager(const u16 paletteData[]) : PaletteManager(paletteData) {}
BackgroundPaletteManager(const u16 paletteData[], int size) : PaletteManager(paletteData, size) {}
};
class ForegroundPaletteManager : public PaletteManager {
protected:
void *palletteAddress() override {
return pal_obj_mem;
}
public:
ForegroundPaletteManager(const u16 paletteData[]) : PaletteManager(paletteData) {}
ForegroundPaletteManager(const u16 paletteData[], int size) : PaletteManager(paletteData, size) {}
};
#endif //GBA_SPRITE_ENGINE_PALETTE_MANAGER_H