/*
* 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 : OHELP.H
//Description : Header file of object Help
#ifndef __OHELP_H
#define __OHELP_H
//----------- Define constant -------------//
enum { NO_HELP, BRIEF_HELP, DETAIL_HELP }; // for config.help_mode
enum { MAX_HELP_INFO=200 }; // Maximum no. of help info allowed
//------------------------------------------//
//
// Structure of the HELP.RES :
//
// , , ,
//
//
//
//
//
// , , ,
//
//
// .
// .
// (Another help block, continue)
//
//------------------------------------------//
//---------- Define struct HelpInfo ------------//
struct HelpInfo
{
enum { HELP_CODE_LEN=8, HELP_TITLE_LEN=60 };
char help_code[HELP_CODE_LEN+1]; // either identify the help message by help code or area position
short area_x1, area_y1, area_x2, area_y2;
char help_title[HELP_TITLE_LEN+1];
char* help_text_ptr; // offset of the help text in the text buffer
short help_text_len; // length of the help text
};
//-----------------------------------------------//
class Help
{
public:
enum { SCREEN_CODE_LEN=8 };
enum { CUSTOM_HELP_TITLE_LEN=80, CUSTOM_HELP_DETAIL_LEN=200 };
char custom_help_title[CUSTOM_HELP_TITLE_LEN+1];
char custom_help_detail[CUSTOM_HELP_DETAIL_LEN+1];
char help_code[HelpInfo::HELP_CODE_LEN+1];
short help_x, help_y;
short help_info_count;
HelpInfo *help_info_array;
char *help_text_buf;
int help_text_buf_size;
char *save_scr_buf; // have a private save screen buffer for displaying the helpial text
short save_scr_x1, save_scr_y1, save_scr_x2, save_scr_y2;
short last_mouse_x;
short last_mouse_y;
int mouse_still_time;
public:
Help();
~Help();
void init(char* resName);
void deinit();
void load(char*);
void push_screen(char* screenCode);
void pop_screen();
void set_screen(char* screenCode);
void set_help(int x1, int y1, int x2, int y2, char* helpCode);
void set_unit_help(int unitId, int rankId, int x1, int y1, int x2, int y2);
void set_custom_help(int x1, int y1, int x2, int y2, char* helpTitle, char* helpDetail=NULL);
int should_disp();
void disp();
void disp_help(int centerX, int centerY, char* helpTitle, char* helpDetail);
void save_scr(int,int,int,int); // save the screen to the save screen buffer in Help
void rest_scr();
};
//-----------------------------------------------//
extern Help help;
#endif