You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.1 KiB

/**
* @file doom.cpp
*
* Implementation of the map of the stars quest.
*/
#include "doom.h"
#include "control.h"
#include "engine.h"
#include "engine/cel_sprite.hpp"
#include "engine/load_cel.hpp"
#include "engine/render/cel_render.hpp"
#include "utils/stdcompat/optional.hpp"
namespace devilution {
namespace {
std::optional<CelSprite> DoomCel;
} // namespace
int DoomQuestTime;
bool DoomFlag;
int DoomQuestState;
int doom_get_frame_from_time()
{
if (DoomQuestState == 36001) {
return 31;
}
return DoomQuestState / 1200;
}
static bool doom_load_graphics()
{
DoomCel = LoadCel("Items\\Map\\MapZtown.CEL", 640);
return true;
}
void doom_init()
{
DoomQuestTime = doom_get_frame_from_time() == 31 ? 31 : 0;
if (doom_load_graphics()) {
DoomFlag = true;
} else {
doom_close();
}
}
void doom_close()
{
DoomFlag = false;
DoomCel = std::nullopt;
}
void doom_draw(const CelOutputBuffer &out)
{
if (!DoomFlag) {
return;
}
CelDrawTo(out, { PANEL_X, PANEL_Y - 1 }, *DoomCel, 1);
}
} // namespace devilution