/*
* 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 : OGODRES.H
//Description : Header file of object RaceRes
#ifndef __OGODRES_H
#define __OGODRES_H
#ifndef __ONATION_H
#include
#endif
#ifndef __OFILE_H
#include
#endif
//------------ Define god id. -------------//
#ifdef AMPLUS
enum { MAX_GOD=10 };
#else
enum { MAX_GOD=7 };
#endif
enum { GOD_NORMAN=1,
GOD_MAYA,
GOD_GREEK,
GOD_VIKING,
GOD_PERSIAN,
GOD_CHINESE,
GOD_JAPANESE,
#ifdef AMPLUS
GOD_EGYPTIAN,
GOD_INDIAN,
GOD_ZULU,
#endif
};
//------------ Define struct GodRec ---------------//
struct GodRec
{
enum { RACE_CODE_LEN=8, UNIT_CODE_LEN=8, PRAY_POINTS_LEN=3,
CAST_POWER_RANGE_LEN=3, RACE_ID_LEN=3, UNIT_ID_LEN=3 };
char race[RACE_CODE_LEN];
char unit[UNIT_CODE_LEN];
char exist_pray_points[PRAY_POINTS_LEN];
char power_pray_points[PRAY_POINTS_LEN];
char can_cast_power; // whether this god creature can cast power or not
char cast_power_range[CAST_POWER_RANGE_LEN];
char race_id[RACE_ID_LEN];
char unit_id[UNIT_ID_LEN];
};
//------------- Define struct GodInfo --------------//
#pragma pack(1)
struct GodInfo
{
public:
//----- constant vars ------//
char god_id;
char race_id;
char unit_id;
short exist_pray_points; // pray points consumption for the god to exist for 100 frames
short power_pray_points; // pray points consumption for each casting of its power
char can_cast_power; // whether this god creature can cast power or not
char cast_power_range; // location range of casting power
//------ game vars ------//
char nation_know_array[MAX_NATION];
int is_nation_know(int nationRecno) { return nation_know_array[nationRecno-1]; }
public:
short invoke(int firmRecno, int xLoc, int yLoc);
void enable_know(int nationRecno);
void disable_know(int nationRecno);
};
#pragma pack()
//----------- Define class GodRes ---------------//
class GodRes
{
public:
char init_flag;
short god_count;
GodInfo* god_info_array;
public:
GodRes();
void init();
void deinit();
int is_god_unit(int unitId);
void init_nation_know(int nationRecno);
void enable_know_all(int nationRecno);
int write_file(File*);
int read_file(File*);
GodInfo* operator[](int godId); // pass godId as recno
private:
void load_god_info();
};
extern GodRes god_res;
//----------------------------------------------------//
#endif