CGame::Initialise

This commit is contained in:
Nikolay Korolev
2020-03-22 17:23:40 +03:00
parent 7d213a1f32
commit 34b1881528
35 changed files with 333 additions and 12 deletions

43
src/render/Console.cpp Normal file
View File

@ -0,0 +1,43 @@
#include "Console.h"
#include "Font.h"
#include "Timer.h"
#define CONSOLE_MESSAGE_SHOW_TIME 20000
#define CONSOLE_MESSAGE_HEIGHT 12.0f
#define CONSOLE_MESSAGE_X_OFFSET 30.0f
#define CONSOLE_MESSAGE_Y_OFFSET 10.0f
#define CONSOLE_MESSAGE_X_SHADOW_OFFSET 1.0f
#define CONSOLE_MESSAGE_Y_SHADOW_OFFSET 1.0f
CConsole& TheConsole = *(CConsole*)0x8F6498;
void CConsole::Display()
{
CFont::SetPropOn();
CFont::SetBackgroundOff();
CFont::SetScale(0.6f, 0.6f);
CFont::SetCentreOff();
CFont::SetRightJustifyOff();
CFont::SetBackGroundOnlyTextOff();
CFont::SetFontStyle(0);
CFont::SetPropOff();
CFont::SetWrapx(RsGlobal.width);
while (m_nActiveMessages != 0 && CTimer::GetTimeInMilliseconds() - m_anTimeStart[m_nCurrentMessage] > CONSOLE_MESSAGE_SHOW_TIME) {
m_nActiveMessages--;
m_nCurrentMessage = (m_nCurrentMessage + 1) % NUM_CONSOLEMESSAGES;
}
for (int i = 0; i < m_nActiveMessages; i++) {
int actualIndex = (i + m_nCurrentMessage) % NUM_CONSOLEMESSAGES;
CFont::SetColor(CRGBA(0, 0, 0, 200));
CFont::PrintString(
CONSOLE_MESSAGE_X_OFFSET + CONSOLE_MESSAGE_X_SHADOW_OFFSET,
CONSOLE_MESSAGE_Y_OFFSET + CONSOLE_MESSAGE_Y_SHADOW_OFFSET + i * CONSOLE_MESSAGE_HEIGHT,
m_asMessages[actualIndex]);
CFont::SetColor(CRGBA(m_anColourRed[actualIndex], m_anColourGreen[actualIndex], m_anColourBlue[actualIndex], 200));
CFont::PrintString(
CONSOLE_MESSAGE_X_OFFSET,
CONSOLE_MESSAGE_Y_OFFSET + i * CONSOLE_MESSAGE_HEIGHT,
m_asMessages[actualIndex]);
}
}

24
src/render/Console.h Normal file
View File

@ -0,0 +1,24 @@
#pragma once
#include "common.h"
class CConsole
{
enum {
MAX_MESSAGE_LENGTH = 40
};
uint8 m_nActiveMessages;
uint8 m_nCurrentMessage;
wchar m_asMessages[NUM_CONSOLEMESSAGES][MAX_MESSAGE_LENGTH];
uint32 m_anTimeStart[NUM_CONSOLEMESSAGES];
uint8 m_anColourRed[NUM_CONSOLEMESSAGES];
uint8 m_anColourGreen[NUM_CONSOLEMESSAGES];
uint8 m_anColourBlue[NUM_CONSOLEMESSAGES];
public:
void Init() { m_nCurrentMessage = 0; m_nActiveMessages = 0; }
void Display();
};
extern CConsole& TheConsole;
static_assert(sizeof(CConsole) == 0x2BC, "CConsole: error");

View File

@ -18,3 +18,4 @@ CGlass::WindowRespondsToSoftCollision(CEntity *ent, float amount)
WRAPPER void CGlass::Render(void) { EAXJMP(0x502350); }
WRAPPER void CGlass::Update(void) { EAXJMP(0x502050); }
WRAPPER void CGlass::Init(void) { EAXJMP(0x501F20); }

View File

@ -10,4 +10,5 @@ public:
static void WindowRespondsToSoftCollision(CEntity *ent, float amount);
static void Render(void);
static void Update(void);
static void Init(void);
};

View File

@ -6,3 +6,4 @@ WRAPPER void CRubbish::Render(void) { EAXJMP(0x512190); }
WRAPPER void CRubbish::StirUp(CVehicle *veh) { EAXJMP(0x512690); }
WRAPPER void CRubbish::Update(void) { EAXJMP(0x511B90); }
WRAPPER void CRubbish::SetVisibility(bool) { EAXJMP(0x512AA0); }
WRAPPER void CRubbish::Init(void) { EAXJMP(0x511940); }

