/*
* 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 : OCONFIG.H
//Description : Header file for Game Config class
#ifndef __OCONFIG_H
#define __OCONFIG_H
#ifndef __OFILE_H
#include
#endif
//------------- Define constant -------------//
enum { OPTION_NONE=0, OPTION_LOW, OPTION_MODERATE, OPTION_HIGH, OPTION_VERY_HIGH };
enum { OPTION_MONSTER_NONE=0, OPTION_MONSTER_DEFENSIVE, OPTION_MONSTER_OFFENSIVE };
enum { OPTION_VERY_EASY, OPTION_EASY, OPTION_MEDIUM, OPTION_HARD, OPTION_VERY_HARD, OPTION_CUSTOM };
enum { OPTION_DISPLAY_MAJOR_NEWS, OPTION_DISPLAY_ALL_NEWS };
//------------- Define constant -------------//
enum { SMALL_STARTUP_RESOURCE = 4000,
MEDIUM_STARTUP_RESOURCE = 7000,
LARGE_STARTUP_RESOURCE = 12000,
VERY_LARGE_STARTUP_RESOURCE = 20000 };
//---------- Define class Config -----------//
#pragma pack(1)
class Config
{
public:
void init();
void deinit();
void default_game_setting();
void default_cheat_setting();
void default_local_game_setting();
void default_preference();
void change_game_setting( Config & );
void change_preference( Config & );
void change_difficulty(int);
int single_player_difficulty();
int multi_player_difficulty(int remotePlayers);
int write_file(File* filePtr);
int read_file(File* filePtr, int keepSysSettings=0);
int save(char *); // save to file
int load(char *); // load from file
void reset_cheat_setting();
void enable_weather_visual();
void disable_weather_visual();
void enable_weather_audio();
void disable_weather_audio();
public:
enum { PLAYER_NAME_LEN=20 }; // should be te same as NationBase::KING_NAME_LEN
//--------- GLOBAL GAME SETTING --------//
//
// parameters under GLOBAL GAME SETTING should remain unchange
// after the game starts, and are the same across other players
// in a multiplayer game
// (i.e. change_game_setting() should updates all these setting )
//
//--------------------------------------//
//------- parameter settings --------//
short difficulty_rating;
char ai_nation_count; // no. of AI nations in the game
short start_up_cash;
// short start_up_food;
short ai_start_up_cash;
// short ai_start_up_food;
char ai_aggressiveness;
short start_up_independent_town;
short start_up_raw_site;
char difficulty_level;
//-------- option settings ---------//
char explore_whole_map; // whether the map is explored at first place
char fog_of_war; // fog of war option
short terrain_set;
short latitude;
char weather_effect;
char land_mass;
char new_independent_town_emerge;
char independent_town_resistance; // whether independent towns' defenders have higher combat levels
char random_event_frequency;
char new_nation_emerge;
char monster_type;
char start_up_has_mine_nearby;
char random_start_up;
//--------- goal ----------//
char goal_destroy_monster;
char goal_population_flag;
char goal_economic_score_flag;
char goal_total_score_flag;
char goal_year_limit_flag;
int goal_population;
int goal_economic_score;
int goal_total_score;
int goal_year_limit;
//------- game setting on fire ---------//
char fire_spread_rate; // 0 to disable, 10 for normal
char wind_spread_fire_rate; // 0 to disable, 5 for normal
char fire_fade_rate; // 1 for slow, 2 for fast
char fire_restore_prob; // 0 to 100, 5 for normal
char rain_reduce_fire_rate; // 0 to 20, 5 for normal
char fire_damage; // 0 to disable 2 for normal
//--------- CHEAT GAME SETTING --------//
//
// parameters under CHEAT GAME SETTING can be changed
// after the game starts, and must be reset in in a multiplayer game
// (i.e. reset_cheat_setting() can reset all these setting )
//
//--------------------------------------//
char show_ai_info;
char fast_build; // fast building everything
char disable_ai_flag;
char king_undie_flag; // for testing game only
//--------- LOCAL GAME SETTING --------//
//
// parameters under LOCAL GAME SETTING should remain unchange
// after the game starts, may not be the same across other players
//
//-------------------------------------//
char race_id;
char player_name[PLAYER_NAME_LEN+1];
char player_nation_color;
char expired_flag;
//--------- PREFERENCE --------//
//
// parameters under PREFERENCE are changeable during the game
// the game will not be affect at any setting
//
//-------------------------------------//
char opaque_report;
char disp_news_flag;
short scroll_speed; // map scrolling speed. 1-slowest, 10-fastest
short frame_speed; // game speed, the desired frames per second
char help_mode;
char disp_town_name;
char disp_spy_sign;
char show_all_unit_icon; // 0:show icon when pointed, 1:always
char show_unit_path; // bit 0 show unit path on ZoomMatrix, bit 1 for MapMatrix
//------- sound effect --------//
char music_flag;
short cd_music_volume; // a value from 0 to 100
short wav_music_volume; // a value from 0 to 100
char sound_effect_flag;
short sound_effect_volume; // a value from 0 to 100
char pan_control; // mono speaker should disable pan_control
//------- weather visual effect flags -------//
char lightning_visual;
char earthquake_visual;
char rain_visual;
char snow_visual;
char snow_ground; // 0=disable, 1=i_snow, 2=snow_res
//-------- weather audio effect flags -------//
char lightning_audio;
char earthquake_audio;
char rain_audio;
char snow_audio; // not used
char wind_audio;
//--------- weather visual effect parameters --------//
int lightning_brightness; // 0, 20, 40 or 60
int cloud_darkness; // 0 to 5, 0 to disable cloud darkness
//-------- weather audio effect parameters ----------//
long lightning_volume; // default 100
long earthquake_volume; // default 100
long rain_volume; // default 90
long snow_volume; // default 100
long wind_volume; // default 70
//------------ map prefernce -------------//
char blacken_map; // whether the map is blackened at the first place
char explore_mask_method; // 0 for none, 1 for masking, 2 for remapping
char fog_mask_method; // 1 for fast masking, 2 for slow remapping
};
#pragma pack()
//------------------------------------------//
extern Config config;
#endif