/*
* Seven Kingdoms: Ancient Adversaries
*
* Copyright 1997,1998 Enlight Software Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
*/
//Filename : OGAME.H
//Description : Header file for Game class
#ifndef __OGAME_H
#define __OGAME_H
#ifndef __WINDOWS_
#include
#endif
#ifndef __ALL_H
#include
#endif
#ifndef __OCONFIG_H
#include
#endif
//-------- Define game modes -----------//
enum { GAME_PREGAME=1,
GAME_SINGLE_PLAYER, // game_mode is set once the player clicks an option on the screen, the game doesn't have to be actually running.
GAME_TUTORIAL,
GAME_TEST,
GAME_MULTI_PLAYER,
GAME_CAMPAIGN,
GAME_ENCYCLOPEDIA,
// ####### begin Gilbert 2/9 ######//
GAME_CREDITS
// ####### end Gilbert 2/9 ######//
};
//--------- Define struct ColorRemapMethod ----------//
struct ColorRemapMethod
{
int primary_color;
int secondary_color;
};
//--------- Define struct ColorRemap ----------//
#pragma pack(1)
struct ColorRemap
{
public:
char main_color;
char color_table[256];
public:
void set_remap_color(ColorRemapMethod*);
void load(char*);
};
#pragma pack()
//----- define struct ScenInfo -------//
struct ScenInfo
{
enum { SCEN_NAME_LEN=80 };
char* file_name;
char scen_name[SCEN_NAME_LEN+1];
//#ifdef AMPLUS
char dir_id; // real path look from DIR_SCENARIO_PATH(dir_id)
//#endif
short goal_difficulty;
short goal_score_bonus;
};
//-------- Define class Game -----------//
struct Location;
struct NewNationPara;
#pragma pack(1)
class Game
{
public:
char init_flag;
char started_flag;
char game_mode;
char game_has_ended; // whether game_end() has been called once already and the player is now just staying in the game to continue to play or observe
//-------- color remap info -------//
ColorRemap color_remap_array[MAX_COLOR_SCHEME+1];
public:
Game();
int init(int loadGameCall=0);
void deinit(int loadGameCall=0);
void main_menu();
void in_game_menu();
int in_game_option_menu();
void game_end(int winNationRecno, int playerDestroyed=0, int surrenderToNationRecno=0, int retireFlag=0);
int select_run_scenario();
int select_scenario(int scenCount, ScenInfo* scenInfoArray);
int run_scenario(ScenInfo* scenInfo);
void demo_disp_ad_page();
void demo_disp_logo();
void mp_broadcast_setting();
char* get_color_remap_table(int nationRecno, int selectedFlag);
// ###### begin Gilbert 24/10 #######//
static void disp_gen_map_status( int curStep, int maxStep, int section );
// ###### end Gilbert 24/10 #######//
// ###### begin Gilbert 13/2 #######//
void multi_player_menu(char *cmdLine);
// ###### end Gilbert 13/2 #######//
int write_file(File* filePtr);
int read_file(File* filePtr);
private:
void init_remap_table();
void disp_version();
void run_main_menu_option(int);
void single_player_menu();
// void multi_player_menu();
void single_player_game(int);
void multi_player_game(char *cmdLine);
void test_game();
void load_mp_game(char *saveFileName, char *cmdLine);
void view_encyclopedia();
void view_credits();
//------- multiplayer game functions -------//
int mp_select_mode(char *saveGameName);
int mp_select_option(NewNationPara*, int*);
int mp_select_service();
int mp_select_session();
void mp_disp_players();
int mp_select_load_option(char *);
};
#pragma pack()
extern Game game;
extern char game_demo_mode, game_design_mode;
//-------------------------------------//
#endif