View File

@ -9,4 +9,5 @@ public:
static void StirUp(CVehicle *veh); // CAutomobile on PS2
static void Update(void);
static void SetVisibility(bool);
static void Init(void);
};

View File

@ -7,3 +7,5 @@ WRAPPER void CSkidmarks::Update() { EAXJMP(0x518200); }
WRAPPER void CSkidmarks::Render(void) { EAXJMP(0x5182E0); }
WRAPPER void CSkidmarks::RegisterOne(uint32 id, CVector pos, float fwdx, float fwdY, bool *isMuddy, bool *isBloddy) { EAXJMP(0x5185C0); }
WRAPPER void CSkidmarks::Init(void) { EAXJMP(0x517D70); }

View File

@ -7,4 +7,5 @@ public:
static void Update(void);
static void Render(void);
static void RegisterOne(uint32 id, CVector pos, float fwdx, float fwdY, bool *isMuddy, bool *isBloddy);
static void Init(void);
};

View File

@ -19,6 +19,7 @@
WRAPPER void CSpecialFX::Render(void) { EAXJMP(0x518DC0); }
WRAPPER void CSpecialFX::Update(void) { EAXJMP(0x518D40); }
WRAPPER void CSpecialFX::Init(void) { EAXJMP(0x5189E0); }
WRAPPER void CMotionBlurStreaks::RegisterStreak(int32 id, uint8 r, uint8 g, uint8 b, CVector p1, CVector p2) { EAXJMP(0x519460); }

View File

@ -5,6 +5,7 @@ class CSpecialFX
public:
static void Render(void);
static void Update(void);
static void Init(void);
};
class CMotionBlurStreaks

View File

@ -7,3 +7,4 @@ CWaterCannon* aCannons = (CWaterCannon*)0x8F2CA8;
WRAPPER void CWaterCannons::Update(void) { EAXJMP(0x522510); }
WRAPPER void CWaterCannons::UpdateOne(uint32 id, CVector *pos, CVector *dir) { EAXJMP(0x522470); }
WRAPPER void CWaterCannons::Render(void) { EAXJMP(0x522550); }
WRAPPER void CWaterCannons::Init(void) { EAXJMP(0x522440); }

View File

@ -20,6 +20,7 @@ public:
static void Update();
static void UpdateOne(uint32 id, CVector *pos, CVector *dir);
static void Render(void);
static void Init(void);
};
extern CWaterCannon *aCannons;

View File

@ -2,6 +2,8 @@
#include "patcher.h"
#include "WeaponEffects.h"
#include "TxdStore.h"
WRAPPER void CWeaponEffects::Render(void) { EAXJMP(0x564D70); }
CWeaponEffects &gCrossHair = *(CWeaponEffects*)0x6503BC;
@ -23,3 +25,21 @@ CWeaponEffects::MarkTarget(CVector pos, uint8 red, uint8 green, uint8 blue, uint
gCrossHair.m_alpha = alpha;
gCrossHair.m_size = size;
}
void
CWeaponEffects::Init()
{
gCrossHair.m_bCrosshair = false;
gCrossHair.m_vecPos = CVector(0.0f, 0.0f, 0.0f);
gCrossHair.m_red = 0;
gCrossHair.m_green = 0;
gCrossHair.m_blue = 0;
gCrossHair.m_alpha = 255;
gCrossHair.m_size = 1.0f;
gCrossHair.field_24 = 0;
CTxdStore::PushCurrentTxd();
CTxdStore::SetCurrentTxd(CTxdStore::FindTxdSlot("particle"));
gCrossHair.m_pTexture = RwTextureRead("crosshair", nil);
gCrossHair.m_pRaster = gCrossHair.m_pTexture->raster;
CTxdStore::PopCurrentTxd();
}

View File

@ -19,4 +19,5 @@ public:
static void Render(void);
static void ClearCrossHair();
static void MarkTarget(CVector, uint8, uint8, uint8, uint8, float);
static void Init(void);
};

View File

@ -34,6 +34,7 @@ float &CWeather::Stored_Rain = *(float*)0x885B4C;
WRAPPER void CWeather::RenderRainStreaks(void) { EAXJMP(0x524550); }
WRAPPER void CWeather::Update(void) { EAXJMP(0x522C10); }
WRAPPER void CWeather::Init(void) { EAXJMP(0x522BA0); }
void CWeather::ReleaseWeather()
{

View File

@ -39,6 +39,7 @@ public:
static void RenderRainStreaks(void);
static void Update(void);
static void Init(void);
static void ReleaseWeather();
static void ForceWeather(int16);