diff options
author | aap <aap@papnet.eu> | 2019-06-20 11:28:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-20 11:28:04 +0200 |
commit | 109cde810c7b6115f864cf3e5005111c17284ab9 (patch) | |
tree | 052fc5a6c687983435f8d0b871b2d9abff31f747 /src/Radar.h | |
parent | finally finished CVehicleModelInfo (diff) | |
parent | Fix bug in templates.h, again. (diff) | |
download | re3-109cde810c7b6115f864cf3e5005111c17284ab9.tar re3-109cde810c7b6115f864cf3e5005111c17284ab9.tar.gz re3-109cde810c7b6115f864cf3e5005111c17284ab9.tar.bz2 re3-109cde810c7b6115f864cf3e5005111c17284ab9.tar.lz re3-109cde810c7b6115f864cf3e5005111c17284ab9.tar.xz re3-109cde810c7b6115f864cf3e5005111c17284ab9.tar.zst re3-109cde810c7b6115f864cf3e5005111c17284ab9.zip |
Diffstat (limited to 'src/Radar.h')
-rw-r--r-- | src/Radar.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/Radar.h b/src/Radar.h index 52d8a883..b71618f1 100644 --- a/src/Radar.h +++ b/src/Radar.h @@ -11,11 +11,89 @@ enum eBlipType BLIP_CONTACT_POINT }; +enum eBlipDisplay +{ + BLIP_DISPLAY_NEITHER = 0, + BLIP_DISPLAY_MARKER_ONLY = 1, + BLIP_DISPLAY_BLIP_ONLY = 2, + BLIP_DISPLAY_BOTH = 3, +}; + +enum eRadarSprite +{ + RADAR_SPRITE_NONE = 0, + RADAR_SPRITE_ASUKA = 1, + RADAR_SPRITE_BOMB = 2, + RADAR_SPRITE_CAT = 3, + RADAR_SPRITE_CENTRE = 4, + RADAR_SPRITE_COPCAR = 5, + RADAR_SPRITE_DON = 6, + RADAR_SPRITE_EIGHT = 7, + RADAR_SPRITE_EL = 8, + RADAR_SPRITE_ICE = 9, + RADAR_SPRITE_JOEY = 10, + RADAR_SPRITE_KENJI = 11, + RADAR_SPRITE_LIZ = 12, + RADAR_SPRITE_LUIGI = 13, + RADAR_SPRITE_NORTH = 14, + RADAR_SPRITE_RAY = 15, + RADAR_SPRITE_SAL = 16, + RADAR_SPRITE_SAVE = 17, + RADAR_SPRITE_SPRAY = 18, + RADAR_SPRITE_TONY = 19, + RADAR_SPRITE_WEAPON = 20, + RADAR_SPRITE_COUNT = 21, +}; + +struct CBlip +{ + int32 m_nColor; + int16 m_eBlipType; // eBlipType + int32 m_nEntityHandle; + CVector2D m_vec2DPos; + CVector m_vecPos; + int16 m_BlipIndex; + int8 m_bDim; + int8 m_bInUse; + float m_Radius; + int16 m_wScale; + int16 m_eBlipDisplay; // eBlipDisplay + int16 m_IconID; // eRadarSprite + char gap_46[2]; +}; + +static_assert(sizeof(CBlip) == 0x30, "CBlip: error"); + class CRadar { + static float cachedSin; + static float cachedCos; + public: static float &m_RadarRange; static CVector2D &vec2DRadarOrigin; + static CBlip *ms_RadarTrace; + static CSprite2d *AsukaSprite; + static CSprite2d *BombSprite; + static CSprite2d *CatSprite; + static CSprite2d *CentreSprite; + static CSprite2d *CopcarSprite; + static CSprite2d *DonSprite; + static CSprite2d *EightSprite; + static CSprite2d *ElSprite; + static CSprite2d *IceSprite; + static CSprite2d *JoeySprite; + static CSprite2d *KenjiSprite; + static CSprite2d *LizSprite; + static CSprite2d *LuigiSprite; + static CSprite2d *NorthSprite; + static CSprite2d *RaySprite; + static CSprite2d *SalSprite; + static CSprite2d *SaveSprite; + static CSprite2d *SpraySprite; + static CSprite2d *TonySprite; + static CSprite2d *WeaponSprite; + static CSprite2d *RadarSprites[21]; public: static void ClearBlipForEntity(eBlipType type, int32 id); @@ -23,5 +101,14 @@ public: static void DrawMap(); static void TransformRadarPointToScreenSpace(CVector2D * out, CVector2D * in); static void DrawBlips(); + static bool DisplayThisBlip(int16 spriteid); + static int CalculateBlipAlpha(float dist); + static CRGBA GetRadarTraceColour(uint32 color, bool bright); static void DrawRadarMap(); + static void DrawRotatingRadarSprite(CSprite2d* sprite, float x, float y, float angle, int alpha); + static void TransformRealWorldPointToRadarSpace(CVector2D *out, CVector2D *in); + static float LimitRadarPoint(CVector2D *point); + static void DrawRadarSprite(int sprite, float x, float y, int alpha); + static void ShowRadarMarker(CVector pos, CRGBA color, float radius); + static void ShowRadarTrace(float x, float y, uint32 size, uint32 red, uint32 green, uint32 blue, uint32 alpha); }; |