REminiscence/menu.h

97 lines
1.9 KiB
C

/*
* REminiscence - Flashback interpreter
* Copyright (C) 2005-2019 Gregory Montoir (cyx@users.sourceforge.net)
*/
#ifndef MENU_H__
#define MENU_H__
#include "intern.h"
struct Resource;
struct SystemStub;
struct Video;
struct Menu {
enum {
MENU_OPTION_ITEM_START,
MENU_OPTION_ITEM_SKILL,
MENU_OPTION_ITEM_PASSWORD,
MENU_OPTION_ITEM_LEVEL,
MENU_OPTION_ITEM_INFO,
MENU_OPTION_ITEM_DEMO,
MENU_OPTION_ITEM_QUIT
};
enum {
SCREEN_TITLE,
SCREEN_SKILL,
SCREEN_PASSWORD,
SCREEN_LEVEL,
SCREEN_INFO
};
enum {
kMacTitleScreen_MacPlay = 1,
kMacTitleScreen_Presage = 2,
kMacTitleScreen_Flashback = 3,
kMacTitleScreen_LeftEye = 4,
kMacTitleScreen_RightEye = 5,
kMacTitleScreen_Controls = 6
};
enum {
EVENTS_DELAY = 80
};
struct Item {
int str;
int opt;
};
static const char *_levelNames[];
static const char *_passwordsDOS[];
static const char *_passwordsFrAmiga[];
static const char *_passwordsEnAmiga[];
static const char *_passwordsMac[];
static const uint8_t _flagEn16x12[];
static const uint8_t _flagFr16x12[];
static const uint8_t _flagDe16x12[];
static const uint8_t _flagIt16x12[];
static const uint8_t _flagJp16x12[];
static const uint8_t _flagSp16x12[];
Resource *_res;
SystemStub *_stub;
Video *_vid;
int _currentScreen;
int _nextScreen;
int _selectedOption;
int _skill;
int _level;
uint8_t _charVar1;
uint8_t _charVar2;
uint8_t _charVar3;
uint8_t _charVar4;
uint8_t _charVar5;
Menu(Resource *res, SystemStub *stub, Video *vid);
void drawString(const char *str, int16_t y, int16_t x, uint8_t color);
void drawString2(const char *str, int16_t y, int16_t x);
void loadPicture(const char *prefix);
void handleInfoScreen();
void handleSkillScreen();
bool handlePasswordScreen();
bool handleLevelScreen();
void handleTitleScreen();
const char *getLevelPassword(int level, int skill) const;
};
#endif // MENU_H__