merge with master
This commit is contained in:
commit
360d9cf889
@ -143,6 +143,7 @@ _rpMatFXD3D8AtomicMatFXEnvRender_ps2(RxD3D8InstanceData *inst, int flags, int se
|
|||||||
RwD3D8SetTexture(texture, 0);
|
RwD3D8SetTexture(texture, 0);
|
||||||
else
|
else
|
||||||
RwD3D8SetTexture(nil, 0);
|
RwD3D8SetTexture(nil, 0);
|
||||||
|
RwD3D8SetPixelShader(0);
|
||||||
RwD3D8SetVertexShader(inst->vertexShader);
|
RwD3D8SetVertexShader(inst->vertexShader);
|
||||||
RwD3D8SetStreamSource(0, inst->vertexBuffer, inst->stride);
|
RwD3D8SetStreamSource(0, inst->vertexBuffer, inst->stride);
|
||||||
RwD3D8SetIndices(inst->indexBuffer, inst->baseIndex);
|
RwD3D8SetIndices(inst->indexBuffer, inst->baseIndex);
|
||||||
|
@ -370,3 +370,6 @@ inline T *WriteSaveBuf(uint8 *&buf, const T &value)
|
|||||||
assert(ReadSaveBuf<char>(buf) == c);\
|
assert(ReadSaveBuf<char>(buf) == c);\
|
||||||
assert(ReadSaveBuf<char>(buf) == d);\
|
assert(ReadSaveBuf<char>(buf) == d);\
|
||||||
assert(ReadSaveBuf<uint32>(buf) == size);
|
assert(ReadSaveBuf<uint32>(buf) == size);
|
||||||
|
|
||||||
|
|
||||||
|
void cprintf(char*, ...);
|
@ -19,6 +19,7 @@
|
|||||||
#include "Ped.h"
|
#include "Ped.h"
|
||||||
#include "debugmenu_public.h"
|
#include "debugmenu_public.h"
|
||||||
#include "Particle.h"
|
#include "Particle.h"
|
||||||
|
#include "Console.h"
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
@ -1,43 +1,95 @@
|
|||||||
|
#include "common.h"
|
||||||
|
#include "patcher.h"
|
||||||
#include "Console.h"
|
#include "Console.h"
|
||||||
|
|
||||||
#include "Font.h"
|
#include "Font.h"
|
||||||
#include "Timer.h"
|
#include "Timer.h"
|
||||||
|
|
||||||
#define CONSOLE_MESSAGE_SHOW_TIME 20000
|
#define CONSOLE_X_POS (30.0f)
|
||||||
#define CONSOLE_MESSAGE_HEIGHT 12.0f
|
#define CONSOLE_Y_POS (10.0f)
|
||||||
#define CONSOLE_MESSAGE_X_OFFSET 30.0f
|
#define CONSOLE_LINE_HEIGHT (12.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;
|
CConsole &TheConsole = *(CConsole*)0x8F6498;
|
||||||
|
|
||||||
void CConsole::Display()
|
void
|
||||||
|
CConsole::AddLine(char *s, uint8 r, uint8 g, uint8 b)
|
||||||
|
{
|
||||||
|
char tempstr[MAX_STR_LEN+1];
|
||||||
|
|
||||||
|
while (strlen(s) > MAX_STR_LEN) {
|
||||||
|
strncpy_s(tempstr, s, MAX_STR_LEN);
|
||||||
|
tempstr[MAX_STR_LEN-1] = '\0';
|
||||||
|
s += MAX_STR_LEN - 1;
|
||||||
|
AddOneLine(tempstr, r, g, b);
|
||||||
|
}
|
||||||
|
AddOneLine(s, r, g, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CConsole::AddOneLine(char *s, uint8 r, uint8 g, uint8 b)
|
||||||
|
{
|
||||||
|
int32 StrIndex = (m_nLineCount + m_nCurrentLine) % MAX_LINES;
|
||||||
|
|
||||||
|
for (int32 i = 0; i < MAX_STR_LEN; i++) {
|
||||||
|
Buffers[StrIndex][i] = s[i];
|
||||||
|
if (s[i] == '\0') break;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8 _strNum1 = m_nLineCount;
|
||||||
|
if (_strNum1 < MAX_LINES)
|
||||||
|
_strNum1++;
|
||||||
|
|
||||||
|
m_aTimer[StrIndex] = CTimer::GetTimeInMilliseconds();
|
||||||
|
Buffers[StrIndex][MAX_STR_LEN-1] = '\0';
|
||||||
|
m_aRed[StrIndex] = r;
|
||||||
|
m_aGreen[StrIndex] = g;
|
||||||
|
m_aBlue[StrIndex] = b;
|
||||||
|
|
||||||
|
if (_strNum1 >= MAX_LINES)
|
||||||
|
m_nCurrentLine = (m_nCurrentLine + 1) % MAX_LINES;
|
||||||
|
else
|
||||||
|
m_nLineCount = _strNum1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CConsole::Display()
|
||||||
{
|
{
|
||||||
CFont::SetPropOn();
|
CFont::SetPropOn();
|
||||||
CFont::SetBackgroundOff();
|
CFont::SetBackgroundOff();
|
||||||
CFont::SetScale(0.6f, 0.6f);
|
CFont::SetScale(0.6f, 0.6f);
|
||||||
CFont::SetCentreOff();
|
CFont::SetCentreOff();
|
||||||
CFont::SetRightJustifyOff();
|
CFont::SetRightJustifyOff();
|
||||||
|
CFont::SetJustifyOn();
|
||||||
|
CFont::SetRightJustifyWrap(0.0f);
|
||||||
CFont::SetBackGroundOnlyTextOff();
|
CFont::SetBackGroundOnlyTextOff();
|
||||||
CFont::SetFontStyle(0);
|
CFont::SetFontStyle(FONT_BANK);
|
||||||
CFont::SetPropOff();
|
#ifndef FIX_BUGS
|
||||||
|
CFont::SetPropOff(); // not sure why this is here anyway
|
||||||
|
#endif
|
||||||
CFont::SetWrapx(RsGlobal.width);
|
CFont::SetWrapx(RsGlobal.width);
|
||||||
while (m_nActiveMessages != 0 && CTimer::GetTimeInMilliseconds() - m_anTimeStart[m_nCurrentMessage] > CONSOLE_MESSAGE_SHOW_TIME) {
|
|
||||||
m_nActiveMessages--;
|
while (m_nLineCount != 0 && CTimer::GetTimeInMilliseconds() - m_aTimer[m_nCurrentLine] > 20000) {
|
||||||
m_nCurrentMessage = (m_nCurrentMessage + 1) % NUM_CONSOLEMESSAGES;
|
m_nLineCount--;
|
||||||
|
m_nCurrentLine = (m_nCurrentLine + 1) % MAX_LINES;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < m_nActiveMessages; i++) {
|
|
||||||
int actualIndex = (i + m_nCurrentMessage) % NUM_CONSOLEMESSAGES;
|
for (int16 i = 0; i < m_nLineCount; i++) {
|
||||||
|
int16 line = (i + m_nCurrentLine) % MAX_LINES;
|
||||||
CFont::SetColor(CRGBA(0, 0, 0, 200));
|
CFont::SetColor(CRGBA(0, 0, 0, 200));
|
||||||
CFont::PrintString(
|
CFont::PrintString(CONSOLE_X_POS + 1.0f, CONSOLE_Y_POS + 1.0f + i * CONSOLE_LINE_HEIGHT, Buffers[line]);
|
||||||
CONSOLE_MESSAGE_X_OFFSET + CONSOLE_MESSAGE_X_SHADOW_OFFSET,
|
CFont::SetColor(CRGBA(m_aRed[line], m_aGreen[line], m_aBlue[line], 200));
|
||||||
CONSOLE_MESSAGE_Y_OFFSET + CONSOLE_MESSAGE_Y_SHADOW_OFFSET + i * CONSOLE_MESSAGE_HEIGHT,
|
CFont::PrintString(CONSOLE_X_POS, CONSOLE_Y_POS + i * CONSOLE_LINE_HEIGHT, Buffers[line]);
|
||||||
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]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cprintf(char* format, ...)
|
||||||
|
{
|
||||||
|
char s[256];
|
||||||
|
va_list vl1, vl2;
|
||||||
|
|
||||||
|
va_start(vl1, format);
|
||||||
|
va_copy(vl2, vl1);
|
||||||
|
vsprintf(s, format, vl1);
|
||||||
|
TheConsole.AddLine(s, 255, 255, 128);
|
||||||
|
}
|
@ -1,24 +1,24 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
class CConsole
|
class CConsole
|
||||||
{
|
{
|
||||||
enum {
|
enum
|
||||||
MAX_MESSAGE_LENGTH = 40
|
{
|
||||||
|
MAX_LINES = 8, // BUG? only shows 7
|
||||||
|
MAX_STR_LEN = 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];
|
|
||||||
|
|
||||||
|
uint8 m_nLineCount;
|
||||||
|
uint8 m_nCurrentLine;
|
||||||
|
wchar Buffers[MAX_LINES][MAX_STR_LEN];
|
||||||
|
uint32 m_aTimer[MAX_LINES];
|
||||||
|
uint8 m_aRed[MAX_LINES];
|
||||||
|
uint8 m_aGreen[MAX_LINES];
|
||||||
|
uint8 m_aBlue[MAX_LINES];
|
||||||
public:
|
public:
|
||||||
void Init() { m_nCurrentMessage = 0; m_nActiveMessages = 0; }
|
void AddLine(char *s, uint8 r, uint8 g, uint8 b);
|
||||||
|
void AddOneLine(char *s, uint8 r, uint8 g, uint8 b);
|
||||||
void Display();
|
void Display();
|
||||||
};
|
};
|
||||||
|
|
||||||
extern CConsole& TheConsole;
|
extern CConsole &TheConsole;
|
||||||
|
|
||||||
static_assert(sizeof(CConsole) == 0x2BC, "CConsole: error");
|
|
Loading…
Reference in New Issue
Block a user