Review pipboyOpen

This commit is contained in:
Alexander Batalov 2022-08-07 19:03:43 +03:00
parent 0ec5306de5
commit 6c74c461c2
3 changed files with 19 additions and 11 deletions

View File

@ -588,7 +588,7 @@ int gameHandleKey(int eventCode, bool isInCombatMode)
showDialogBox(title, NULL, 0, 192, 116, _colorTable[32328], NULL, _colorTable[32328], 0); showDialogBox(title, NULL, 0, 192, 116, _colorTable[32328], NULL, _colorTable[32328], 0);
} else { } else {
soundPlayFile("ib1p1xx1"); soundPlayFile("ib1p1xx1");
pipboyOpen(false); pipboyOpen(PIPBOY_OPEN_INTENT_UNSPECIFIED);
} }
} }
break; break;
@ -656,7 +656,7 @@ int gameHandleKey(int eventCode, bool isInCombatMode)
showDialogBox(title, NULL, 0, 192, 116, _colorTable[32328], NULL, _colorTable[32328], 0); showDialogBox(title, NULL, 0, 192, 116, _colorTable[32328], NULL, _colorTable[32328], 0);
} else { } else {
soundPlayFile("ib1p1xx1"); soundPlayFile("ib1p1xx1");
pipboyOpen(true); pipboyOpen(PIPBOY_OPEN_INTENT_REST);
} }
} }
break; break;

View File

@ -187,7 +187,7 @@ typedef struct PipboyBomb {
typedef void PipboyRenderProc(int a1); typedef void PipboyRenderProc(int a1);
static int pipboyWindowInit(bool forceRest); static int pipboyWindowInit(int intent);
static void pipboyWindowFree(); static void pipboyWindowFree();
static void _pip_init_(); static void _pip_init_();
static void pipboyDrawNumber(int value, int digits, int x, int y); static void pipboyDrawNumber(int value, int digits, int x, int y);
@ -396,7 +396,7 @@ unsigned char _holo_flag;
unsigned char _stat_flag; unsigned char _stat_flag;
// 0x497004 // 0x497004
int pipboyOpen(bool forceRest) int pipboyOpen(int intent)
{ {
if (!_wmMapPipboyActive()) { if (!_wmMapPipboyActive()) {
// You aren't wearing the pipboy! // You aren't wearing the pipboy!
@ -405,7 +405,8 @@ int pipboyOpen(bool forceRest)
return 0; return 0;
} }
if (pipboyWindowInit(forceRest) == -1) { intent = pipboyWindowInit(intent);
if (intent == -1) {
return -1; return -1;
} }
@ -415,9 +416,9 @@ int pipboyOpen(bool forceRest)
while (true) { while (true) {
int keyCode = _get_input(); int keyCode = _get_input();
if (forceRest) { if (intent == PIPBOY_OPEN_INTENT_REST) {
keyCode = 504; keyCode = 504;
forceRest = false; intent = PIPBOY_OPEN_INTENT_UNSPECIFIED;
} }
mouseGetPositionInWindow(gPipboyWindow, &gPipboyMouseX, &gPipboyMouseY); mouseGetPositionInWindow(gPipboyWindow, &gPipboyMouseX, &gPipboyMouseY);
@ -470,7 +471,7 @@ int pipboyOpen(bool forceRest)
} }
// 0x497228 // 0x497228
static int pipboyWindowInit(bool forceRest) static int pipboyWindowInit(int intent)
{ {
gPipboyWindowIsoWasEnabled = isoDisable(); gPipboyWindowIsoWasEnabled = isoDisable();
@ -591,7 +592,7 @@ static int pipboyWindowInit(bool forceRest)
y += 27; y += 27;
} }
if (forceRest) { if (intent == PIPBOY_OPEN_INTENT_REST) {
if (!_critter_can_obj_dude_rest()) { if (!_critter_can_obj_dude_rest()) {
blitBufferToBufferTrans( blitBufferToBufferTrans(
gPipboyFrmData[PIPBOY_FRM_LOGO], gPipboyFrmData[PIPBOY_FRM_LOGO],
@ -634,6 +635,8 @@ static int pipboyWindowInit(bool forceRest)
const char* text = getmsg(&gPipboyMessageList, &gPipboyMessageListItem, 215); const char* text = getmsg(&gPipboyMessageList, &gPipboyMessageListItem, 215);
showDialogBox(text, NULL, 0, 192, 135, _colorTable[32328], 0, _colorTable[32328], DIALOG_BOX_LARGE); showDialogBox(text, NULL, 0, 192, 135, _colorTable[32328], 0, _colorTable[32328], DIALOG_BOX_LARGE);
intent = PIPBOY_OPEN_INTENT_UNSPECIFIED;
} }
} else { } else {
blitBufferToBufferTrans( blitBufferToBufferTrans(
@ -681,7 +684,7 @@ static int pipboyWindowInit(bool forceRest)
soundPlayFile("pipon"); soundPlayFile("pipon");
windowRefresh(gPipboyWindow); windowRefresh(gPipboyWindow);
return 0; return intent;
} }
// 0x497828 // 0x497828

View File

@ -3,7 +3,12 @@
#include "db.h" #include "db.h"
int pipboyOpen(bool forceRest); typedef enum PipboyOpenIntent {
PIPBOY_OPEN_INTENT_UNSPECIFIED = 0,
PIPBOY_OPEN_INTENT_REST = 1,
} PipboyOpenIntent;
int pipboyOpen(int intent);
void pipboyInit(); void pipboyInit();
void pipboyReset(); void pipboyReset();
int pipboySave(File* stream); int pipboySave(File* stream);