/*
* 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 : OINFO.H
//Description : Header file for class Info
#ifndef __OINFO_H
#define __OINFO_H
#ifndef __OSKILL_H
#include
#endif
#ifndef __ODYNARR_H
#include
#endif
#ifndef __OWORLD_H
#include
#endif
//---------- Define constant ---------//
enum { INFO_REPAINT=10, INFO_UPDATE, INFO_SPECIAL };
//--------- Define section positions ---------//
#define TOP_MENU_X1 4
#define TOP_MENU_Y1 4
#define TOP_MENU_X2 (ZOOM_X2-4)
#define TOP_MENU_Y2 30
#define INFO_X1 586
#define INFO_Y1 265
#define INFO_X2 790
#define INFO_Y2 589
#define MSG_X1 INFO_X1
#define MSG_Y1 (INFO_Y2-29)
#define MSG_X2 INFO_X2
#define MSG_Y2 INFO_Y2
//------- Nation report detail display mode -------//
enum { MAX_NATION_REPORT_MODE = 5 };
enum { NATION_REPORT_INFO=1,
NATION_REPORT_TALK,
NATION_REPORT_CHAT,
NATION_REPORT_TALK_LOG,
NATION_REPORT_DEBUG
};
enum { MAX_RANK_TYPE = 5 };
enum { CHAT_STR_LEN=100 };
enum { MAX_REMOTE_CHAT_STR=10 };
//-------- Define chat_receiver_type --------//
enum { MAX_CHAT_RECEIVER_TYPE = 3 };
enum { CHAT_RECEIVER_CURRENT=1,
CHAT_RECEIVER_ALL_ALLY,
CHAT_RECEIVER_ALL_HUMAN };
//--------- Define struct ChatInfo ----------//
#pragma pack(1)
struct ChatInfo
{
int received_date;
char from_nation_recno;
char chat_str[CHAT_STR_LEN+1];
};
#pragma pack()
//--------- Define struct TalkMsgDisp --------//
struct TalkMsgDisp
{
short recno;
int date;
char is_reply;
};
//----------- Define class Info -------------//
#pragma pack(1)
class Info
{
public:
int game_start_date; // set to Game::game_start_year in Info::init(), the actual date the game begins, not the scenario begins
int game_date;
int game_day;
int game_month;
int game_year;
int goal_deadline;
short goal_difficulty;
short goal_score_bonus;
int week_day; // = game_date&7
int year_day; // the nth day in a year
int year_passed; // no. of years passed since playing
int random_seed;
unsigned long start_play_time; // the time player start playing the game today
unsigned long total_play_time; // total time the player has played in all saved games
//------- report browsers recno -------//
short viewing_nation_recno; // which nation the player is viewing at with the reports.
short viewing_spy_recno; // the recno of the spy viewing the secret report of other nations
short default_viewing_nation_recno;
short browse_nation_recno;
short browse_race_recno;
short browse_firm_recno;
short browse_income_recno;
short browse_expense_recno;
short browse_troop_recno;
short browse_unit_recno;
short browse_tech_recno;
short browse_god_recno;
short browse_town_recno;
short browse_spy_recno;
short browse_caravan_recno;
short browse_ship_recno;
short browse_talk_msg_recno;
short browse_news_recno;
short browse_ai_action_recno;
short browse_ai_attack_recno;
//------ vars of the nation report ------//
char nation_report_mode;
short last_talk_nation_recno;
char player_reply_mode;
//------ chat string --------//
char chat_receiver_type;
char player_chat_str[CHAT_STR_LEN+1];
ChatInfo remote_chat_array[MAX_REMOTE_CHAT_STR];
//---------------------------------//
char last_write_offset; // it is used for an offset locator for excluding static member vars during reading and writing files
char* play_time_str(); // return total time played in string
char* game_duration_str();
short get_report_data(int recNo);
short get_report_data2(int recNo);
//------ keep a copy of bitmap of the panel texture -----//
char* info_background_bitmap; // declare them static, so they won't be saved
DynArray report_array;
DynArray report_array2;
DynArray talk_msg_disp_array;
public:
Info();
~Info();
void init();
void deinit();
void init_random_seed(int randomSeed);
void disp_panel();
void disp();
void update();
int detect();
void next_day();
void save_game_scr();
void rest_game_scr();
void free_game_scr();
void draw_selected();
void disp_heading();
int disp_loyalty(int x, int y, int x2, int curLoyalty, int targetLoyalty, int nationRecno, int refreshFlag);
void disp_military(int refreshFlag);
void detect_military();
void disp_nation(int refreshFlag);
void detect_nation();
void disp_economy(int refreshFlag);
void detect_economy();
void disp_town(int refreshFlag);
void detect_town();
void disp_trade(int refreshFlag);
void detect_trade();
void disp_tech(int refreshFlag);
void detect_tech();
void disp_rank(int refreshFlag);
void detect_rank();
void disp_spy(int refreshFlag);
void detect_spy();
void disp_ai_action(int refreshFlag);
void detect_ai_action();
void disp_news_log(int refreshFlag);
void detect_news_log();
void init_player_reply(int talkToNationRecno);
void player_reply_chat(int withNationRecno);
void process_viewing_spy();
void set_rank_data(int onlyHasContact);
char* get_rank_pos_str(int rankType, int nationRecno);
int get_rank_score(int rankType, int nationRecno); // score functions
int get_total_score(int nationRecno);
int write_file(File* filePtr);
int read_file(File* filePtr);
};
#pragma pack()
extern Info info;
//------------------------------------------//
#endif