summaryrefslogtreecommitdiffstats
path: root/src/renderer/Coronas.h
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2021-07-23 23:47:04 +0200
committerNikolay Korolev <nickvnuk@gmail.com>2021-07-23 23:47:04 +0200
commita7e673c2ec6a5ed25f3bae8caab90e2113158c03 (patch)
tree8c88859a32b0613a4c28fd1a0432504403e5a5e6 /src/renderer/Coronas.h
parentfix premake (diff)
downloadre3-a7e673c2ec6a5ed25f3bae8caab90e2113158c03.tar
re3-a7e673c2ec6a5ed25f3bae8caab90e2113158c03.tar.gz
re3-a7e673c2ec6a5ed25f3bae8caab90e2113158c03.tar.bz2
re3-a7e673c2ec6a5ed25f3bae8caab90e2113158c03.tar.lz
re3-a7e673c2ec6a5ed25f3bae8caab90e2113158c03.tar.xz
re3-a7e673c2ec6a5ed25f3bae8caab90e2113158c03.tar.zst
re3-a7e673c2ec6a5ed25f3bae8caab90e2113158c03.zip
Diffstat (limited to 'src/renderer/Coronas.h')
-rw-r--r--src/renderer/Coronas.h101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/renderer/Coronas.h b/src/renderer/Coronas.h
new file mode 100644
index 00000000..46eb4315
--- /dev/null
+++ b/src/renderer/Coronas.h
@@ -0,0 +1,101 @@
+#pragma once
+
+extern RwTexture *gpCoronaTexture[9];
+
+struct CRegisteredCorona
+{
+ uint32 id;
+ uint32 lastLOScheck;
+ RwTexture *texture;
+ uint8 red;
+ uint8 green;
+ uint8 blue;
+ uint8 alpha; // alpha when fully visible
+ uint8 fadeAlpha; // actual value used for rendering, faded
+ CVector coors;
+ float size;
+ float someAngle;
+ bool registeredThisFrame;
+ float drawDist;
+ int8 flareType;
+ int8 reflection;
+
+ uint8 LOScheck : 1;
+ uint8 offScreen : 1;
+ uint8 firstUpdate : 1;
+ uint8 drawStreak : 1;
+ uint8 sightClear : 1;
+
+ bool renderReflection;
+ float heightAboveRoad;
+
+ float prevX[6];
+ float prevY[6];
+ uint8 prevRed[6];
+ uint8 prevGreen[6];
+ uint8 prevBlue[6];
+ bool hasValue[6];
+
+ void Update(void);
+};
+
+VALIDATE_SIZE(CRegisteredCorona, 0x80);
+
+class CCoronas
+{
+ static CRegisteredCorona aCoronas[NUMCORONAS];
+public:
+ enum {
+ SUN_CORE = 1,
+ SUN_CORONA
+ };
+ enum {
+ TYPE_STAR,
+ TYPE_NORMAL,
+ TYPE_MOON,
+ TYPE_REFLECT,
+ TYPE_HEADLIGHT,
+ TYPE_HEX,
+ TYPE_CIRCLE,
+ TYPE_RING,
+ TYPE_STREAK,
+ };
+ enum {
+ FLARE_NONE,
+ FLARE_SUN,
+ FLARE_HEADLIGHTS
+ };
+ enum {
+ REFLECTION_OFF,
+ REFLECTION_ON,
+ };
+ enum {
+ LOSCHECK_OFF,
+ LOSCHECK_ON,
+ };
+ enum {
+ STREAK_OFF,
+ STREAK_ON,
+ };
+
+ static float LightsMult;
+ static float SunScreenY;
+ static float SunScreenX;
+ static bool bSmallMoon;
+ static bool SunBlockedByClouds;
+ static int bChangeBrightnessImmediately;
+
+ static void Init(void);
+ static void Shutdown(void);
+ static void Update(void);
+ static void RegisterCorona(uint32 id, uint8 red, uint8 green, uint8 blue, uint8 alpha,
+ const CVector &coors, float size, float drawDist, RwTexture *tex,
+ int8 flareType, uint8 reflection, uint8 LOScheck, uint8 drawStreak, float someAngle);
+ static void RegisterCorona(uint32 id, uint8 red, uint8 green, uint8 blue, uint8 alpha,
+ const CVector &coors, float size, float drawDist, uint8 type,
+ int8 flareType, uint8 reflection, uint8 LOScheck, uint8 drawStreak, float someAngle);
+ static void UpdateCoronaCoors(uint32 id, const CVector &coors, float drawDist, float someAngle);
+ static void Render(void);
+ static void RenderReflections(void);
+ static void DoSunAndMoon(void);
+};