/* * 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 : OSITE.H //Description : Object Site #ifndef __OSITE_H #define __OSITE_H #ifndef __ODYNARRB_H #include #endif #ifndef __ORAWRES_H #include #endif //-------- Define Site Type --------// enum { MAX_SITE_TYPE=3 }; enum { SITE_RAW=1, SITE_SCROLL, SITE_GOLD_COIN }; //--------- Define class Site ----------// #pragma pack(1) class Site { public: short site_recno; char site_type; // SITE_RAW, SITE_ARTIFACT or SITE_SCROLL short object_id; // id. of the object, int reserve_qty; // for raw material only char has_mine; // whether there is a mine on this site short map_x_loc; short map_y_loc; BYTE region_id; public: void init(int siteRecno, int siteType, int xLoc, int yLoc); void deinit(); void disp_info(int refreshFlag); void detect_info(); void draw(int x, int y); void draw_selected(); int get_site_object(int unitRecno); int ai_get_site_object(); }; #pragma pack() //--------- Define class SiteArray ----------// #pragma pack(1) class SiteArray : public DynArrayB { public: short selected_recno; // the firm current being selected short untapped_raw_count; // no. of unoccupied raw site available short scroll_count; short gold_coin_count; short std_raw_site_count; // standard no. of raw site in one game, based on this number, new mines pop up when existing mines run out of deposit public: SiteArray(); ~SiteArray(); void init(); void deinit(); int add_site(int xLoc, int yLoc, int siteType, int objectId, int reserveQty=0); void del_site(int siteRecno); void generate_raw_site(int stdRawSiteCount=0); int create_raw_site(int regionId, int townRecno=0); int scan_site(int xLoc, int yLoc, int siteType=0); void go_to_a_raw_site(); void ai_get_site_object(); void next_day(); void draw_dot(); int write_file(File* filePtr); int read_file(File* filePtr); //--------------------------------------// int is_deleted(int recNo); #ifdef DEBUG Site* operator()(); // reference to current Site record Site* operator[](int recNo); #else Site* operator()() { return (Site*) get(); } Site* operator[](int recNo) { return (Site*) get(recNo); } #endif }; #pragma pack() extern SiteArray site_array; //--------------------------------------------// #endif