/* * 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 : OWORLDMT.H //Description : Header file for World Matrix WorldMap & WorldZoom #ifndef __OWORLDMT_H #define __OWORLDMT_H #ifndef __OMATRIX_H #include #endif #ifndef __ODYNARR_H #include #endif //-------- World matrix size ------------// #define MAX_WORLD_X_LOC (World::max_x_loc) #define MAX_WORLD_Y_LOC (World::max_y_loc) //------------- Map window -------------// #define MAP_WIDTH MAX_WORLD_X_LOC #define MAP_HEIGHT MAX_WORLD_Y_LOC #define MAX_MAP_WIDTH 200 #define MAX_MAP_HEIGHT 200 #define MAP_X1 (588+(MAX_MAP_WIDTH-MAP_WIDTH)/2) #define MAP_Y1 (56 +(MAX_MAP_HEIGHT-MAP_HEIGHT)/2) #define MAP_X2 (MAP_X1+MAP_WIDTH-1) #define MAP_Y2 (MAP_Y1+MAP_HEIGHT-1) #define MAP_LOC_HEIGHT 1 // when MAP_VIEW_ENTIRE #define MAP_LOC_WIDTH 1 #define MAP2_LOC_HEIGHT 2 // when MAP_VIEW_SECTION #define MAP2_LOC_WIDTH 2 //----------- Zoom window -------------// #define ZOOM_X1 0 // World Zoom Window #define ZOOM_Y1 56 #define ZOOM_X2 575 #define ZOOM_Y2 599 #define ZOOM_WIDTH 576 // ZOOM_LOC_WIDTH(32) * 18 = 576 #define ZOOM_HEIGHT 544 // ZOOM_LOC_HEIGHT(32) * 17 = 544 #define ZOOM_LOC_HEIGHT 32 // in world zoom window #define ZOOM_LOC_WIDTH 32 #define ZOOM_X_SHIFT_COUNT 5 // x>>5 = xLoc #define ZOOM_Y_SHIFT_COUNT 5 // y>>5 = yLoc #define ZOOM_X_PIXELS (MAX_WORLD_X_LOC * ZOOM_LOC_WIDTH) #define ZOOM_Y_PIXELS (MAX_WORLD_Y_LOC * ZOOM_LOC_HEIGHT) //---------- define map modes -----------// #define MAP_MODE_COUNT 3 enum { MAP_MODE_TERRAIN=0, MAP_MODE_POWER, MAP_MODE_SPOT, }; //-------- Define class MapMatrix -------// class MapMatrix : public Matrix { public: char last_map_mode; char map_mode; char power_mode; // 1-also display power regions on the zoom map, 0-only display power regions on the mini map public: MapMatrix(); ~MapMatrix(); void init_para(); void draw(); void paint(); void disp(); void draw_square(); int detect(); void toggle_map_mode(int modeId); protected: void draw_map(); int detect_area(); void disp_mode_button(int putFront=0); }; //-------- Define class ZoomMatrix -------// class ZoomMatrix : public Matrix { public: DynArray land_disp_sort_array; // an array for displaying objects in a sorted order DynArray air_disp_sort_array; DynArray land_top_disp_sort_array; DynArray land_bottom_disp_sort_array; int init_rain; int rain_channel_id; int wind_channel_id; int fire_channel_id; int last_fire_vol; int init_lightning; // reset on new game, save on save game int init_snow; short last_brightness; int vibration; // reset on new game, save on save game short lightning_x1, lightning_y1, lightning_x2, lightning_y2; // save on save game public: ZoomMatrix(); void init_para(); void draw(); void draw_frame(); void scroll(int,int); void draw_white_site(); void put_bitmap_clip(int x, int y, char* bitmapPtr,int compressedFlag=0); void put_bitmap_remap_clip(int x, int y, char* bitmapPtr, char* colorRemapTable=NULL,int compressedFlag=0); int detect_bitmap_clip(int x, int y, char* bitmapPtr); protected: void draw_objects(); void draw_objects_now(DynArray* unitArray, int = 0); void draw_weather_effects(); void draw_build_marker(); void draw_god_cast_range(); void blacken_unexplored(); void blacken_fog_of_war(); void disp_text(); void put_center_text(int x, int y, char* str); }; //------------------------------------------------// #endif