parent
3b442ea4dd
commit
7b0c92843c
112
src/main.cc
112
src/main.cc
|
@ -1,5 +1,6 @@
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
|
#include "art.h"
|
||||||
#include "autorun.h"
|
#include "autorun.h"
|
||||||
#include "character_selector.h"
|
#include "character_selector.h"
|
||||||
#include "color.h"
|
#include "color.h"
|
||||||
|
@ -10,6 +11,7 @@
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "draw.h"
|
#include "draw.h"
|
||||||
#include "endgame.h"
|
#include "endgame.h"
|
||||||
|
#include "fps_limiter.h"
|
||||||
#include "game.h"
|
#include "game.h"
|
||||||
#include "game_config.h"
|
#include "game_config.h"
|
||||||
#include "game_mouse.h"
|
#include "game_mouse.h"
|
||||||
|
@ -41,50 +43,88 @@
|
||||||
#define DEATH_WINDOW_WIDTH 640
|
#define DEATH_WINDOW_WIDTH 640
|
||||||
#define DEATH_WINDOW_HEIGHT 480
|
#define DEATH_WINDOW_HEIGHT 480
|
||||||
|
|
||||||
|
typedef enum MainMenuButton {
|
||||||
|
MAIN_MENU_BUTTON_INTRO,
|
||||||
|
MAIN_MENU_BUTTON_NEW_GAME,
|
||||||
|
MAIN_MENU_BUTTON_LOAD_GAME,
|
||||||
|
MAIN_MENU_BUTTON_OPTIONS,
|
||||||
|
MAIN_MENU_BUTTON_CREDITS,
|
||||||
|
MAIN_MENU_BUTTON_EXIT,
|
||||||
|
MAIN_MENU_BUTTON_COUNT,
|
||||||
|
} MainMenuButton;
|
||||||
|
|
||||||
|
typedef enum MainMenuOption {
|
||||||
|
MAIN_MENU_INTRO,
|
||||||
|
MAIN_MENU_NEW_GAME,
|
||||||
|
MAIN_MENU_LOAD_GAME,
|
||||||
|
MAIN_MENU_3,
|
||||||
|
MAIN_MENU_TIMEOUT,
|
||||||
|
MAIN_MENU_CREDITS,
|
||||||
|
MAIN_MENU_QUOTES,
|
||||||
|
MAIN_MENU_EXIT,
|
||||||
|
MAIN_MENU_SELFRUN,
|
||||||
|
MAIN_MENU_OPTIONS,
|
||||||
|
} MainMenuOption;
|
||||||
|
|
||||||
|
static bool falloutInit(int argc, char** argv);
|
||||||
|
static int _main_load_new(char* fname);
|
||||||
|
static void mainLoop(FpsLimiter& fpsLimiter);
|
||||||
|
static void _main_selfrun_exit();
|
||||||
|
static void showDeath();
|
||||||
|
static void _main_death_voiceover_callback();
|
||||||
|
static int _mainDeathGrabTextFile(const char* fileName, char* dest);
|
||||||
|
static int _mainDeathWordWrap(char* text, int width, short* beginnings, short* count);
|
||||||
|
static int mainMenuWindowInit();
|
||||||
|
static void mainMenuWindowFree();
|
||||||
|
static void mainMenuWindowHide(bool animate);
|
||||||
|
static void mainMenuWindowUnhide(bool animate);
|
||||||
|
static int _main_menu_is_enabled();
|
||||||
|
static int mainMenuWindowHandleEvents(FpsLimiter& fpsLimiter);
|
||||||
|
|
||||||
// 0x5194C8
|
// 0x5194C8
|
||||||
char _mainMap[] = "artemple.map";
|
static char _mainMap[] = "artemple.map";
|
||||||
|
|
||||||
// 0x5194D8
|
// 0x5194D8
|
||||||
int _main_game_paused = 0;
|
static int _main_game_paused = 0;
|
||||||
|
|
||||||
// 0x5194DC
|
// 0x5194DC
|
||||||
char** _main_selfrun_list = NULL;
|
static char** _main_selfrun_list = NULL;
|
||||||
|
|
||||||
// 0x5194E0
|
// 0x5194E0
|
||||||
int _main_selfrun_count = 0;
|
static int _main_selfrun_count = 0;
|
||||||
|
|
||||||
// 0x5194E4
|
// 0x5194E4
|
||||||
int _main_selfrun_index = 0;
|
static int _main_selfrun_index = 0;
|
||||||
|
|
||||||
// 0x5194E8
|
// 0x5194E8
|
||||||
bool _main_show_death_scene = false;
|
static bool _main_show_death_scene = false;
|
||||||
|
|
||||||
// 0x5194F0
|
// 0x5194F0
|
||||||
int gMainMenuWindow = -1;
|
static int gMainMenuWindow = -1;
|
||||||
|
|
||||||
// 0x5194F4
|
// 0x5194F4
|
||||||
unsigned char* gMainMenuWindowBuffer = NULL;
|
static unsigned char* gMainMenuWindowBuffer = NULL;
|
||||||
|
|
||||||
// 0x5194F8
|
// 0x5194F8
|
||||||
unsigned char* gMainMenuBackgroundFrmData = NULL;
|
static unsigned char* gMainMenuBackgroundFrmData = NULL;
|
||||||
|
|
||||||
// 0x5194FC
|
// 0x5194FC
|
||||||
unsigned char* gMainMenuButtonUpFrmData = NULL;
|
static unsigned char* gMainMenuButtonUpFrmData = NULL;
|
||||||
|
|
||||||
// 0x519500
|
// 0x519500
|
||||||
unsigned char* gMainMenuButtonDownFrmData = NULL;
|
static unsigned char* gMainMenuButtonDownFrmData = NULL;
|
||||||
|
|
||||||
// 0x519504
|
// 0x519504
|
||||||
bool _in_main_menu = false;
|
static bool _in_main_menu = false;
|
||||||
|
|
||||||
// 0x519508
|
// 0x519508
|
||||||
bool gMainMenuWindowInitialized = false;
|
static bool gMainMenuWindowInitialized = false;
|
||||||
|
|
||||||
// 0x51950C
|
// 0x51950C
|
||||||
unsigned int gMainMenuScreensaverDelay = 120000;
|
static unsigned int gMainMenuScreensaverDelay = 120000;
|
||||||
|
|
||||||
// 0x519510
|
// 0x519510
|
||||||
const int gMainMenuButtonKeyBindings[MAIN_MENU_BUTTON_COUNT] = {
|
static const int gMainMenuButtonKeyBindings[MAIN_MENU_BUTTON_COUNT] = {
|
||||||
KEY_LOWERCASE_I, // intro
|
KEY_LOWERCASE_I, // intro
|
||||||
KEY_LOWERCASE_N, // new game
|
KEY_LOWERCASE_N, // new game
|
||||||
KEY_LOWERCASE_L, // load game
|
KEY_LOWERCASE_L, // load game
|
||||||
|
@ -94,7 +134,7 @@ const int gMainMenuButtonKeyBindings[MAIN_MENU_BUTTON_COUNT] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x519528
|
// 0x519528
|
||||||
const int _return_values[MAIN_MENU_BUTTON_COUNT] = {
|
static const int _return_values[MAIN_MENU_BUTTON_COUNT] = {
|
||||||
MAIN_MENU_INTRO,
|
MAIN_MENU_INTRO,
|
||||||
MAIN_MENU_NEW_GAME,
|
MAIN_MENU_NEW_GAME,
|
||||||
MAIN_MENU_LOAD_GAME,
|
MAIN_MENU_LOAD_GAME,
|
||||||
|
@ -104,22 +144,22 @@ const int _return_values[MAIN_MENU_BUTTON_COUNT] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x614838
|
// 0x614838
|
||||||
bool _main_death_voiceover_done;
|
static bool _main_death_voiceover_done;
|
||||||
|
|
||||||
// 0x614840
|
// 0x614840
|
||||||
int gMainMenuButtons[MAIN_MENU_BUTTON_COUNT];
|
static int gMainMenuButtons[MAIN_MENU_BUTTON_COUNT];
|
||||||
|
|
||||||
// 0x614858
|
// 0x614858
|
||||||
bool gMainMenuWindowHidden;
|
static bool gMainMenuWindowHidden;
|
||||||
|
|
||||||
// 0x61485C
|
// 0x61485C
|
||||||
CacheEntry* gMainMenuButtonUpFrmHandle;
|
static CacheEntry* gMainMenuButtonUpFrmHandle;
|
||||||
|
|
||||||
// 0x614860
|
// 0x614860
|
||||||
CacheEntry* gMainMenuButtonDownFrmHandle;
|
static CacheEntry* gMainMenuButtonDownFrmHandle;
|
||||||
|
|
||||||
// 0x614864
|
// 0x614864
|
||||||
CacheEntry* gMainMenuBackgroundFrmHandle;
|
static CacheEntry* gMainMenuBackgroundFrmHandle;
|
||||||
|
|
||||||
// 0x48099C
|
// 0x48099C
|
||||||
int falloutMain(int argc, char** argv)
|
int falloutMain(int argc, char** argv)
|
||||||
|
@ -279,7 +319,7 @@ int falloutMain(int argc, char** argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x480CC0
|
// 0x480CC0
|
||||||
bool falloutInit(int argc, char** argv)
|
static bool falloutInit(int argc, char** argv)
|
||||||
{
|
{
|
||||||
if (gameInitWithOptions("FALLOUT II", false, 0, 0, argc, argv) == -1) {
|
if (gameInitWithOptions("FALLOUT II", false, 0, 0, argc, argv) == -1) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -297,7 +337,7 @@ bool falloutInit(int argc, char** argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x480D4C
|
// 0x480D4C
|
||||||
int _main_load_new(char* mapFileName)
|
static int _main_load_new(char* mapFileName)
|
||||||
{
|
{
|
||||||
_game_user_wants_to_quit = 0;
|
_game_user_wants_to_quit = 0;
|
||||||
_main_show_death_scene = 0;
|
_main_show_death_scene = 0;
|
||||||
|
@ -323,7 +363,7 @@ int _main_load_new(char* mapFileName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x480E48
|
// 0x480E48
|
||||||
void mainLoop(FpsLimiter& fpsLimiter)
|
static void mainLoop(FpsLimiter& fpsLimiter)
|
||||||
{
|
{
|
||||||
bool cursorWasHidden = cursorIsHidden();
|
bool cursorWasHidden = cursorIsHidden();
|
||||||
if (cursorWasHidden) {
|
if (cursorWasHidden) {
|
||||||
|
@ -365,7 +405,7 @@ void mainLoop(FpsLimiter& fpsLimiter)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x480F38
|
// 0x480F38
|
||||||
void _main_selfrun_exit()
|
static void _main_selfrun_exit()
|
||||||
{
|
{
|
||||||
if (_main_selfrun_list != NULL) {
|
if (_main_selfrun_list != NULL) {
|
||||||
_selfrun_free_list(&_main_selfrun_list);
|
_selfrun_free_list(&_main_selfrun_list);
|
||||||
|
@ -377,7 +417,7 @@ void _main_selfrun_exit()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x48118C
|
// 0x48118C
|
||||||
void showDeath()
|
static void showDeath()
|
||||||
{
|
{
|
||||||
artCacheFlush();
|
artCacheFlush();
|
||||||
colorCycleDisable();
|
colorCycleDisable();
|
||||||
|
@ -499,7 +539,7 @@ void showDeath()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4814A8
|
// 0x4814A8
|
||||||
void _main_death_voiceover_callback()
|
static void _main_death_voiceover_callback()
|
||||||
{
|
{
|
||||||
_main_death_voiceover_done = true;
|
_main_death_voiceover_done = true;
|
||||||
}
|
}
|
||||||
|
@ -507,7 +547,7 @@ void _main_death_voiceover_callback()
|
||||||
// Read endgame subtitle.
|
// Read endgame subtitle.
|
||||||
//
|
//
|
||||||
// 0x4814B4
|
// 0x4814B4
|
||||||
int _mainDeathGrabTextFile(const char* fileName, char* dest)
|
static int _mainDeathGrabTextFile(const char* fileName, char* dest)
|
||||||
{
|
{
|
||||||
const char* p = strrchr(fileName, '\\');
|
const char* p = strrchr(fileName, '\\');
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
|
@ -549,7 +589,7 @@ int _mainDeathGrabTextFile(const char* fileName, char* dest)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x481598
|
// 0x481598
|
||||||
int _mainDeathWordWrap(char* text, int width, short* beginnings, short* count)
|
static int _mainDeathWordWrap(char* text, int width, short* beginnings, short* count)
|
||||||
{
|
{
|
||||||
// TODO: Probably wrong.
|
// TODO: Probably wrong.
|
||||||
while (true) {
|
while (true) {
|
||||||
|
@ -603,7 +643,7 @@ int _mainDeathWordWrap(char* text, int width, short* beginnings, short* count)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x481650
|
// 0x481650
|
||||||
int mainMenuWindowInit()
|
static int mainMenuWindowInit()
|
||||||
{
|
{
|
||||||
int fid;
|
int fid;
|
||||||
MessageListItem msg;
|
MessageListItem msg;
|
||||||
|
@ -737,7 +777,7 @@ int mainMenuWindowInit()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x481968
|
// 0x481968
|
||||||
void mainMenuWindowFree()
|
static void mainMenuWindowFree()
|
||||||
{
|
{
|
||||||
if (!gMainMenuWindowInitialized) {
|
if (!gMainMenuWindowInitialized) {
|
||||||
return;
|
return;
|
||||||
|
@ -770,7 +810,7 @@ void mainMenuWindowFree()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x481A00
|
// 0x481A00
|
||||||
void mainMenuWindowHide(bool animate)
|
static void mainMenuWindowHide(bool animate)
|
||||||
{
|
{
|
||||||
if (!gMainMenuWindowInitialized) {
|
if (!gMainMenuWindowInitialized) {
|
||||||
return;
|
return;
|
||||||
|
@ -793,7 +833,7 @@ void mainMenuWindowHide(bool animate)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x481A48
|
// 0x481A48
|
||||||
void mainMenuWindowUnhide(bool animate)
|
static void mainMenuWindowUnhide(bool animate)
|
||||||
{
|
{
|
||||||
if (!gMainMenuWindowInitialized) {
|
if (!gMainMenuWindowInitialized) {
|
||||||
return;
|
return;
|
||||||
|
@ -814,13 +854,13 @@ void mainMenuWindowUnhide(bool animate)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x481AA8
|
// 0x481AA8
|
||||||
int _main_menu_is_enabled()
|
static int _main_menu_is_enabled()
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x481AEC
|
// 0x481AEC
|
||||||
int mainMenuWindowHandleEvents(FpsLimiter& fpsLimiter)
|
static int mainMenuWindowHandleEvents(FpsLimiter& fpsLimiter)
|
||||||
{
|
{
|
||||||
_in_main_menu = true;
|
_in_main_menu = true;
|
||||||
|
|
||||||
|
|
64
src/main.h
64
src/main.h
|
@ -1,70 +1,6 @@
|
||||||
#ifndef MAIN_H
|
#ifndef MAIN_H
|
||||||
#define MAIN_H
|
#define MAIN_H
|
||||||
|
|
||||||
#include "art.h"
|
|
||||||
#include "fps_limiter.h"
|
|
||||||
|
|
||||||
typedef enum MainMenuButton {
|
|
||||||
MAIN_MENU_BUTTON_INTRO,
|
|
||||||
MAIN_MENU_BUTTON_NEW_GAME,
|
|
||||||
MAIN_MENU_BUTTON_LOAD_GAME,
|
|
||||||
MAIN_MENU_BUTTON_OPTIONS,
|
|
||||||
MAIN_MENU_BUTTON_CREDITS,
|
|
||||||
MAIN_MENU_BUTTON_EXIT,
|
|
||||||
MAIN_MENU_BUTTON_COUNT,
|
|
||||||
} MainMenuButton;
|
|
||||||
|
|
||||||
typedef enum MainMenuOption {
|
|
||||||
MAIN_MENU_INTRO,
|
|
||||||
MAIN_MENU_NEW_GAME,
|
|
||||||
MAIN_MENU_LOAD_GAME,
|
|
||||||
MAIN_MENU_3,
|
|
||||||
MAIN_MENU_TIMEOUT,
|
|
||||||
MAIN_MENU_CREDITS,
|
|
||||||
MAIN_MENU_QUOTES,
|
|
||||||
MAIN_MENU_EXIT,
|
|
||||||
MAIN_MENU_SELFRUN,
|
|
||||||
MAIN_MENU_OPTIONS,
|
|
||||||
} MainMenuOption;
|
|
||||||
|
|
||||||
extern char _mainMap[];
|
|
||||||
extern int _main_game_paused;
|
|
||||||
extern char** _main_selfrun_list;
|
|
||||||
extern int _main_selfrun_count;
|
|
||||||
extern int _main_selfrun_index;
|
|
||||||
extern bool _main_show_death_scene;
|
|
||||||
extern int mainMenuWindowHandle;
|
|
||||||
extern unsigned char* mainMenuWindowBuf;
|
|
||||||
extern unsigned char* gMainMenuBackgroundFrmData;
|
|
||||||
extern unsigned char* gMainMenuButtonUpFrmData;
|
|
||||||
extern unsigned char* gMainMenuButtonDownFrmData;
|
|
||||||
extern bool _in_main_menu;
|
|
||||||
extern bool gMainMenuWindowInitialized;
|
|
||||||
extern unsigned int gMainMenuScreensaverDelay;
|
|
||||||
extern const int gMainMenuButtonKeyBindings[MAIN_MENU_BUTTON_COUNT];
|
|
||||||
extern const int _return_values[MAIN_MENU_BUTTON_COUNT];
|
|
||||||
|
|
||||||
extern bool _main_death_voiceover_done;
|
|
||||||
extern int gMainMenuButtons[MAIN_MENU_BUTTON_COUNT];
|
|
||||||
extern bool gMainMenuWindowHidden;
|
|
||||||
extern CacheEntry* gMainMenuButtonUpFrmHandle;
|
|
||||||
extern CacheEntry* gMainMenuButtonDownFrmHandle;
|
|
||||||
extern CacheEntry* gMainMenuBackgroundFrmHandle;
|
|
||||||
|
|
||||||
int falloutMain(int argc, char** argv);
|
int falloutMain(int argc, char** argv);
|
||||||
bool falloutInit(int argc, char** argv);
|
|
||||||
int _main_load_new(char* fname);
|
|
||||||
void mainLoop(FpsLimiter& fpsLimiter);
|
|
||||||
void _main_selfrun_exit();
|
|
||||||
void showDeath();
|
|
||||||
void _main_death_voiceover_callback();
|
|
||||||
int _mainDeathGrabTextFile(const char* fileName, char* dest);
|
|
||||||
int _mainDeathWordWrap(char* text, int width, short* beginnings, short* count);
|
|
||||||
int mainMenuWindowInit();
|
|
||||||
void mainMenuWindowFree();
|
|
||||||
void mainMenuWindowHide(bool animate);
|
|
||||||
void mainMenuWindowUnhide(bool animate);
|
|
||||||
int _main_menu_is_enabled();
|
|
||||||
int mainMenuWindowHandleEvents(FpsLimiter& fpsLimiter);
|
|
||||||
|
|
||||||
#endif /* MAIN_H */
|
#endif /* MAIN_H */
|
||||||
|
|
Loading…
Reference in New Issue