Some code edits to ExtraSaveSlots.cpp

This commit is contained in:
NovaRain
2020-02-04 16:28:21 +08:00
parent eacd1e5682
commit 15019ffe81
3 changed files with 37 additions and 11 deletions
+35 -11
View File
@@ -27,6 +27,7 @@
DWORD LSPageOffset = 0;
int LSButtDN = 0;
BYTE* SaveLoadSurface = nullptr;
static const char* filename = "%s\\savegame\\slotdat.ini";
@@ -128,6 +129,7 @@ void SetPageNum() {
char TempText[32];
unsigned int TxtMaxWidth = GetMaxCharWidth() * 8; // GetTextWidth(TempText);
unsigned int HalfMaxWidth = TxtMaxWidth / 2;
unsigned int TxtWidth = 0;
DWORD NewTick = 0, OldTick = 0;
@@ -136,6 +138,9 @@ void SetPageNum() {
DWORD tempPageOffset = -1;
char* EndBracket = "]";
int width = GetTextWidth(EndBracket);
while (!exitFlag) {
NewTick = GetTickCount(); // timer for redraw
if (OldTick > NewTick) {
@@ -146,23 +151,29 @@ void SetPageNum() {
blip = (blip == '_') ? ' ' : '_';
sprintf_s(TempText, 32, "#%d%c", tempPageOffset / 10 + 1, '_');
if (tempPageOffset == -1) {
sprintf_s(TempText, 32, "#%c", '_');
sprintf_s(TempText, 32, "[ %c ]", '_');
} else {
sprintf_s(TempText, 32, "[ %d%c ]", tempPageOffset / 10 + 1, '_');
}
TxtWidth = GetTextWidth(TempText);
sprintf_s(TempText, 32, "#%d%c", tempPageOffset / 10 + 1, blip);
if (tempPageOffset == -1) {
sprintf_s(TempText, 32, "#%c", blip);
sprintf_s(TempText, 32, "[ %c", blip);
} else {
sprintf_s(TempText, 32, "[ %d%c", tempPageOffset / 10 + 1, blip);
}
// fill over text area with consol black colour
for (int y = SaveLoadWin->width * 52; y < SaveLoadWin->width * 82; y = y + SaveLoadWin->width) {
memset(SaveLoadWin->surface + y + 170 - TxtMaxWidth / 2, 0xCF, TxtMaxWidth);
int z = 0;
// paste image part from buffer into text area
for (int y = SaveLoadWin->width * 60; y < SaveLoadWin->width * 75; y += SaveLoadWin->width) {
memcpy(SaveLoadWin->surface + y + (170 - HalfMaxWidth), SaveLoadSurface + (100 - HalfMaxWidth) + (200 * z++), TxtMaxWidth);
}
PrintText(TempText, ConsoleGold, 170 - TxtWidth / 2, 64, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
int HalfTxtWidth = TxtWidth / 2;
PrintText(TempText, ConsoleGold, 170 - HalfTxtWidth, 64, TxtWidth, SaveLoadWin->width, SaveLoadWin->surface);
PrintText(EndBracket, ConsoleGold, (170 - HalfTxtWidth) + TxtWidth - width, 64, width, SaveLoadWin->width, SaveLoadWin->surface);
WinDraw(winRef);
}
@@ -268,9 +279,18 @@ void DrawPageText() {
return;
}
// fill over text area with consol black colour
for (int y = SaveLoadWin->width * 52; y < SaveLoadWin->width * 82; y = y + SaveLoadWin->width) {
memset(SaveLoadWin->surface + 50 + y, 0xCF, 240);
int z = 0;
if (SaveLoadSurface == nullptr) {
SaveLoadSurface = new BYTE[3000];
// save part of original image to buffer
for (int y = SaveLoadWin->width * 60; y < SaveLoadWin->width * 75; y += SaveLoadWin->width) {
memcpy(SaveLoadSurface + (200 * z++), SaveLoadWin->surface + 70 + y, 200);
}
} else {
// paste image from buffer into text area
for (int y = SaveLoadWin->width * 60; y < SaveLoadWin->width * 75; y += SaveLoadWin->width) {
memcpy(SaveLoadWin->surface + 70 + y, SaveLoadSurface + (200 * z++), 200);
}
}
BYTE ConsoleGreen = *ptr_GreenColor; // palette offset stored in mem - text colour
@@ -508,3 +528,7 @@ void ExtraSaveSlotsInit() {
dlogr(" Done", DL_INIT);
}
}
void ExtraSaveSlotsExit() {
if (SaveLoadSurface) delete[] SaveLoadSurface;
}
+1
View File
@@ -21,3 +21,4 @@
extern DWORD LSPageOffset;
void ExtraSaveSlotsInit();
void ExtraSaveSlotsExit();
+1
View File
@@ -773,6 +773,7 @@ static void _stdcall OnExit() {
SkillsExit();
ReputationsExit();
ConsoleExit();
ExtraSaveSlotsExit();
BooksExit();
//gExtraGameMsgLists.clear();
AnimationsExit();