mirror of
https://github.com/halpz/re3.git
synced 2024-12-22 17:35:29 +00:00
Update HUD stuff, bug and format fixes.
Added environment variables to premake5.lua. Update README.md
This commit is contained in:
parent
d92c9085da
commit
f299e9ebd5
|
@ -177,3 +177,10 @@ but here are some observations:
|
||||||
* do *not* use `dw` for `DWORD` or so, we're not programming win32
|
* do *not* use `dw` for `DWORD` or so, we're not programming win32
|
||||||
|
|
||||||
* Generally, try to make the code look as if R* could have written it
|
* Generally, try to make the code look as if R* could have written it
|
||||||
|
|
||||||
|
# Environment Variables
|
||||||
|
Here you can find a list of variables that you might need to set in windows:
|
||||||
|
```
|
||||||
|
"GTA_III_RE_DIR" * path to "gta3_re" game folder usually where this plugin run.
|
||||||
|
"GTA_III_DIR)" * path to "GTAIII" game folder.
|
||||||
|
```
|
||||||
|
|
14
premake5.lua
14
premake5.lua
|
@ -42,9 +42,9 @@ project "re3"
|
||||||
defines { "DEBUG" }
|
defines { "DEBUG" }
|
||||||
staticruntime "on"
|
staticruntime "on"
|
||||||
symbols "On"
|
symbols "On"
|
||||||
debugdir "C:/Users/aap/games/gta3_re"
|
debugdir "$(GTA_III_RE_DIR)"
|
||||||
debugcommand "C:/Users/aap/games/gta3_re/gta3.exe"
|
debugcommand "$(GTA_III_RE_DIR)/gta3.exe"
|
||||||
postbuildcommands "copy /y \"$(TargetPath)\" \"C:\\Users\\aap\\games\\gta3_re\\plugins\\re3.dll\""
|
postbuildcommands "copy /y \"$(TargetPath)\" \"$(GTA_III_RE_DIR)\\plugins\\re3.dll\""
|
||||||
|
|
||||||
filter "configurations:Release"
|
filter "configurations:Release"
|
||||||
defines { "NDEBUG" }
|
defines { "NDEBUG" }
|
||||||
|
@ -52,16 +52,16 @@ project "re3"
|
||||||
staticruntime "on"
|
staticruntime "on"
|
||||||
debugdir "C:/Users/aap/games/gta3_re"
|
debugdir "C:/Users/aap/games/gta3_re"
|
||||||
debugcommand "C:/Users/aap/games/gta3_re/gta3.exe"
|
debugcommand "C:/Users/aap/games/gta3_re/gta3.exe"
|
||||||
postbuildcommands "copy /y \"$(TargetPath)\" \"C:\\Users\\aap\\games\\gta3_re\\plugins\\re3.dll\""
|
postbuildcommands "copy /y \"$(TargetPath)\" \"$(GTA_III_RE_DIR)\\plugins\\re3.dll\""
|
||||||
filter "configurations:ReleaseFH"
|
filter "configurations:ReleaseFH"
|
||||||
defines { "NDEBUG" }
|
defines { "NDEBUG" }
|
||||||
symbols "Full"
|
symbols "Full"
|
||||||
optimize "off"
|
optimize "off"
|
||||||
staticruntime "on"
|
staticruntime "on"
|
||||||
debugdir "F:/Rockstar Games/GTAIII"
|
debugdir "$(GTA_III_DIR)"
|
||||||
debugcommand "F:/Rockstar Games/GTAIII/gta3.exe"
|
debugcommand "$(GTA_III_DIR)/gta3.exe"
|
||||||
targetextension ".asi"
|
targetextension ".asi"
|
||||||
targetdir "F:/Rockstar Games/GTAIII/scripts"
|
targetdir "$(GTA_III_DIR)/scripts"
|
||||||
filter "configurations:DebugCI"
|
filter "configurations:DebugCI"
|
||||||
defines { "DEBUG" }
|
defines { "DEBUG" }
|
||||||
symbols "On"
|
symbols "On"
|
||||||
|
|
|
@ -1249,7 +1249,8 @@ CCam::FixCamWhenObscuredByVehicle(const CVector &TargetCoors)
|
||||||
Source.z += HeightFixerCarsObscuring;
|
Source.z += HeightFixerCarsObscuring;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CCam::Using3rdPersonMouseCam() {
|
bool CCam::Using3rdPersonMouseCam()
|
||||||
|
{
|
||||||
return CCamera::m_bUseMouse3rdPerson &&
|
return CCamera::m_bUseMouse3rdPerson &&
|
||||||
(Mode == MODE_FOLLOWPED ||
|
(Mode == MODE_FOLLOWPED ||
|
||||||
TheCamera.m_bPlayerIsInGarage &&
|
TheCamera.m_bPlayerIsInGarage &&
|
||||||
|
|
|
@ -37,15 +37,15 @@ WRAPPER void CMenuManager::LoadSettings(void) { EAXJMP(0x488EE0); }
|
||||||
WRAPPER void CMenuManager::WaitForUserCD(void) { EAXJMP(0x48ADD0); }
|
WRAPPER void CMenuManager::WaitForUserCD(void) { EAXJMP(0x48ADD0); }
|
||||||
|
|
||||||
int CMenuManager::FadeIn(int alpha) {
|
int CMenuManager::FadeIn(int alpha) {
|
||||||
if (FrontEndMenuManager.m_nCurrScreen == MENU_LOADING_IN_PROGRESS ||
|
if (m_nCurrScreen == MENU_LOADING_IN_PROGRESS ||
|
||||||
FrontEndMenuManager.m_nCurrScreen == MENU_SAVING_IN_PROGRESS ||
|
m_nCurrScreen == MENU_SAVING_IN_PROGRESS ||
|
||||||
FrontEndMenuManager.m_nCurrScreen == MENU_DELETING)
|
m_nCurrScreen == MENU_DELETING)
|
||||||
return alpha;
|
return alpha;
|
||||||
|
|
||||||
if (FrontEndMenuManager.m_nMenuFadeAlpha >= alpha)
|
if (m_nMenuFadeAlpha >= alpha)
|
||||||
return alpha;
|
return alpha;
|
||||||
|
|
||||||
return FrontEndMenuManager.m_nMenuFadeAlpha;
|
return m_nMenuFadeAlpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
STARTPATCHES
|
STARTPATCHES
|
||||||
|
|
|
@ -15,7 +15,8 @@ WRAPPER void CRadar::DrawRadarMap() { EAXJMP(0x4A6C20); }
|
||||||
float &CRadar::m_RadarRange = *(float*)0x8E281C;
|
float &CRadar::m_RadarRange = *(float*)0x8E281C;
|
||||||
CVector2D &CRadar::vec2DRadarOrigin = *(CVector2D*)0x6299B8;
|
CVector2D &CRadar::vec2DRadarOrigin = *(CVector2D*)0x6299B8;
|
||||||
|
|
||||||
void CRadar::DrawMap() {
|
void CRadar::DrawMap()
|
||||||
|
{
|
||||||
if (!TheCamera.m_WideScreenOn && CHud::m_Wants_To_Draw_Hud) {
|
if (!TheCamera.m_WideScreenOn && CHud::m_Wants_To_Draw_Hud) {
|
||||||
if (FindPlayerVehicle()) {
|
if (FindPlayerVehicle()) {
|
||||||
if (FindPlayerVehicle()->GetSpeed().Magnitude() > 0.3f) {
|
if (FindPlayerVehicle()->GetSpeed().Magnitude() > 0.3f) {
|
||||||
|
@ -24,20 +25,20 @@ void CRadar::DrawMap() {
|
||||||
else
|
else
|
||||||
CRadar::m_RadarRange = (FindPlayerVehicle()->GetSpeed().Magnitude() + 0.3f) * 200.0f;
|
CRadar::m_RadarRange = (FindPlayerVehicle()->GetSpeed().Magnitude() + 0.3f) * 200.0f;
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
CRadar::m_RadarRange = 120.0f;
|
CRadar::m_RadarRange = 120.0f;
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
else {
|
|
||||||
CRadar::m_RadarRange = 120.0f;
|
CRadar::m_RadarRange = 120.0f;
|
||||||
}
|
|
||||||
vec2DRadarOrigin.x = FindPlayerCentreOfWorld_NoSniperShift().x;
|
vec2DRadarOrigin.x = FindPlayerCentreOfWorld_NoSniperShift().x;
|
||||||
vec2DRadarOrigin.y = FindPlayerCentreOfWorld_NoSniperShift().y;
|
vec2DRadarOrigin.y = FindPlayerCentreOfWorld_NoSniperShift().y;
|
||||||
CRadar::DrawRadarMap();
|
CRadar::DrawRadarMap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRadar::TransformRadarPointToScreenSpace(CVector2D *out, CVector2D *in) {
|
void CRadar::TransformRadarPointToScreenSpace(CVector2D *out, CVector2D *in)
|
||||||
|
{
|
||||||
out->x = in->x * HUD_STRETCH_X(47.0f) + HUD_STRETCH_X(47.0f + 20.0f);
|
out->x = in->x * HUD_STRETCH_X(47.0f) + HUD_STRETCH_X(47.0f + 20.0f);
|
||||||
out->y = (HUD_STRETCH_Y(76.0f)) * 0.5f + SCREEN_HEIGHT - (HUD_STRETCH_Y(123.0f)) - in->y * (HUD_STRETCH_Y(76.0f)) * 0.5f;
|
out->y = (HUD_STRETCH_Y(76.0f)) * 0.5f + SCREEN_HEIGHT - (HUD_STRETCH_Y(123.0f)) - in->y * (HUD_STRETCH_Y(76.0f)) * 0.5f;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
#include "Entity.h"
|
#include "Entity.h"
|
||||||
#include "math/Vector.h"
|
#include "math/Vector.h"
|
||||||
|
|
||||||
enum eCrimeType {
|
enum eCrimeType
|
||||||
|
{
|
||||||
CRIME_NONE,
|
CRIME_NONE,
|
||||||
CRIME_SHOT_FIRED,
|
CRIME_SHOT_FIRED,
|
||||||
CRIME_PED_FIGHT,
|
CRIME_PED_FIGHT,
|
||||||
|
@ -22,7 +23,8 @@ enum eCrimeType {
|
||||||
CRIME_DESTROYED_CESSNA,
|
CRIME_DESTROYED_CESSNA,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum eCopType {
|
enum eCopType
|
||||||
|
{
|
||||||
COP_STREET = 0,
|
COP_STREET = 0,
|
||||||
COP_FBI = 1,
|
COP_FBI = 1,
|
||||||
COP_SWAT = 2,
|
COP_SWAT = 2,
|
||||||
|
|
|
@ -16,7 +16,8 @@ int &gRetuneCounter = *(int*)0x650B84;
|
||||||
|
|
||||||
//WRAPPER void cMusicManager::DisplayRadioStationName(void) { EAXJMP(0x57E6D0); }
|
//WRAPPER void cMusicManager::DisplayRadioStationName(void) { EAXJMP(0x57E6D0); }
|
||||||
|
|
||||||
bool cMusicManager::PlayerInCar() {
|
bool cMusicManager::PlayerInCar()
|
||||||
|
{
|
||||||
if (!FindPlayerVehicle())
|
if (!FindPlayerVehicle())
|
||||||
return false;
|
return false;
|
||||||
else {
|
else {
|
||||||
|
@ -25,7 +26,6 @@ bool cMusicManager::PlayerInCar() {
|
||||||
if (State == PED_DRAG_FROM_CAR || State == PED_EXIT_CAR || State == PED_ARRESTED)
|
if (State == PED_DRAG_FROM_CAR || State == PED_EXIT_CAR || State == PED_ARRESTED)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
int16 Model = FindPlayerVehicle()->m_modelIndex;
|
|
||||||
switch (FindPlayerVehicle()->m_modelIndex) {
|
switch (FindPlayerVehicle()->m_modelIndex) {
|
||||||
case MI_FIRETRUCK:
|
case MI_FIRETRUCK:
|
||||||
case MI_AMBULAN:
|
case MI_AMBULAN:
|
||||||
|
@ -42,8 +42,9 @@ bool cMusicManager::PlayerInCar() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cMusicManager::DisplayRadioStationName() {
|
void cMusicManager::DisplayRadioStationName()
|
||||||
wchar* RadioName = nullptr;
|
{
|
||||||
|
wchar *RadioName = nullptr;
|
||||||
uint32 RadioStation = gNumRetunePresses + MusicManager.m_nCurrentStreamedSound;
|
uint32 RadioStation = gNumRetunePresses + MusicManager.m_nCurrentStreamedSound;
|
||||||
|
|
||||||
switch (RadioStation) {
|
switch (RadioStation) {
|
||||||
|
@ -84,11 +85,11 @@ void cMusicManager::DisplayRadioStationName() {
|
||||||
|
|
||||||
CFont::SetJustifyOff();
|
CFont::SetJustifyOff();
|
||||||
CFont::SetBackgroundOff();
|
CFont::SetBackgroundOff();
|
||||||
CFont::SetScale(SCREEN_STRETCH_X(0.8f), SCREEN_STRETCH_Y(1.35f));
|
CFont::SetScale(HUD_STRETCH_X(0.8f), HUD_STRETCH_Y(1.35f));
|
||||||
CFont::SetPropOn();
|
CFont::SetPropOn();
|
||||||
CFont::SetFontStyle(FONT_HEADING);
|
CFont::SetFontStyle(FONT_HEADING);
|
||||||
CFont::SetCentreOn();
|
CFont::SetCentreOn();
|
||||||
CFont::SetCentreSize(SCREEN_STRETCH_X(640.0f));;
|
CFont::SetCentreSize(HUD_STRETCH_X(640.0f));;
|
||||||
|
|
||||||
static int32 nTime = 0;
|
static int32 nTime = 0;
|
||||||
if (!CTimer::GetIsPaused() && !TheCamera.m_WideScreenOn && MusicManager.PlayerInCar()) {
|
if (!CTimer::GetIsPaused() && !TheCamera.m_WideScreenOn && MusicManager.PlayerInCar()) {
|
||||||
|
@ -105,31 +106,34 @@ void cMusicManager::DisplayRadioStationName() {
|
||||||
else {
|
else {
|
||||||
if (RadioStation > HEAD_RADIO) {
|
if (RadioStation > HEAD_RADIO) {
|
||||||
if (cSampleManager.IsMP3RadioChannelAvailable()) {
|
if (cSampleManager.IsMP3RadioChannelAvailable()) {
|
||||||
if (RadioStation > USERTRACK)
|
if (RadioStation > USERTRACK) {
|
||||||
RadioStation = RADIO_OFF;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (RadioStation > CHATTERBOX)
|
|
||||||
RadioStation = RADIO_OFF;
|
RadioStation = RADIO_OFF;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
if (RadioStation > CHATTERBOX) {
|
||||||
RadioStation = RADIO_OFF;
|
RadioStation = RADIO_OFF;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
RadioStation = RADIO_OFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (RadioName) {
|
if (RadioName) {
|
||||||
CFont::SetColor(CRGBA(0, 0, 0, 255));
|
CFont::SetColor(CRGBA(0, 0, 0, 255));
|
||||||
|
|
||||||
CFont::PrintString(SCREEN_WIDTH / 2, SCREEN_STRETCH_Y(23.0f), RadioName);
|
CFont::PrintString(SCREEN_WIDTH / 2, HUD_STRETCH_Y(23.0f), RadioName);
|
||||||
|
|
||||||
if (gNumRetunePresses)
|
if (gNumRetunePresses)
|
||||||
CFont::SetColor(CRGBA(102, 133, 143, 255));
|
CFont::SetColor(CRGBA(102, 133, 143, 255));
|
||||||
else
|
else
|
||||||
CFont::SetColor(CRGBA(147, 196, 211, 255));
|
CFont::SetColor(CRGBA(147, 196, 211, 255));
|
||||||
|
|
||||||
CFont::PrintString(SCREEN_WIDTH / 2, SCREEN_STRETCH_Y(22.0f), RadioName);
|
CFont::PrintString(SCREEN_WIDTH / 2, HUD_STRETCH_Y(22.0f), RadioName);
|
||||||
CFont::DrawFonts();
|
CFont::DrawFonts();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
enum eRadioStation {
|
enum eRadioStation
|
||||||
|
{
|
||||||
HEAD_RADIO,
|
HEAD_RADIO,
|
||||||
DOUBLE_CLEF,
|
DOUBLE_CLEF,
|
||||||
JAH_RADIO,
|
JAH_RADIO,
|
||||||
|
@ -15,7 +16,8 @@ enum eRadioStation {
|
||||||
RADIO_OFF,
|
RADIO_OFF,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum eStreamedSounds {
|
enum eStreamedSounds
|
||||||
|
{
|
||||||
STREAMED_SOUND_RADIO_HEAD = 0,
|
STREAMED_SOUND_RADIO_HEAD = 0,
|
||||||
STREAMED_SOUND_RADIO_CLASSIC = 1,
|
STREAMED_SOUND_RADIO_CLASSIC = 1,
|
||||||
STREAMED_SOUND_RADIO_KJAH = 2,
|
STREAMED_SOUND_RADIO_KJAH = 2,
|
||||||
|
@ -216,7 +218,8 @@ enum eStreamedSounds {
|
||||||
NO_STREAMED_SOUND = 197,
|
NO_STREAMED_SOUND = 197,
|
||||||
};
|
};
|
||||||
|
|
||||||
class tMP3Sample {
|
class tMP3Sample
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
uint32 m_nLength;
|
uint32 m_nLength;
|
||||||
uint32 m_nPosition;
|
uint32 m_nPosition;
|
||||||
|
|
|
@ -138,6 +138,7 @@ void mysrand(unsigned int seed);
|
||||||
|
|
||||||
extern uint8 work_buff[55000];
|
extern uint8 work_buff[55000];
|
||||||
extern char gString[256];
|
extern char gString[256];
|
||||||
|
extern wchar *gUString;
|
||||||
|
|
||||||
void re3_debug(char *format, ...);
|
void re3_debug(char *format, ...);
|
||||||
void re3_trace(const char *filename, unsigned int lineno, const char *func, char *format, ...);
|
void re3_trace(const char *filename, unsigned int lineno, const char *func, char *format, ...);
|
||||||
|
|
|
@ -6,6 +6,7 @@ WRAPPER void CDarkel::DrawMessages(void) { EAXJMP(0x420920); }
|
||||||
|
|
||||||
bool CDarkel::Status = *(bool*)0x95CCB4;
|
bool CDarkel::Status = *(bool*)0x95CCB4;
|
||||||
|
|
||||||
bool CDarkel::FrenzyOnGoing() {
|
bool CDarkel::FrenzyOnGoing()
|
||||||
|
{
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
|
@ -2,8 +2,29 @@
|
||||||
#include "patcher.h"
|
#include "patcher.h"
|
||||||
#include "ModelIndices.h"
|
#include "ModelIndices.h"
|
||||||
#include "Garages.h"
|
#include "Garages.h"
|
||||||
|
#include "Timer.h"
|
||||||
|
#include "Font.h"
|
||||||
|
#include "Messages.h"
|
||||||
|
#include "Text.h"
|
||||||
|
|
||||||
WRAPPER void CGarages::PrintMessages(void) { EAXJMP(0x426310); }
|
//WRAPPER void CGarages::PrintMessages(void) { EAXJMP(0x426310); }
|
||||||
|
|
||||||
|
int32 &CGarages::BankVansCollected = *(int32 *)0x8F1B34;
|
||||||
|
bool &CGarages::BombsAreFree = *(bool *)0x95CD7A;
|
||||||
|
bool &CGarages::RespraysAreFree = *(bool *)0x95CD1D;
|
||||||
|
int32 &CGarages::CarsCollected = *(int32 *)0x880E18;
|
||||||
|
int32 &CGarages::CarTypesCollected = *(int32 *)0x8E286C;
|
||||||
|
int32 &CGarages::CrushedCarId = *(int32 *)0x943060;
|
||||||
|
uint32 &CGarages::LastTimeHelpMessage = *(uint32 *)0x8F1B58;
|
||||||
|
int32 &CGarages::MessageNumberInString = *(int32 *)0x885BA8;
|
||||||
|
const char *CGarages::MessageIDString = (const char *)0x878358;
|
||||||
|
int32 &CGarages::MessageNumberInString2 = *(int32 *)0x8E2C14;
|
||||||
|
uint32 &CGarages::MessageStartTime = *(uint32 *)0x8F2530;
|
||||||
|
uint32 &CGarages::MessageEndTime = *(uint32 *)0x8F597C;
|
||||||
|
uint32 &CGarages::NumGarages = *(uint32 *)0x8F29F4;
|
||||||
|
bool &CGarages::PlayerInGarage = *(bool *)0x95CD83;
|
||||||
|
int32 &CGarages::PoliceCarsCollected = *(int32 *)0x941444;
|
||||||
|
uint32 &CGarages::GarageToBeTidied = *(uint32 *)0x623570;
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CGarages::IsModelIndexADoor(uint32 id)
|
CGarages::IsModelIndexADoor(uint32 id)
|
||||||
|
@ -42,3 +63,44 @@ CGarages::IsModelIndexADoor(uint32 id)
|
||||||
id == MI_CRUSHERBODY ||
|
id == MI_CRUSHERBODY ||
|
||||||
id == MI_CRUSHERLID;
|
id == MI_CRUSHERLID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CGarages::PrintMessages()
|
||||||
|
{
|
||||||
|
if (CTimer::GetTimeInMilliseconds() > CGarages::MessageStartTime && CTimer::GetTimeInMilliseconds() < CGarages::MessageEndTime) {
|
||||||
|
CFont::SetScale(HUD_STRETCH_X(1.2f / 2), HUD_STRETCH_Y(1.5f / 2)); // BUG: game doesn't use macro here.
|
||||||
|
CFont::SetPropOn();
|
||||||
|
CFont::SetJustifyOff();
|
||||||
|
CFont::SetBackgroundOff();
|
||||||
|
CFont::SetCentreSize(HUD_FROM_RIGHT(50.0f));
|
||||||
|
CFont::SetCentreOn();
|
||||||
|
CFont::SetFontStyle(FONT_BANK);
|
||||||
|
|
||||||
|
if (CGarages::MessageNumberInString2 < 0) {
|
||||||
|
if (CGarages::MessageNumberInString < 0) {
|
||||||
|
CFont::SetColor(CRGBA(0, 0, 0, 255));
|
||||||
|
CFont::PrintString((SCREEN_WIDTH/ 2) + HUD_STRETCH_X(2.0f), (SCREEN_HEIGHT / 2) + HUD_STRETCH_Y(-84.0f), TheText.Get(CGarages::MessageIDString));
|
||||||
|
|
||||||
|
CFont::SetColor(CRGBA(89, 115, 150, 255));
|
||||||
|
CFont::PrintString((SCREEN_WIDTH / 2), (SCREEN_HEIGHT / 2) + HUD_STRETCH_Y(-84.0f), TheText.Get(CGarages::MessageIDString));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CMessages::InsertNumberInString(TheText.Get(CGarages::MessageIDString), CGarages::MessageNumberInString, -1, -1, -1, -1, -1, gUString);
|
||||||
|
|
||||||
|
CFont::SetColor(CRGBA(0, 0, 0, 255));
|
||||||
|
CFont::PrintString((SCREEN_WIDTH / 2) + HUD_STRETCH_X(2.0f), (SCREEN_HEIGHT / 2) + HUD_STRETCH_Y(-84.0f + 2.0 - 40.0f), gUString);
|
||||||
|
|
||||||
|
CFont::SetColor(CRGBA(89, 115, 150, 255));
|
||||||
|
CFont::PrintString((SCREEN_WIDTH / 2), (SCREEN_HEIGHT / 2) + HUD_STRETCH_Y(-84.0f - 40.0f), gUString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CMessages::InsertNumberInString(TheText.Get(CGarages::MessageIDString), CGarages::MessageNumberInString2, -1, -1, -1, -1, -1, gUString);
|
||||||
|
|
||||||
|
CFont::SetColor(CRGBA(0, 0, 0, 255));
|
||||||
|
CFont::PrintString((SCREEN_WIDTH / 2) + HUD_STRETCH_X(2.0f), (SCREEN_HEIGHT / 2) + HUD_STRETCH_Y(-84.0f + 2.0 - 40.0f), gUString);
|
||||||
|
|
||||||
|
CFont::SetColor(CRGBA(89, 115, 150, 255));
|
||||||
|
CFont::PrintString((SCREEN_WIDTH / 2), (SCREEN_HEIGHT / 2) + HUD_STRETCH_Y(-84.0f - 40.0f), gUString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,6 +2,24 @@
|
||||||
|
|
||||||
class CGarages
|
class CGarages
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
static int32 &BankVansCollected;
|
||||||
|
static bool &BombsAreFree;
|
||||||
|
static bool &RespraysAreFree;
|
||||||
|
static int32 &CarsCollected;
|
||||||
|
static int32 &CarTypesCollected;
|
||||||
|
static int32 &CrushedCarId;
|
||||||
|
static uint32 &LastTimeHelpMessage;
|
||||||
|
static int32 &MessageNumberInString;
|
||||||
|
static const char *MessageIDString;
|
||||||
|
static int32 &MessageNumberInString2;
|
||||||
|
static uint32 &MessageStartTime;
|
||||||
|
static uint32 &MessageEndTime;
|
||||||
|
static uint32 &NumGarages;
|
||||||
|
static bool &PlayerInGarage;
|
||||||
|
static int32 &PoliceCarsCollected;
|
||||||
|
static uint32 &GarageToBeTidied;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static bool IsModelIndexADoor(uint32 id);
|
static bool IsModelIndexADoor(uint32 id);
|
||||||
static void PrintMessages(void);
|
static void PrintMessages(void);
|
||||||
|
|
|
@ -2,18 +2,21 @@
|
||||||
#include "Automobile.h"
|
#include "Automobile.h"
|
||||||
#include "PlayerPed.h"
|
#include "PlayerPed.h"
|
||||||
|
|
||||||
enum eWastedBustedState {
|
enum eWastedBustedState
|
||||||
WBSTATE_PLAYING = 0x0,
|
{
|
||||||
WBSTATE_WASTED = 0x1,
|
WBSTATE_PLAYING,
|
||||||
WBSTATE_BUSTED = 0x2,
|
WBSTATE_WASTED,
|
||||||
WBSTATE_FAILED_CRITICAL_MISSION = 0x3,
|
WBSTATE_BUSTED,
|
||||||
|
WBSTATE_FAILED_CRITICAL_MISSION,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CCivilianPed {
|
struct CCivilianPed
|
||||||
|
{
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class CPlayerInfo {
|
class CPlayerInfo
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
CPlayerPed *m_pPed;
|
CPlayerPed *m_pPed;
|
||||||
CVehicle *m_pRemoteVehicle;
|
CVehicle *m_pRemoteVehicle;
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
#include "Ped.h"
|
#include "Ped.h"
|
||||||
#include "Wanted.h"
|
#include "Wanted.h"
|
||||||
|
|
||||||
class CPlayerPed : public CPed {
|
class CPlayerPed : public CPed
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
CWanted *m_pWanted;
|
CWanted *m_pWanted;
|
||||||
CCopPed *m_pArrestingCop;
|
CCopPed *m_pArrestingCop;
|
||||||
|
|
18
src/main.cpp
18
src/main.cpp
|
@ -57,6 +57,7 @@
|
||||||
|
|
||||||
uint8 work_buff[55000];
|
uint8 work_buff[55000];
|
||||||
char gString[256];
|
char gString[256];
|
||||||
|
wchar *gUString = (wchar*)0x74B018;
|
||||||
|
|
||||||
bool &b_FoundRecentSavedGameWantToLoad = *(bool*)0x95CDA8;
|
bool &b_FoundRecentSavedGameWantToLoad = *(bool*)0x95CDA8;
|
||||||
|
|
||||||
|
@ -322,15 +323,16 @@ Render2dStuff(void)
|
||||||
CRGBA black(0, 0, 0, 255);
|
CRGBA black(0, 0, 0, 255);
|
||||||
|
|
||||||
// top and bottom strips
|
// top and bottom strips
|
||||||
if(weaponType == WEAPONTYPE_ROCKETLAUNCHER){
|
if (weaponType == WEAPONTYPE_ROCKETLAUNCHER) {
|
||||||
CSprite2d::DrawRect(CRect(0.0f, 0.0f, SCREENW, SCREENH/2 - SCREEN_STRETCH_Y(180)), black);
|
CSprite2d::DrawRect(CRect(0.0f, 0.0f, SCREENW, SCREENH / 2 - HUD_STRETCH_Y(180)), black);
|
||||||
CSprite2d::DrawRect(CRect(0.0f, SCREENH/2 + SCREEN_STRETCH_Y(170), SCREENW, SCREENH), black);
|
CSprite2d::DrawRect(CRect(0.0f, SCREENH / 2 + HUD_STRETCH_Y(170), SCREENW, SCREENH), black);
|
||||||
}else{
|
|
||||||
CSprite2d::DrawRect(CRect(0.0f, 0.0f, SCREENW, SCREENH/2 - SCREEN_STRETCH_Y(210)), black);
|
|
||||||
CSprite2d::DrawRect(CRect(0.0f, SCREENH/2 + SCREEN_STRETCH_Y(210), SCREENW, SCREENH), black);
|
|
||||||
}
|
}
|
||||||
CSprite2d::DrawRect(CRect(0.0f, 0.0f, SCREENW/2 - SCREEN_STRETCH_X(210), SCREENH), black);
|
else {
|
||||||
CSprite2d::DrawRect(CRect(SCREENW/2 + SCREEN_STRETCH_X(210), 0.0f, SCREENW, SCREENH), black);
|
CSprite2d::DrawRect(CRect(0.0f, 0.0f, SCREENW, SCREENH / 2 - HUD_STRETCH_Y(210)), black);
|
||||||
|
CSprite2d::DrawRect(CRect(0.0f, SCREENH / 2 + HUD_STRETCH_Y(210), SCREENW, SCREENH), black);
|
||||||
|
}
|
||||||
|
CSprite2d::DrawRect(CRect(0.0f, 0.0f, SCREENW / 2 - HUD_STRETCH_X(210), SCREENH), black);
|
||||||
|
CSprite2d::DrawRect(CRect(SCREENW / 2 + HUD_STRETCH_X(210), 0.0f, SCREENW, SCREENH), black);
|
||||||
}
|
}
|
||||||
|
|
||||||
MusicManager.DisplayRadioStationName();
|
MusicManager.DisplayRadioStationName();
|
||||||
|
|
|
@ -24,10 +24,10 @@
|
||||||
//WRAPPER void CHud::DrawAfterFade(void) { EAXJMP(0x509030); }
|
//WRAPPER void CHud::DrawAfterFade(void) { EAXJMP(0x509030); }
|
||||||
WRAPPER void CHud::ReInitialise(void) { EAXJMP(0x504CC0); }
|
WRAPPER void CHud::ReInitialise(void) { EAXJMP(0x504CC0); }
|
||||||
WRAPPER void CHud::GetRidOfAllHudMessages(void) { EAXJMP(0x504F90); }
|
WRAPPER void CHud::GetRidOfAllHudMessages(void) { EAXJMP(0x504F90); }
|
||||||
WRAPPER void CHud::SetHelpMessage(wchar* message, bool quick) { EAXJMP(0x5051E0); }
|
WRAPPER void CHud::SetHelpMessage(wchar *message, bool quick) { EAXJMP(0x5051E0); }
|
||||||
WRAPPER void CHud::SetMessage(wchar* message) { EAXJMP(0x50A210); }
|
WRAPPER void CHud::SetMessage(wchar *message) { EAXJMP(0x50A210); }
|
||||||
WRAPPER void CHud::SetBigMessage(wchar* message, int16 style) { EAXJMP(0x50A250); }
|
WRAPPER void CHud::SetBigMessage(wchar *message, int16 style) { EAXJMP(0x50A250); }
|
||||||
WRAPPER void CHud::SetPagerMessage(wchar* message) { EAXJMP(0x50A320); }
|
WRAPPER void CHud::SetPagerMessage(wchar *message) { EAXJMP(0x50A320); }
|
||||||
|
|
||||||
wchar *CHud::m_HelpMessage = (wchar*)0x86B888;
|
wchar *CHud::m_HelpMessage = (wchar*)0x86B888;
|
||||||
wchar *CHud::m_LastHelpMessage = (wchar*)0x6E8F28;
|
wchar *CHud::m_LastHelpMessage = (wchar*)0x6E8F28;
|
||||||
|
@ -42,17 +42,17 @@ bool &CHud::m_bHelpMessageQuick = *(bool *)0x95CCF7;
|
||||||
int32 CHud::m_ZoneState = *(int32*)0x8F29AC;
|
int32 CHud::m_ZoneState = *(int32*)0x8F29AC;
|
||||||
int32 CHud::m_ZoneFadeTimer;
|
int32 CHud::m_ZoneFadeTimer;
|
||||||
int32 CHud::m_ZoneNameTimer = *(int32*)0x8F1A50;
|
int32 CHud::m_ZoneNameTimer = *(int32*)0x8F1A50;
|
||||||
wchar* &CHud::m_pZoneName = *(wchar **)0x8E2C2C;
|
wchar *&CHud::m_pZoneName = *(wchar **)0x8E2C2C;
|
||||||
wchar* CHud::m_pLastZoneName = (wchar*)0x8F432C;
|
wchar *CHud::m_pLastZoneName = (wchar*)0x8F432C;
|
||||||
wchar* CHud::m_ZoneToPrint;
|
wchar *CHud::m_ZoneToPrint;
|
||||||
int32 CHud::m_VehicleState = *(int32*)0x940560;
|
int32 CHud::m_VehicleState = *(int32*)0x940560;
|
||||||
int32 CHud::m_VehicleFadeTimer;
|
int32 CHud::m_VehicleFadeTimer;
|
||||||
int32 CHud::m_VehicleNameTimer = *(int32*)0x8F2A14;
|
int32 CHud::m_VehicleNameTimer = *(int32*)0x8F2A14;
|
||||||
wchar* &CHud::m_pVehicleName = *(wchar **)0x942FB4;
|
wchar *&CHud::m_pVehicleName = *(wchar **)0x942FB4;
|
||||||
wchar* CHud::m_pLastVehicleName = *(wchar **)0x8E2DD8;
|
wchar *CHud::m_pLastVehicleName = *(wchar **)0x8E2DD8;
|
||||||
wchar* CHud::m_pVehicleNameToPrint;
|
wchar *CHud::m_pVehicleNameToPrint;
|
||||||
wchar* CHud::m_Message = (wchar*)0x72E318;
|
wchar *CHud::m_Message = (wchar*)0x72E318;
|
||||||
wchar* CHud::m_PagerMessage = (wchar*)0x878840;
|
wchar *CHud::m_PagerMessage = (wchar*)0x878840;
|
||||||
bool &CHud::m_Wants_To_Draw_Hud = *(bool*)0x95CD89;
|
bool &CHud::m_Wants_To_Draw_Hud = *(bool*)0x95CD89;
|
||||||
bool &CHud::m_Wants_To_Draw_3dMarkers = *(bool*)0x95CD62;
|
bool &CHud::m_Wants_To_Draw_3dMarkers = *(bool*)0x95CD62;
|
||||||
wchar(*CHud::m_BigMessage)[128] = (wchar(*)[128])0x664CE0;
|
wchar(*CHud::m_BigMessage)[128] = (wchar(*)[128])0x664CE0;
|
||||||
|
@ -125,10 +125,11 @@ char *WeaponFilenames[] = {
|
||||||
"siterocketm"
|
"siterocketm"
|
||||||
};
|
};
|
||||||
|
|
||||||
RwTexture* gpSniperSightTex = (RwTexture*)0x8F5834;
|
RwTexture *&gpSniperSightTex = *(RwTexture**)0x8F5834;
|
||||||
RwTexture* gpRocketSightTex = (RwTexture*)0x8E2C20;
|
RwTexture *&gpRocketSightTex = *(RwTexture**)0x8E2C20;
|
||||||
|
|
||||||
void CHud::Initialise() {
|
void CHud::Initialise()
|
||||||
|
{
|
||||||
ReInitialise();
|
ReInitialise();
|
||||||
|
|
||||||
int HudTXD = CTxdStore::AddTxdSlot("hud");
|
int HudTXD = CTxdStore::AddTxdSlot("hud");
|
||||||
|
@ -147,8 +148,9 @@ void CHud::Initialise() {
|
||||||
CTxdStore::PopCurrentTxd();
|
CTxdStore::PopCurrentTxd();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHud::Shutdown() {
|
void CHud::Shutdown()
|
||||||
for (int i = 0; i < 23; ++i) {
|
{
|
||||||
|
for (int i = 0; i < ARRAY_SIZE(WeaponFilenames) / 2; ++i) {
|
||||||
Sprites[i].Delete();
|
Sprites[i].Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,15 +164,18 @@ void CHud::Shutdown() {
|
||||||
CTxdStore::RemoveTxdSlot(HudTXD);
|
CTxdStore::RemoveTxdSlot(HudTXD);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHud::SetVehicleName(wchar* name) {
|
void CHud::SetVehicleName(wchar *name)
|
||||||
|
{
|
||||||
m_pVehicleName = name;
|
m_pVehicleName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHud::SetZoneName(wchar* name) {
|
void CHud::SetZoneName(wchar *name)
|
||||||
|
{
|
||||||
m_pZoneName = name;
|
m_pZoneName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHud::Draw() {
|
void CHud::Draw()
|
||||||
|
{
|
||||||
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
|
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
|
||||||
RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA);
|
RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA);
|
||||||
RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA);
|
RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA);
|
||||||
|
@ -218,7 +223,7 @@ void CHud::Draw() {
|
||||||
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE);
|
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE);
|
||||||
|
|
||||||
float fStep = sin((CTimer::GetTimeInMilliseconds() & 1023) * 0.0061328127);
|
float fStep = sin((CTimer::GetTimeInMilliseconds() & 1023) * 0.0061328127);
|
||||||
float fMultBright = CHud::SpriteBrightness * 0.033333335f * (0.25f * fStep + 0.75f);
|
float fMultBright = CHud::SpriteBrightness * 0.03f * (0.25f * fStep + 0.75f);
|
||||||
CRect rect;
|
CRect rect;
|
||||||
|
|
||||||
float fWidescreenOffset[2] = { 0.0f, 0.0f };
|
float fWidescreenOffset[2] = { 0.0f, 0.0f };
|
||||||
|
@ -420,8 +425,8 @@ void CHud::Draw() {
|
||||||
CFont::SetPropOff();
|
CFont::SetPropOff();
|
||||||
CFont::SetFontStyle(FONT_HEADING);
|
CFont::SetFontStyle(FONT_HEADING);
|
||||||
|
|
||||||
if (CHud::m_ItemToFlash == 4 && CTimer::GetFrameCounter() & 8
|
if (CHud::m_ItemToFlash == ITEM_HEALTH && CTimer::GetFrameCounter() & 8
|
||||||
|| CHud::m_ItemToFlash != 4
|
|| CHud::m_ItemToFlash != ITEM_HEALTH
|
||||||
|| CWorld::Players[CWorld::PlayerInFocus].m_pPed->m_fHealth < 10
|
|| CWorld::Players[CWorld::PlayerInFocus].m_pPed->m_fHealth < 10
|
||||||
&& CTimer::GetFrameCounter() & 8) {
|
&& CTimer::GetFrameCounter() & 8) {
|
||||||
if (CWorld::Players[CWorld::PlayerInFocus].m_pPed->m_fHealth >= 10
|
if (CWorld::Players[CWorld::PlayerInFocus].m_pPed->m_fHealth >= 10
|
||||||
|
@ -450,7 +455,7 @@ void CHud::Draw() {
|
||||||
/*
|
/*
|
||||||
DrawArmour
|
DrawArmour
|
||||||
*/
|
*/
|
||||||
if (CHud::m_ItemToFlash == 3 && CTimer::GetFrameCounter() & 8 || CHud::m_ItemToFlash != 3) {
|
if (CHud::m_ItemToFlash == ITEM_ARMOUR && CTimer::GetFrameCounter() & 8 || CHud::m_ItemToFlash != ITEM_ARMOUR) {
|
||||||
CFont::SetScale(HUD_STRETCH_X(0.8f), HUD_STRETCH_Y(1.35f));
|
CFont::SetScale(HUD_STRETCH_X(0.8f), HUD_STRETCH_Y(1.35f));
|
||||||
if (CWorld::Players[CWorld::PlayerInFocus].m_pPed->m_fArmour > 1.0f) {
|
if (CWorld::Players[CWorld::PlayerInFocus].m_pPed->m_fArmour > 1.0f) {
|
||||||
AsciiToUnicode("[", sPrintIcon);
|
AsciiToUnicode("[", sPrintIcon);
|
||||||
|
@ -845,7 +850,7 @@ void CHud::Draw() {
|
||||||
/*
|
/*
|
||||||
DrawRadar
|
DrawRadar
|
||||||
*/
|
*/
|
||||||
if (CHud::m_ItemToFlash == 8 && CTimer::GetFrameCounter() & 8 || CHud::m_ItemToFlash != 8) {
|
if (CHud::m_ItemToFlash == ITEM_RADAR && CTimer::GetFrameCounter() & 8 || CHud::m_ItemToFlash != ITEM_RADAR) {
|
||||||
CRadar::DrawMap();
|
CRadar::DrawMap();
|
||||||
CHud::Sprites[HUD_RADARDISC].Draw(CRect(HUD_STRETCH_X(16.0f), HUD_FROM_BOTTOM(123.0f + 4.0f), HUD_STRETCH_X(94.0f + 20.0f + 5.0f), HUD_FROM_BOTTOM(-76.0f + 123.0f - 6.0f)), CRGBA(0, 0, 0, 255));
|
CHud::Sprites[HUD_RADARDISC].Draw(CRect(HUD_STRETCH_X(16.0f), HUD_FROM_BOTTOM(123.0f + 4.0f), HUD_STRETCH_X(94.0f + 20.0f + 5.0f), HUD_FROM_BOTTOM(-76.0f + 123.0f - 6.0f)), CRGBA(0, 0, 0, 255));
|
||||||
CRadar::DrawBlips();
|
CRadar::DrawBlips();
|
||||||
|
@ -863,87 +868,77 @@ void CHud::Draw() {
|
||||||
DrawScriptText
|
DrawScriptText
|
||||||
*/
|
*/
|
||||||
if (!CTimer::GetIsUserPaused()) {
|
if (!CTimer::GetIsUserPaused()) {
|
||||||
uint16 CounterA = 0;
|
|
||||||
uint16 CounterB = 0;
|
|
||||||
CTextLine* IntroText = CTheScripts::IntroTextLines;
|
CTextLine* IntroText = CTheScripts::IntroTextLines;
|
||||||
|
|
||||||
do {
|
for (int i = 0; i < 2; i++) {
|
||||||
if (CTheScripts::IntroTextLines[CounterB].m_awText[0] && CTheScripts::IntroTextLines[CounterB].field_29) {
|
if (CTheScripts::IntroTextLines[i].m_awText[0] && CTheScripts::IntroTextLines[i].field_29) {
|
||||||
CFont::SetScale(HUD_STRETCH_X(CTheScripts::IntroTextLines[CounterB].m_fScaleX), HUD_STRETCH_Y(CTheScripts::IntroTextLines[CounterB].m_fScaleY * 0.5f));
|
CFont::SetScale(HUD_STRETCH_X(CTheScripts::IntroTextLines[i].m_fScaleX), HUD_STRETCH_Y(CTheScripts::IntroTextLines[i].m_fScaleY * 0.5f));
|
||||||
CFont::SetColor(CTheScripts::IntroTextLines[CounterB].m_sColor);
|
CFont::SetColor(CTheScripts::IntroTextLines[i].m_sColor);
|
||||||
|
|
||||||
if (CTheScripts::IntroTextLines[CounterB].m_bJustify)
|
if (CTheScripts::IntroTextLines[i].m_bJustify)
|
||||||
CFont::SetJustifyOn();
|
CFont::SetJustifyOn();
|
||||||
else
|
else
|
||||||
CFont::SetJustifyOff();
|
CFont::SetJustifyOff();
|
||||||
|
|
||||||
if (CTheScripts::IntroTextLines[CounterB].m_bRightJustify)
|
if (CTheScripts::IntroTextLines[i].m_bRightJustify)
|
||||||
CFont::SetRightJustifyOn();
|
CFont::SetRightJustifyOn();
|
||||||
else
|
else
|
||||||
CFont::SetRightJustifyOff();
|
CFont::SetRightJustifyOff();
|
||||||
|
|
||||||
if (CTheScripts::IntroTextLines[CounterB].m_bCentered)
|
if (CTheScripts::IntroTextLines[i].m_bCentered)
|
||||||
CFont::SetCentreOn();
|
CFont::SetCentreOn();
|
||||||
else
|
else
|
||||||
CFont::SetCentreOff();
|
CFont::SetCentreOff();
|
||||||
|
|
||||||
CFont::SetWrapx(HUD_STRETCH_X(CTheScripts::IntroTextLines[CounterB].m_fWrapX));
|
CFont::SetWrapx(HUD_STRETCH_X(CTheScripts::IntroTextLines[i].m_fWrapX));
|
||||||
CFont::SetCentreSize(HUD_STRETCH_X(CTheScripts::IntroTextLines[CounterB].m_fCenterSize));
|
CFont::SetCentreSize(HUD_STRETCH_X(CTheScripts::IntroTextLines[i].m_fCenterSize));
|
||||||
|
|
||||||
if (CTheScripts::IntroTextLines[CounterB].m_bBackground)
|
if (CTheScripts::IntroTextLines[i].m_bBackground)
|
||||||
CFont::SetBackgroundOn();
|
CFont::SetBackgroundOn();
|
||||||
else
|
else
|
||||||
CFont::SetBackgroundOff();
|
CFont::SetBackgroundOff();
|
||||||
|
|
||||||
CFont::SetBackgroundColor(CTheScripts::IntroTextLines[CounterB].m_sBackgroundColor);
|
CFont::SetBackgroundColor(CTheScripts::IntroTextLines[i].m_sBackgroundColor);
|
||||||
|
|
||||||
if (CTheScripts::IntroTextLines[CounterB].m_bBackgroundOnly)
|
if (CTheScripts::IntroTextLines[i].m_bBackgroundOnly)
|
||||||
CFont::SetBackGroundOnlyTextOn();
|
CFont::SetBackGroundOnlyTextOn();
|
||||||
else
|
else
|
||||||
CFont::SetBackGroundOnlyTextOff();
|
CFont::SetBackGroundOnlyTextOff();
|
||||||
|
|
||||||
if (CTheScripts::IntroTextLines[CounterB].m_bTextProportional)
|
if (CTheScripts::IntroTextLines[i].m_bTextProportional)
|
||||||
CFont::SetPropOn();
|
CFont::SetPropOn();
|
||||||
else
|
else
|
||||||
CFont::SetPropOff();
|
CFont::SetPropOff();
|
||||||
|
|
||||||
CFont::SetFontStyle(CTheScripts::IntroTextLines[CounterB].m_nFont);
|
CFont::SetFontStyle(CTheScripts::IntroTextLines[i].m_nFont);
|
||||||
CFont::PrintString(HUD_STRETCH_X(640.0f - CTheScripts::IntroTextLines[CounterB].field_36), HUD_STRETCH_Y(448.0f - CTheScripts::IntroTextLines[CounterB].field_40), IntroText->m_awText);
|
CFont::PrintString(HUD_STRETCH_X(640.0f - CTheScripts::IntroTextLines[i].field_36), HUD_STRETCH_Y(448.0f - CTheScripts::IntroTextLines[i].field_40), IntroText->m_awText);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
++CounterA;
|
|
||||||
++CounterB;
|
|
||||||
++IntroText;
|
|
||||||
} while (CounterA < 2);
|
|
||||||
|
|
||||||
uint16 CounterC = 0;
|
|
||||||
uint16 CounterD = 0;
|
|
||||||
CScriptRectangle* IntroRect = CTheScripts::IntroRectangles;
|
CScriptRectangle* IntroRect = CTheScripts::IntroRectangles;
|
||||||
|
|
||||||
do {
|
for (int i = 0; i < 16; i++) {
|
||||||
if (CTheScripts::IntroRectangles[CounterD].m_bIsUsed && CTheScripts::IntroRectangles[CounterD].m_bIsAntialiased) {
|
if (CTheScripts::IntroRectangles[i].m_bIsUsed && CTheScripts::IntroRectangles[i].m_bIsAntialiased) {
|
||||||
if (CTheScripts::IntroRectangles[CounterD].m_wTextureId >= 0) {
|
if (CTheScripts::IntroRectangles[i].m_wTextureId >= 0) {
|
||||||
CRect rect = {
|
CRect rect = {
|
||||||
CTheScripts::IntroRectangles[CounterD].m_sRect.left,
|
CTheScripts::IntroRectangles[i].m_sRect.left,
|
||||||
CTheScripts::IntroRectangles[CounterD].m_sRect.bottom,
|
CTheScripts::IntroRectangles[i].m_sRect.bottom,
|
||||||
CTheScripts::IntroRectangles[CounterD].m_sRect.right,
|
CTheScripts::IntroRectangles[i].m_sRect.right,
|
||||||
CTheScripts::IntroRectangles[CounterD].m_sRect.bottom };
|
CTheScripts::IntroRectangles[i].m_sRect.bottom };
|
||||||
|
|
||||||
CTheScripts::ScriptSprites[CTheScripts::IntroRectangles[CounterD].m_wTextureId].Draw(rect, IntroRect->m_sColor);
|
CTheScripts::ScriptSprites[CTheScripts::IntroRectangles[i].m_wTextureId].Draw(rect, IntroRect->m_sColor);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
CRect rect = {
|
CRect rect = {
|
||||||
CTheScripts::IntroRectangles[CounterD].m_sRect.left,
|
CTheScripts::IntroRectangles[i].m_sRect.left,
|
||||||
CTheScripts::IntroRectangles[CounterD].m_sRect.bottom,
|
CTheScripts::IntroRectangles[i].m_sRect.bottom,
|
||||||
CTheScripts::IntroRectangles[CounterD].m_sRect.right,
|
CTheScripts::IntroRectangles[i].m_sRect.right,
|
||||||
CTheScripts::IntroRectangles[CounterD].m_sRect.bottom };
|
CTheScripts::IntroRectangles[i].m_sRect.bottom };
|
||||||
|
|
||||||
CSprite2d::DrawRect(rect, IntroRect->m_sColor);
|
CSprite2d::DrawRect(rect, IntroRect->m_sColor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
++CounterC;
|
}
|
||||||
++CounterD;
|
|
||||||
++IntroRect;
|
|
||||||
} while (CounterC < 16);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
DrawSubtitles
|
DrawSubtitles
|
||||||
|
@ -972,8 +967,9 @@ void CHud::Draw() {
|
||||||
/*
|
/*
|
||||||
DrawBigMessage
|
DrawBigMessage
|
||||||
*/
|
*/
|
||||||
|
// MissionCompleteFailedText
|
||||||
if (CHud::m_BigMessage[0][0]) {
|
if (CHud::m_BigMessage[0][0]) {
|
||||||
if (0.0f == BigMessageInUse[0]) {
|
if (BigMessageInUse[0] == 0.0f) {
|
||||||
CFont::SetJustifyOff();
|
CFont::SetJustifyOff();
|
||||||
CFont::SetBackgroundOff();
|
CFont::SetBackgroundOff();
|
||||||
CFont::SetBackGroundOnlyTextOff();
|
CFont::SetBackGroundOnlyTextOff();
|
||||||
|
@ -983,28 +979,23 @@ void CHud::Draw() {
|
||||||
CFont::SetCentreSize(HUD_STRETCH_X(615.0f));
|
CFont::SetCentreSize(HUD_STRETCH_X(615.0f));
|
||||||
CFont::SetColor(CRGBA(255, 255, 0, 255));
|
CFont::SetColor(CRGBA(255, 255, 0, 255));
|
||||||
CFont::SetFontStyle(FONT_HEADING);
|
CFont::SetFontStyle(FONT_HEADING);
|
||||||
if ((SCREENW - 20) <= BigMessageX[0]) {
|
|
||||||
BigMessageInUse[0] = BigMessageInUse[0] + CTimer::GetTimeStep();
|
if (BigMessageX[0] >= (SCREENW - 20)) {
|
||||||
if (BigMessageInUse[0] >= 120.0f) {
|
BigMessageAlpha[0] += (CTimer::GetTimeStep() * 0.02f * -255.0f);
|
||||||
BigMessageInUse[0] = 120.0;
|
|
||||||
BigMessageAlpha[0] = BigMessageAlpha[0] - (CTimer::GetTimeStep() * 0.02f * 1000.0f) * 0.30000001f;
|
|
||||||
}
|
|
||||||
if (BigMessageAlpha[0] <= 0.0f) {
|
if (BigMessageAlpha[0] <= 0.0f) {
|
||||||
CHud::m_BigMessage[0][0] = 0;
|
BigMessageAlpha[0] = 0.0f;
|
||||||
BigMessageAlpha[0] = 0.0;
|
BigMessageInUse[0] = 1.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
float fStep = (CTimer::GetTimeStep()
|
BigMessageX[0] += (CTimer::GetTimeStep() * 0.02f * 255.0f);
|
||||||
* 0.02f
|
BigMessageAlpha[0] += (CTimer::GetTimeStep() * 0.02f * 255.0f);
|
||||||
* 1000.0f)
|
|
||||||
* 0.30000001f;
|
|
||||||
BigMessageX[0] = BigMessageX[0] + fStep;
|
|
||||||
BigMessageAlpha[0] = BigMessageAlpha[0] + fStep;
|
|
||||||
|
|
||||||
if (BigMessageAlpha[0] > 255.0f)
|
if (BigMessageAlpha[0] >= 255.0f)
|
||||||
BigMessageAlpha[0] = 255.0;
|
BigMessageAlpha[0] = 255.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
CFont::SetColor(CRGBA(0, 0, 0, BigMessageAlpha[0]));
|
CFont::SetColor(CRGBA(0, 0, 0, BigMessageAlpha[0]));
|
||||||
CFont::PrintString(SCREEN_WIDTH / 2, (SCREEN_HEIGHT / 2) - HUD_STRETCH_Y(20.0f - 2.0f), m_BigMessage[0]);
|
CFont::PrintString(SCREEN_WIDTH / 2, (SCREEN_HEIGHT / 2) - HUD_STRETCH_Y(20.0f - 2.0f), m_BigMessage[0]);
|
||||||
|
|
||||||
|
@ -1023,14 +1014,12 @@ void CHud::Draw() {
|
||||||
|
|
||||||
// WastedBustedText
|
// WastedBustedText
|
||||||
if (CHud::m_BigMessage[2][0]) {
|
if (CHud::m_BigMessage[2][0]) {
|
||||||
if (0 == BigMessageInUse[2]) {
|
if (BigMessageInUse[2] == 0.0f) {
|
||||||
BigMessageAlpha[2] = (CTimer::GetTimeStep()
|
BigMessageAlpha[2] += (CTimer::GetTimeStep() * 0.02f * 1000.0f) * 0.4f;
|
||||||
* 0.02f
|
|
||||||
* 1000.0f)
|
|
||||||
* 0.40000001
|
|
||||||
+ BigMessageAlpha[2];
|
|
||||||
if (BigMessageAlpha[2] > 255.0f)
|
if (BigMessageAlpha[2] > 255.0f)
|
||||||
BigMessageAlpha[2] = 255.0;
|
BigMessageAlpha[2] = 255.0;
|
||||||
|
|
||||||
CFont::SetBackgroundOff();
|
CFont::SetBackgroundOff();
|
||||||
|
|
||||||
if (CGame::frenchGame || CGame::germanGame)
|
if (CGame::frenchGame || CGame::germanGame)
|
||||||
|
@ -1060,7 +1049,8 @@ void CHud::Draw() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHud::DrawAfterFade() {
|
void CHud::DrawAfterFade()
|
||||||
|
{
|
||||||
if (CTimer::GetIsUserPaused() || CReplay::Mode == 1)
|
if (CTimer::GetIsUserPaused() || CReplay::Mode == 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1179,7 +1169,6 @@ void CHud::DrawAfterFade() {
|
||||||
CFont::PrintString((SCREEN_WIDTH / 2), (SCREEN_HEIGHT / 2) - HUD_STRETCH_Y(84.0f), m_BigMessage[4]);
|
CFont::PrintString((SCREEN_WIDTH / 2), (SCREEN_HEIGHT / 2) - HUD_STRETCH_Y(84.0f), m_BigMessage[4]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Oddjob result
|
// Oddjob result
|
||||||
if (OddJob2OffTimer > 0)
|
if (OddJob2OffTimer > 0)
|
||||||
OddJob2OffTimer = OddJob2OffTimer - (CTimer::GetTimeStep() * 0.02f * 1000.0f);
|
OddJob2OffTimer = OddJob2OffTimer - (CTimer::GetTimeStep() * 0.02f * 1000.0f);
|
||||||
|
@ -1256,23 +1245,20 @@ void CHud::DrawAfterFade() {
|
||||||
CFont::SetRightJustifyWrap(-500);
|
CFont::SetRightJustifyWrap(-500);
|
||||||
CFont::SetRightJustifyOn();
|
CFont::SetRightJustifyOn();
|
||||||
CFont::SetFontStyle(FONT_HEADING);
|
CFont::SetFontStyle(FONT_HEADING);
|
||||||
if ((SCREENW - 20) <= BigMessageX[1]) {
|
if (BigMessageX[1] >= (SCREENW - 20)) {
|
||||||
BigMessageInUse[1] = BigMessageInUse[1] + CTimer::GetTimeStep();
|
BigMessageAlpha[1] += (CTimer::GetTimeStep() * 0.02f * -255.0f);
|
||||||
if (BigMessageInUse[1] >= 120.0f) {
|
|
||||||
BigMessageInUse[1] = 120.0;
|
if (BigMessageAlpha[1] <= 0.0f) {
|
||||||
BigMessageAlpha[1] = BigMessageAlpha[1] - (CTimer::GetTimeStep() * 0.02f * 1000.0f) * 0.3f;
|
BigMessageAlpha[1] = 0.0f;
|
||||||
}
|
BigMessageInUse[1] = 1.0f;
|
||||||
if (BigMessageAlpha[1] <= 0) {
|
|
||||||
m_BigMessage[1][0] = 0;
|
|
||||||
BigMessageAlpha[1] = 0.0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
float fStep = (CTimer::GetTimeStep() * 0.02f * 1000.0f) * 0.3f;
|
BigMessageX[1] += (CTimer::GetTimeStep() * 0.02f * 255.0f);
|
||||||
BigMessageX[1] = BigMessageX[1] + fStep;
|
BigMessageAlpha[1] += (CTimer::GetTimeStep() * 0.02f * 255.0f);
|
||||||
BigMessageAlpha[1] = BigMessageAlpha[1] + fStep;
|
|
||||||
if (BigMessageAlpha[1] > 255.0f)
|
if (BigMessageAlpha[1] >= 255.0f)
|
||||||
BigMessageAlpha[1] = 255.0;
|
BigMessageAlpha[1] = 255.0f;
|
||||||
}
|
}
|
||||||
CFont::SetColor(CRGBA(40, 40, 40, BigMessageAlpha[1]));
|
CFont::SetColor(CRGBA(40, 40, 40, BigMessageAlpha[1]));
|
||||||
CFont::PrintString(HUD_FROM_RIGHT(20.0f - 2.0f), HUD_FROM_BOTTOM(120.0f), m_BigMessage[1]);
|
CFont::PrintString(HUD_FROM_RIGHT(20.0f - 2.0f), HUD_FROM_BOTTOM(120.0f), m_BigMessage[1]);
|
||||||
|
@ -1281,13 +1267,13 @@ void CHud::DrawAfterFade() {
|
||||||
CFont::PrintString(HUD_FROM_RIGHT(20.0f), HUD_FROM_BOTTOM(120.0f), m_BigMessage[1]);
|
CFont::PrintString(HUD_FROM_RIGHT(20.0f), HUD_FROM_BOTTOM(120.0f), m_BigMessage[1]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BigMessageAlpha[1] = 0.0;
|
BigMessageAlpha[1] = 0.0f;
|
||||||
BigMessageX[1] = -60.0;
|
BigMessageX[1] = -60.0f;
|
||||||
BigMessageInUse[1] = 1.0;
|
BigMessageInUse[1] = 1.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BigMessageInUse[1] = 0.0;
|
BigMessageInUse[1] = 0.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,15 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "Sprite2d.h"
|
#include "Sprite2d.h"
|
||||||
|
|
||||||
enum eSprites {
|
enum eItems
|
||||||
|
{
|
||||||
|
ITEM_ARMOUR = 3,
|
||||||
|
ITEM_HEALTH = 4,
|
||||||
|
ITEM_RADAR = 8
|
||||||
|
};
|
||||||
|
|
||||||
|
enum eSprites
|
||||||
|
{
|
||||||
HUD_FIST,
|
HUD_FIST,
|
||||||
HUD_BAT,
|
HUD_BAT,
|
||||||
HUD_PISTOL,
|
HUD_PISTOL,
|
||||||
|
@ -21,7 +29,8 @@ enum eSprites {
|
||||||
HUD_SITEM16 = 21
|
HUD_SITEM16 = 21
|
||||||
};
|
};
|
||||||
|
|
||||||
class CHud {
|
class CHud
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
static CSprite2d *Sprites;
|
static CSprite2d *Sprites;
|
||||||
|
|
||||||
|
@ -38,23 +47,23 @@ public:
|
||||||
static int32 m_ZoneState;
|
static int32 m_ZoneState;
|
||||||
static int32 m_ZoneFadeTimer;
|
static int32 m_ZoneFadeTimer;
|
||||||
static int32 m_ZoneNameTimer;
|
static int32 m_ZoneNameTimer;
|
||||||
static wchar* &m_pZoneName;
|
static wchar *&m_pZoneName;
|
||||||
static wchar* m_pLastZoneName;
|
static wchar *m_pLastZoneName;
|
||||||
static wchar* m_ZoneToPrint;
|
static wchar *m_ZoneToPrint;
|
||||||
static wchar* &m_pVehicleName;
|
static wchar *&m_pVehicleName;
|
||||||
static wchar* m_pLastVehicleName;
|
static wchar *m_pLastVehicleName;
|
||||||
static wchar* m_pVehicleNameToPrint;
|
static wchar *m_pVehicleNameToPrint;
|
||||||
static int32 m_VehicleState;
|
static int32 m_VehicleState;
|
||||||
static int32 m_VehicleFadeTimer;
|
static int32 m_VehicleFadeTimer;
|
||||||
static int32 m_VehicleNameTimer;
|
static int32 m_VehicleNameTimer;
|
||||||
static wchar* m_Message;
|
static wchar *m_Message;
|
||||||
static wchar* m_PagerMessage;
|
static wchar *m_PagerMessage;
|
||||||
static bool &m_Wants_To_Draw_Hud;
|
static bool &m_Wants_To_Draw_Hud;
|
||||||
static bool &m_Wants_To_Draw_3dMarkers;
|
static bool &m_Wants_To_Draw_3dMarkers;
|
||||||
static wchar(*m_BigMessage)[128];
|
static wchar(*m_BigMessage)[128];
|
||||||
static float* BigMessageInUse;
|
static float *BigMessageInUse;
|
||||||
static float* BigMessageAlpha;
|
static float *BigMessageAlpha;
|
||||||
static float* BigMessageX;
|
static float *BigMessageX;
|
||||||
static float &OddJob2OffTimer;
|
static float &OddJob2OffTimer;
|
||||||
static int8 &CounterOnLastFrame;
|
static int8 &CounterOnLastFrame;
|
||||||
static float &OddJob2XOffset;
|
static float &OddJob2XOffset;
|
||||||
|
@ -75,12 +84,12 @@ public:
|
||||||
static void Shutdown();
|
static void Shutdown();
|
||||||
static void ReInitialise();
|
static void ReInitialise();
|
||||||
static void GetRidOfAllHudMessages();
|
static void GetRidOfAllHudMessages();
|
||||||
static void SetZoneName(wchar* name);
|
static void SetZoneName(wchar *name);
|
||||||
static void SetHelpMessage(wchar* message, bool quick);
|
static void SetHelpMessage(wchar *message, bool quick);
|
||||||
static void SetVehicleName(wchar* name);
|
static void SetVehicleName(wchar *name);
|
||||||
static void Draw();
|
static void Draw();
|
||||||
static void DrawAfterFade();
|
static void DrawAfterFade();
|
||||||
static void SetMessage(wchar* message);
|
static void SetMessage(wchar *message);
|
||||||
static void SetBigMessage(wchar* message, int16 style);
|
static void SetBigMessage(wchar *message, int16 style);
|
||||||
static void SetPagerMessage(wchar* message);
|
static void SetPagerMessage(wchar *message);
|
||||||
};
|
};
|
Loading…
Reference in a new issue