You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
868 B
33 lines
868 B
#pragma once |
|
|
|
#include "engine/point.hpp" |
|
|
|
namespace devilution { |
|
|
|
class Lightmap { |
|
public: |
|
explicit Lightmap(const uint8_t *outBuffer, const uint8_t *lightmapBuffer, const uint8_t *lightTables, size_t lightTableSize); |
|
|
|
uint8_t adjustColor(uint8_t color, uint8_t lightLevel) const |
|
{ |
|
size_t offset = lightLevel * lightTableSize + color; |
|
return lightTables[offset]; |
|
} |
|
|
|
const uint8_t *getLightingAt(const uint8_t *outLoc) const |
|
{ |
|
return lightmapBuffer + (outLoc - outBuffer); |
|
} |
|
|
|
static Lightmap build(Point tilePosition, Point targetBufferPosition, |
|
int viewportWidth, int viewportHeight, int rows, int columns, |
|
const uint8_t *outBuffer, const uint8_t *lightTables, size_t lightTableSize); |
|
|
|
private: |
|
const uint8_t *outBuffer; |
|
const uint8_t *lightmapBuffer; |
|
const uint8_t *lightTables; |
|
const size_t lightTableSize; |
|
}; |
|
|
|
} // namespace devilution
|
|
|