summaryrefslogtreecommitdiff
path: root/src/renderer/Coronas.h
diff options
context:
space:
mode:
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);
+};