mirror of
https://gitlab.com/GaryOderNichts/re3-wiiu.git
synced 2024-12-23 08:11:49 +01:00
Triangular radar blips
This commit is contained in:
parent
a47f78758c
commit
365f9e9caf
@ -335,7 +335,18 @@ void CRadar::DrawBlips()
|
||||
if (ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_NONE) {
|
||||
DrawRadarSprite(ms_RadarTrace[blipId].m_IconID, out.x, out.y, CalculateBlipAlpha(dist));
|
||||
} else {
|
||||
#ifdef TRIANGULAR_BLIPS
|
||||
CVector &pos = FindPlayerCentreOfWorld_NoSniperShift();
|
||||
CVector &blipPos = blipEntity->GetPosition();
|
||||
uint8 mode = BLIP_MODE_TRIANGULAR_UP;
|
||||
if (blipPos.z - pos.z <= 2.0f) {
|
||||
if (blipPos.z - pos.z < -4.0f) mode = BLIP_MODE_TRIANGULAR_DOWN;
|
||||
else mode = BLIP_MODE_SQUARE;
|
||||
}
|
||||
ShowRadarTraceWithHeight(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255, mode);
|
||||
#else
|
||||
ShowRadarTrace(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -363,7 +374,18 @@ void CRadar::DrawBlips()
|
||||
if (ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_NONE) {
|
||||
DrawRadarSprite(ms_RadarTrace[blipId].m_IconID, out.x, out.y, CalculateBlipAlpha(dist));
|
||||
} else {
|
||||
#ifdef TRIANGULAR_BLIPS
|
||||
CVector &pos = FindPlayerCentreOfWorld_NoSniperShift();
|
||||
CVector &blipPos = ms_RadarTrace[blipId].m_vecPos;
|
||||
uint8 mode = BLIP_MODE_TRIANGULAR_UP;
|
||||
if (blipPos.z - pos.z <= 2.0f) {
|
||||
if (blipPos.z - pos.z < -4.0f) mode = BLIP_MODE_TRIANGULAR_DOWN;
|
||||
else mode = BLIP_MODE_SQUARE;
|
||||
}
|
||||
ShowRadarTraceWithHeight(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255, mode);
|
||||
#else
|
||||
ShowRadarTrace(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -417,7 +439,20 @@ void CRadar::DrawBlips()
|
||||
if (ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_NONE)
|
||||
DrawRadarSprite(ms_RadarTrace[blipId].m_IconID, out.x, out.y, CalculateBlipAlpha(dist));
|
||||
else
|
||||
#ifdef TRIANGULAR_BLIPS
|
||||
{
|
||||
CVector &pos = FindPlayerCentreOfWorld_NoSniperShift();
|
||||
CVector &blipPos = blipEntity->GetPosition();
|
||||
uint8 mode = BLIP_MODE_TRIANGULAR_UP;
|
||||
if (blipPos.z - pos.z <= 2.0f) {
|
||||
if (blipPos.z - pos.z < -4.0f) mode = BLIP_MODE_TRIANGULAR_DOWN;
|
||||
else mode = BLIP_MODE_SQUARE;
|
||||
}
|
||||
ShowRadarTraceWithHeight(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255, mode);
|
||||
}
|
||||
#else
|
||||
ShowRadarTrace(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -453,7 +488,20 @@ void CRadar::DrawBlips()
|
||||
if (ms_RadarTrace[blipId].m_IconID != RADAR_SPRITE_NONE)
|
||||
DrawRadarSprite(ms_RadarTrace[blipId].m_IconID, out.x, out.y, CalculateBlipAlpha(dist));
|
||||
else
|
||||
#ifdef TRIANGULAR_BLIPS
|
||||
{
|
||||
CVector &pos = FindPlayerCentreOfWorld_NoSniperShift();
|
||||
CVector &blipPos = ms_RadarTrace[blipId].m_vecPos;
|
||||
uint8 mode = BLIP_MODE_TRIANGULAR_UP;
|
||||
if (blipPos.z - pos.z <= 2.0f) {
|
||||
if (blipPos.z - pos.z < -4.0f) mode = BLIP_MODE_TRIANGULAR_DOWN;
|
||||
else mode = BLIP_MODE_SQUARE;
|
||||
}
|
||||
ShowRadarTraceWithHeight(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255, mode);
|
||||
}
|
||||
#else
|
||||
ShowRadarTrace(out.x, out.y, ms_RadarTrace[blipId].m_wScale, (uint8)(color >> 24), (uint8)(color >> 16), (uint8)(color >> 8), 255);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -949,6 +997,30 @@ void CRadar::ShowRadarTrace(float x, float y, uint32 size, uint8 red, uint8 gree
|
||||
}
|
||||
#endif
|
||||
|
||||
void CRadar::ShowRadarTraceWithHeight(float x, float y, uint32 size, uint8 red, uint8 green, uint8 blue, uint8 alpha, uint8 mode)
|
||||
{
|
||||
if (!CHud::m_Wants_To_Draw_Hud || TheCamera.m_WideScreenOn)
|
||||
return;
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case BLIP_MODE_TRIANGULAR_UP:
|
||||
// size++; // VC does size + 1 for triangles
|
||||
CSprite2d::Draw2DPolygon(x + SCREEN_SCALE_X(size + 3.0f), y + SCREEN_SCALE_Y(size + 2.0f), x - (SCREEN_SCALE_X(size + 3.0f)), y + SCREEN_SCALE_Y(size + 2.0f), x, y - (SCREEN_SCALE_Y(size + 3.0f)), x, y - (SCREEN_SCALE_Y(size + 3.0f)), CRGBA(0, 0, 0, alpha));
|
||||
CSprite2d::Draw2DPolygon(x + SCREEN_SCALE_X(size + 1.0f), y + SCREEN_SCALE_Y(size + 1.0f), x - (SCREEN_SCALE_X(size + 1.0f)), y + SCREEN_SCALE_Y(size + 1.0f), x, y - (SCREEN_SCALE_Y(size + 1.0f)), x, y - (SCREEN_SCALE_Y(size + 1.0f)), CRGBA(red, green, blue, alpha));
|
||||
break;
|
||||
case BLIP_MODE_TRIANGULAR_DOWN:
|
||||
// size++; // VC does size + 1 for triangles
|
||||
CSprite2d::Draw2DPolygon(x, y + SCREEN_SCALE_Y(size + 2.0f), x, y + SCREEN_SCALE_Y(size + 3.0f), x + SCREEN_SCALE_X(size + 3.0f), y - (SCREEN_SCALE_Y(size + 2.0f)), x - (SCREEN_SCALE_X(size + 3.0f)), y - (SCREEN_SCALE_Y(size + 2.0f)), CRGBA(0, 0, 0, alpha));
|
||||
CSprite2d::Draw2DPolygon(x, y + SCREEN_SCALE_Y(size + 1.0f), x, y + SCREEN_SCALE_Y(size + 1.0f), x + SCREEN_SCALE_X(size + 1.0f), y - (SCREEN_SCALE_Y(size + 1.0f)), x - (SCREEN_SCALE_X(size + 1.0f)), y - (SCREEN_SCALE_Y(size + 1.0f)), CRGBA(red, green, blue, alpha));
|
||||
break;
|
||||
case BLIP_MODE_SQUARE:
|
||||
CSprite2d::DrawRect(CRect(x - SCREEN_SCALE_X(size + 1.0f), y - SCREEN_SCALE_Y(size + 1.0f), SCREEN_SCALE_X(size + 1.0f) + x, SCREEN_SCALE_Y(size + 1.0f) + y), CRGBA(0, 0, 0, alpha));
|
||||
CSprite2d::DrawRect(CRect(x - SCREEN_SCALE_X(size), y - SCREEN_SCALE_Y(size), SCREEN_SCALE_X(size) + x, SCREEN_SCALE_Y(size) + y), CRGBA(red, green, blue, alpha));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#if 1
|
||||
WRAPPER void CRadar::Shutdown() { EAXJMP(0x4A3F60); }
|
||||
#else
|
||||
|
@ -45,6 +45,13 @@ enum eRadarSprite
|
||||
RADAR_SPRITE_COUNT = 21,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
BLIP_MODE_TRIANGULAR_UP = 0,
|
||||
BLIP_MODE_TRIANGULAR_DOWN,
|
||||
BLIP_MODE_SQUARE,
|
||||
};
|
||||
|
||||
struct CBlip
|
||||
{
|
||||
uint32 m_nColor;
|
||||
@ -130,6 +137,7 @@ public:
|
||||
static void SetRadarMarkerState(int32 i, bool flag);
|
||||
static void ShowRadarMarker(CVector pos, uint32 color, float radius);
|
||||
static void ShowRadarTrace(float x, float y, uint32 size, uint8 red, uint8 green, uint8 blue, uint8 alpha);
|
||||
static void ShowRadarTraceWithHeight(float x, float y, uint32 size, uint8 red, uint8 green, uint8 blue, uint8 alpha, uint8 mode);
|
||||
static void Shutdown();
|
||||
static void StreamRadarSections(const CVector &posn);
|
||||
static void StreamRadarSections(int32 x, int32 y);
|
||||
|
@ -160,4 +160,7 @@ enum Config {
|
||||
#define ANIMATE_PED_COL_MODEL
|
||||
#define VC_PED_PORTS
|
||||
#define NEW_WALK_AROUND_ALGORITHM
|
||||
#define CANCELLABLE_CAR_ENTER
|
||||
#define CANCELLABLE_CAR_ENTER
|
||||
|
||||
// Blips
|
||||
#define TRIANGULAR_BLIPS
|
@ -457,6 +457,20 @@ CSprite2d::DrawRectXLU(const CRect &r, const CRGBA &c0, const CRGBA &c1, const C
|
||||
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE);
|
||||
}
|
||||
|
||||
void CSprite2d::Draw2DPolygon(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, const CRGBA &color)
|
||||
{
|
||||
SetVertices(x1, y1, x2, y2, x3, y3, x4, y4, color, color, color, color);
|
||||
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, 0);
|
||||
RwRenderStateSet(rwRENDERSTATESHADEMODE, (void*)rwSHADEMODEFLAT);
|
||||
RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE);
|
||||
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE);
|
||||
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)(color.a != 255));
|
||||
RwIm2DRenderPrimitive(rwPRIMTYPETRIFAN, CSprite2d::maVertices, 4);
|
||||
RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE);
|
||||
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE);
|
||||
RwRenderStateSet(rwRENDERSTATESHADEMODE, (void*)rwSHADEMODEGOURAUD);
|
||||
}
|
||||
|
||||
STARTPATCHES
|
||||
#define C4 const CRGBA&, const CRGBA&, const CRGBA&, const CRGBA&
|
||||
#define F8 float, float, float, float, float, float, float, float
|
||||
|
@ -47,5 +47,7 @@ public:
|
||||
static void DrawRect(const CRect &r, const CRGBA &col);
|
||||
static void DrawRectXLU(const CRect &r, const CRGBA &c0, const CRGBA &c1, const CRGBA &c2, const CRGBA &c3);
|
||||
|
||||
static void Draw2DPolygon(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, const CRGBA &color);
|
||||
|
||||
static RwIm2DVertex* GetVertices() { return maVertices; };
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user