123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- /*
- * 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 <http://www.gnu.org/licenses/>.
- *
- */
- //Filename : OCONFIG.H
- //Description : Header file for Game Config class
- #ifndef __OCONFIG_H
- #define __OCONFIG_H
- #ifndef __OFILE_H
- #include <OFILE.h>
- #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
|