mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Some code edits to ExtraSaveSlots.cpp
This commit is contained in:
+35
-11
@@ -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;
|
||||
}
|
||||
|
||||
@@ -21,3 +21,4 @@
|
||||
extern DWORD LSPageOffset;
|
||||
|
||||
void ExtraSaveSlotsInit();
|
||||
void ExtraSaveSlotsExit();
|
||||
|
||||
@@ -773,6 +773,7 @@ static void _stdcall OnExit() {
|
||||
SkillsExit();
|
||||
ReputationsExit();
|
||||
ConsoleExit();
|
||||
ExtraSaveSlotsExit();
|
||||
BooksExit();
|
||||
//gExtraGameMsgLists.clear();
|
||||
AnimationsExit();
|
||||
|
||||
Reference in New Issue
Block a user