Cleanup of doom.cpp (#1767)

This commit is contained in:
Vladimir Olteanu 2021-04-30 10:02:46 +03:00 committed by GitHub
commit 51d8b9acca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 46 deletions

View file

@ -346,7 +346,7 @@ void CheckCursMove()
CheckPanelInfo();
return;
}
if (doomflag) {
if (DoomFlag) {
return;
}
if (invflag && MouseX > RIGHT_PANEL && MouseY <= SPANEL_HEIGHT) {

View file

@ -883,7 +883,7 @@ static bool LeftMouseDown(int wParam)
if (PauseMode == 2) {
return false;
}
if (doomflag) {
if (DoomFlag) {
doom_close();
return false;
}
@ -955,7 +955,7 @@ static void LeftMouseUp(int wParam)
static void RightMouseDown()
{
if (!gmenu_is_active() && sgnTimeoutCurs == CURSOR_NONE && PauseMode != 2 && !plr[myplr]._pInvincible) {
if (doomflag) {
if (DoomFlag) {
doom_close();
} else if (stextflag == STORE_NONE) {
if (spselflag) {
@ -1033,7 +1033,7 @@ bool PressEscKey()
{
bool rv = false;
if (doomflag) {
if (DoomFlag) {
doom_close();
rv = true;
}
@ -1298,7 +1298,7 @@ static void PressChar(int32_t vkey)
if (PauseMode == 2) {
return;
}
if (doomflag) {
if (DoomFlag) {
doom_close();
return;
}

View file

@ -9,29 +9,26 @@
namespace devilution {
int doom_quest_time;
int doom_stars_drawn;
BYTE *pDoomCel;
bool doomflag;
int DoomQuestTime;
std::unique_ptr<uint8_t[]> DoomCel;
bool DoomFlag;
int DoomQuestState;
/*
void doom_reset_state()
{
if (DoomQuestState <= 0) {
DoomQuestState = 0;
}
DoomQuestState = std::max(DoomQuestState, 0);
}
void doom_play_movie()
{
if (DoomQuestState < 36001) {
if (DoomQuestState >= 36001)
return;
DoomQuestState++;
if (DoomQuestState == 36001) {
PlayInGameMovie("gendata\\doom.smk");
DoomQuestState++;
}
}
if (DoomQuestState == 36001) {
PlayInGameMovie("gendata\\doom.smk");
DoomQuestState++;
}
}
*/
@ -44,57 +41,41 @@ int doom_get_frame_from_time()
return DoomQuestState / 1200;
}
void doom_cleanup()
{
if (pDoomCel != nullptr) {
MemFreeDbg(pDoomCel);
pDoomCel = nullptr;
}
}
static bool doom_alloc_cel()
{
doom_cleanup();
pDoomCel = DiabloAllocPtr(0x39000);
return pDoomCel != nullptr;
}
static bool doom_load_graphics()
{
bool ret;
ret = false;
strcpy(tempstr, "Items\\Map\\MapZtown.CEL");
if (LoadFileWithMem(tempstr, pDoomCel) != 0)
if (LoadFileWithMem(tempstr, DoomCel.get()) != 0)
ret = true;
return ret;
}
void doom_init()
{
if (doom_alloc_cel()) {
doom_quest_time = doom_get_frame_from_time() == 31 ? 31 : 0;
if (doom_load_graphics()) {
doomflag = true;
} else {
doom_close();
}
DoomCel = std::make_unique<uint8_t[]>(0x39000);
DoomQuestTime = doom_get_frame_from_time() == 31 ? 31 : 0;
if (doom_load_graphics()) {
DoomFlag = true;
} else {
doom_close();
}
}
void doom_close()
{
doomflag = false;
doom_cleanup();
DoomFlag = false;
DoomCel = nullptr;
}
void doom_draw(const CelOutputBuffer &out)
{
if (!doomflag) {
if (!DoomFlag) {
return;
}
CelDrawTo(out, PANEL_X, PANEL_Y - 1, pDoomCel, 1, 640);
CelDrawTo(out, PANEL_X, PANEL_Y - 1, DoomCel.get(), 1, 640);
}
} // namespace devilution

View file

@ -9,7 +9,7 @@
namespace devilution {
extern bool doomflag;
extern bool DoomFlag;
extern int DoomQuestState;
int doom_get_frame_from_time();