devilutionX/Source/lighting.h
Gleb Mazovetskiy 076b0c0c05 Overhaul tests
1. Adds a `libdevilution_so` target when tests are enabled.
2. Each test file is now a separate binary target linked against `libdevilutionx_so` (can now run tests in parallel).
3. Tests are now defined in a separate `test/CMakeLists.txt` file.
4. Building the tests is now controlled by the standard `BUILD_TESTING` option (defined by CTest).
5. Tests are now built by default.
6. On CI, test errors are now reported.

Also:

* `.clang-format`: Enable SortIncludes in tests
* `path_test.cpp`: Fix -Wsign-compare
2021-12-16 20:26:51 +00:00

82 lines
1.9 KiB
C++

/**
* @file lighting.h
*
* Interface of light and vision.
*/
#pragma once
#include <array>
#include "automap.h"
#include "engine.h"
#include "engine/point.hpp"
#include "miniwin/miniwin.h"
#include "utils/attributes.h"
namespace devilution {
#define MAXLIGHTS 32
#define MAXVISION 32
#define LIGHTSIZE (27 * 256)
#define NO_LIGHT -1
struct LightPosition {
Point tile;
/** Pixel offset from tile. */
Point offset;
/** Prevous position. */
Point old;
};
struct Light {
LightPosition position;
int _lradius;
int _lid;
bool _ldel;
bool _lunflag;
int oldRadius;
bool _lflags;
};
extern Light VisionList[MAXVISION];
extern int VisionCount;
extern int VisionId;
extern Light Lights[MAXLIGHTS];
extern uint8_t ActiveLights[MAXLIGHTS];
extern int ActiveLightCount;
extern char LightsMax;
extern std::array<uint8_t, LIGHTSIZE> LightTables;
extern DVL_API_FOR_TEST bool DisableLighting;
extern bool UpdateLighting;
void DoLighting(Point position, int nRadius, int Lnum);
void DoUnVision(Point position, int nRadius);
void DoVision(Point position, int nRadius, MapExplorationType doautomap, bool visible);
void MakeLightTable();
#ifdef _DEBUG
void ToggleLighting();
#endif
void InitLightMax();
void InitLighting();
int AddLight(Point position, int r);
void AddUnLight(int i);
void ChangeLightRadius(int i, int r);
void ChangeLightXY(int i, Point position);
void ChangeLightOffset(int i, Point position);
void ChangeLight(int i, Point position, int r);
void ProcessLightList();
void SavePreLighting();
void InitVision();
int AddVision(Point position, int r, bool mine);
void ChangeVisionRadius(int id, int r);
void ChangeVisionXY(int id, Point position);
void ProcessVisionList();
void lighting_color_cycling();
/* rdata */
extern DVL_API_FOR_TEST const int8_t CrawlTable[2749];
extern DVL_API_FOR_TEST const int CrawlNum[19];
extern const uint8_t VisionCrawlTable[23][30];
} // namespace devilution