#ifndef BRIDGEWIN_H #define BRIDGEWIN_H #include "../include/osw-x.h" #include "../include/widget.h" #include "page.h" /* * Bridge Window: */ typedef struct _xsw_bridge_win_struct xsw_bridge_win_struct; #define XSW_BRIDGE_WIN(p) ((xsw_bridge_win_struct *)(p)) typedef struct _xsw_input_area_struct xsw_input_area_struct; #define XSW_INPUT_AREA_WIN(p) ((xsw_input_area_struct *)(p)) /* * Input Area IDs: */ #define BW_INPUT_AREA_PSHIELDFREQ_UP 0 #define BW_INPUT_AREA_PSHIELDFREQ_DOWN 1 #define BW_INPUT_AREA_PWEAPONFREQ_UP 2 #define BW_INPUT_AREA_PWEAPONFREQ_DOWN 3 #define BW_INPUT_AREA_PCOMCHANNEL_UP 4 #define BW_INPUT_AREA_PCOMCHANNEL_DOWN 5 #define BW_INPUT_AREA_PSHIELDS 6 #define BW_INPUT_AREA_PCLOAK 7 #define BW_INPUT_AREA_PDMGCTL 8 #define BW_INPUT_AREA_PINTERCEPT 9 #define BW_INPUT_AREA_PLOCK 10 #define BW_INPUT_AREA_PLOCKNEXT 11 #define BW_INPUT_AREA_PWEPYIELD 12 #define BW_INPUT_AREA_PSELWEP1 13 #define BW_INPUT_AREA_PSELWEP2 14 #define BW_INPUT_AREA_PSELWEP3 15 #define BW_INPUT_AREA_PSELWEP4 16 #define BW_INPUT_AREA_PSELWEP5 17 #define BW_INPUT_AREA_PSELWEP6 18 #define BW_INPUT_AREA_PSELWEP7 19 #define BW_INPUT_AREA_PSELWEP8 20 #define BW_INPUT_AREA_PSELWEP9 21 #define BW_INPUT_AREA_PENGINESTATE 22 #define BW_TOTAL_INPUT_AREAS 23 /* * Viewscreen Zoom Range: */ #define XSW_VS_ZOOM_MIN 0.18 /* May not be 0 or less */ #define XSW_VS_ZOOM_MAX 1.0 /* Must not be greater than 1 */ #define XSW_VS_ZOOM_INC 0.005 /* Must be positive */ /* * Console Panels IDs: */ #define BW_PANEL_ALL 0 #define BW_PANEL_P1 1 #define BW_PANEL_P2 2 #define BW_PANEL_P3 3 #define BW_PANEL_P4 4 #define BW_PANEL_S1 5 #define BW_PANEL_S2 6 #define BW_PANEL_S3 7 #define BW_PANEL_PNAME 20 #define BW_PANEL_PSHIELDFREQ 21 #define BW_PANEL_PWEAPONFREQ 22 #define BW_PANEL_PCOMCHANNEL 23 #define BW_PANEL_PSCORE 24 #define BW_PANEL_PHULL 30 #define BW_PANEL_PPOWER 31 #define BW_PANEL_PSHIELDS 32 #define BW_PANEL_PVIS 33 #define BW_PANEL_PDMGCTL 34 #define BW_PANEL_SNAME 40 #define BW_PANEL_SEMPIRE 41 #define BW_PANEL_SHULL 42 #define BW_PANEL_SPOWER 43 #define BW_PANEL_SSHIELDS 44 #define BW_PANEL_SVIS 45 #define BW_PANEL_SBEARING 46 #define BW_PANEL_SDISTANCE 47 #define BW_PANEL_SDMGCTL 48 #define BW_PANEL_PINAME 50 #define BW_PANEL_PWLOCK 51 #define BW_PANEL_PWEAPONS 52 #define BW_PANEL_SINAME 60 #define BW_PANEL_SWLOCK 61 #define BW_PANEL_SWEAPONS 62 #define BW_PANEL_SANTIMATTER 63 #define BW_PANEL_SHEADING 64 /* And coordinates */ #define BW_PANEL_PTHROTTLE 70 #define BW_PANEL_PVELOCITY 71 #define BW_PANEL_PANTIMATTER 72 #define BW_PANEL_PENGINESTATE 73 #define BW_PANEL_PHEADING 74 /* And coordinates */ #define BW_PANEL_PTHRUSTVECTOR 75 struct _xsw_bridge_win_struct { bool_t map_state, has_focus; int freeze_count, busy_count; visibility_t visibility_state; int x, y; unsigned int width, height; int preset_zoom_code; /* Current preset zoom code, * used in * BridgeWinResizePreset() */ /* Toplevel */ win_t toplevel; /* Viewscreen */ bool_t viewscreen_map_state; win_t viewscreen; shared_image_t *viewscreen_image; unsigned int viewscreen_width, viewscreen_height; visibility_t viewscreen_vis_state; float viewscreen_gamma; time_t viewscreen_int; /* Redraw interval in milliseconds */ float viewscreen_zoom; /* Zoom coeff */ /* Viewscreen selected weapon image */ image_t *vs_weapon_image; pixmap_t vs_weapon_buf; unsigned int vs_weapon_width, vs_weapon_height; /* Viewscreen netstats label image */ image_t *net_stats_image; pixmap_t net_stats_buf; unsigned int net_stats_width, net_stats_height; /* Pages */ page_struct *cur_page; page_struct main_page, /* Main menu */ destroyed_page; /* You got destroyed */ /* Buffer for console panels, since all panels are of the * exact same size, we just use one buffer for all of them */ pixmap_t pan_buf; /* Tempory image for drawing background for stats_con2 and * sro_con1 (since it involves blitting an object on it) */ shared_image_t *pan_p2_img, *pan_p3_img, *pan_s1_img, *pan_s2_img; /* Player stats console panels */ win_t pan_p1, pan_p2, pan_p3, pan_p4; unsigned int pan_p1_width, pan_p1_height, pan_p2_width, pan_p2_height, pan_p3_width, pan_p3_height, pan_p4_width, pan_p4_height; win_t weapon_yield_iwin; /* Input window for weapon yield scale */ /* Scanner */ bool_t scanner_map_state; win_t scanner; shared_image_t *scanner_image; unsigned int scanner_width, scanner_height; visibility_t scanner_vis_state; float scanner_zoom; char scanner_orient; /* One of SCANNER_ORIENT_* */ scale_bar_struct scanner_sb; /* Scanner scale bar */ image_t *scanner_range_label, *scanner_loc_label; /* Scanner subject console */ win_t pan_s1, pan_s2, pan_s3; unsigned int pan_s1_width, pan_s1_height, pan_s2_width, pan_s2_height, pan_s3_width, pan_s3_height; /* Weapon scroll position (in weapon indices) */ int weapon_scroll_pos, weapons_visible; /* On player console 4 */ /* Message Box */ win_t mesg_box; pixmap_t mesg_box_buf; int mesg_box_x, mesg_box_y; unsigned int mesg_box_width, mesg_box_height; font_t *mesg_box_font; int mesg_box_line_spacing; int mesg_box_char_width; int mesg_box_longest_line; scroll_bar_struct mesg_box_sb; /* Message Box selection in progress values (in window * coordiantes) */ bool_t mesg_box_sel_in_progress; int mesg_box_sel_start_x, mesg_box_sel_start_y; /* Input areas */ xsw_input_area_struct **input_area; int ninput_areas; /* DND */ atom_t target_string; atom_t dnd_action; win_t dnd_tar_w; int dnd_x, dnd_y; /* Prompt */ prompt_struct prompt; }; struct _xsw_input_area_struct { int x, y; unsigned int width, height; }; /* bridgedraw.cpp */ extern "C" void BridgeWinDrawPanel( const int obj_num, const int panel_num /* One of BW_PANEL_* */ ); extern "C" void BridgeWinDrawAll(xsw_bridge_win_struct *bw); extern "C" void BridgeDrawMessages(xsw_bridge_win_struct *bw); extern "C" void BridgeQueueDrawMessages(xsw_bridge_win_struct *bw); /* bridgegui.cpp */ extern "C" void BridgeWinScannerScaleValueChangedCB( scale_bar_struct *scale, float value, void *data ); extern "C" void BridgeWinDrawMessagesCB(void *widget, void *data); extern "C" void BridgeWinSBValueChangedCB( scroll_bar_struct *sb, float x, float y, void *data ); extern "C" void BridgeWinSetTitle( xsw_bridge_win_struct *bw, const char *address, const char *title, const char *player_name ); extern "C" xsw_bridge_win_struct *BridgeWinNew(void); extern "C" void BridgeWinResize(xsw_bridge_win_struct *bw); extern "C" void BridgeWinResizePreset(xsw_bridge_win_struct *bw, int step); extern "C" void BridgeWinMap(xsw_bridge_win_struct *bw); extern "C" void BridgeWinUnmap(xsw_bridge_win_struct *bw); extern "C" void BridgeWinDelete(xsw_bridge_win_struct *bw); /* In bridgemanage.cpp */ extern "C" void BridgeMapPromptMode( xsw_bridge_win_struct *bw, const char *label, const char *val, const int mode ); extern "C" void BridgeWarnWeaponsOffline( xsw_bridge_win_struct *bw, const int obj_num ); extern "C" int BridgeManage( xsw_bridge_win_struct *bw, event_t *event, const time_t cur_ms, const time_t cur_sec, const float tc ); /* bridgescrshot.cpp */ extern "C" void BridgeScreenShot( xsw_bridge_win_struct *bw, const char *save_dir ); #endif /* BRIDGEWIN_H */