/* S H I P W A R S T E R M I N A L Copyright (C) 2000 WolfPack */ #ifndef SWTERM_H #define SWTERM_H #include #include #include #include #include extern int errno; #include "../include/disk.h" #include "../include/reality.h" #include "../include/objects.h" #include "../include/isrefs.h" #include "cursesw.h" #include "prompt.h" /* * Program name and version: */ #define PROG_NAME "ShipWars Terminal" #define PROG_VERSION "0.2" #define PROG_VERSION_MAJOR 0 #define PROG_VERSION_MINOR 2 /* * Usage message: */ #define PROG_USAGE_MESG "\ Usage: xsw [url] [options] [GUI_options]\n\ \n\ [url] is the URL to the universe that you want to connect to.\n\ \n\ [options] can be any of the following:\n\ \n\ -d Toplevel directory containing XShipWars\n\ data (ie /usr/share/games/xshipwars).\n\ --help Prints (this) help screen and exits.\n\ --version Prints version information and exits.\n\ \n" /* * True and false codes: */ #ifndef False # define False 0 #endif #ifndef True # define True 1 #endif /* * Default Server Address: * * This is the default server address and port to connect to when * no address is given at the command line or in the configuration * file. */ #define DEF_SWSERV_ADDRESS "localhost" #define DEF_SWSERV_PORT 1701 /* * Default network interface maximum capacity (in bytes per second): */ #define DEF_NET_LOAD_MAX 1440 /* * Default network stream interval (in milliseconds): */ #define SERVER_DEF_INT 1000 #define MIN_SERVER_UPDATE_INT 25 #define MAX_SERVER_UPDATE_INT 5000 /* * Bridge standard redraws every this many milliseconds: */ #define BRIDGE_STANDARD_REDRAW_INTERVAL 100 /* * Memory is refreshed this many milliseconds: */ #define MEMORY_CLEAN_INTERVAL 150000 /* 2.5 minutes. */ /* * Objects not updated in this many milliseconds are considered * out of date: */ #define OBJECT_OUTDATED_TIMEOUT 8000 /* * Default Program Directories: * * These are directories used by XShipWars, make sure that they actually * exist. These are only default values, they can be changed in the * XSW_RCFILE or XSW_RCFILE_GLOBAL. */ #ifdef __WIN32__ # define DEF_XSW_TOPLEVEL_DIR CWD_STR # define DEF_XSW_IMAGES_DIR CWD_STR"images" # define DEF_XSW_SOUNDS_DIR CWD_STR"sounds" # define DEF_XSW_ETC_DIR CWD_STR # define DEF_ETC_DIR CWD_STR # define DEF_SW_SERVER_DIR CWD_STR #else # define DEF_XSW_TOPLEVEL_DIR "/usr/share/games/xshipwars" # define DEF_XSW_IMAGES_DIR "/usr/share/games/xshipwars/images" # define DEF_XSW_SOUNDS_DIR "/usr/share/games/xshipwars/sounds" # define DEF_XSW_ETC_DIR "/usr/share/games/xshipwars/etc" # define DEF_ETC_DIR "/etc" # define DEF_SW_SERVER_DIR "/home/swserv" #endif /* * Default configuration file location: * * Default parent for DEF_XSW_RCFILE is user's home directory. * Default parent for DEF_XSW_RCFILE_GLOBAL is * /usr/share/games/xshipwars/etc. */ #define DEF_XSW_RCFILE ".xshipwarsrc" #define DEF_XSW_RCFILE_GLOBAL "xshipwarsrc" /* * Default log file location: * * Default parent is user's home directory. */ #define DEF_XSW_LOG_FILE "xsw.log" /* * Default OCSNs file location: * * Default parent is /usr/games/xshipwars/etc/. */ #define DEF_XSW_OCSN_FILE "default.ocsn" /* * Default sound scheme file location: * * Default parent is /usr/games/xshipwars/sounds/. */ #define DEF_XSW_SOUND_SCHEME_FILE "default.ss" /* * Maximum OCSN entries: */ #define OCSN_MAX 500 /* * Fake GUI types: */ #define bool_t char typedef struct { int i; } image_t; #define pixmap_t unsigned long #define win_t unsigned long #define drawable_t unsigned long /* * Pixel type: */ #define font_t void #define pixel_t unsigned long typedef struct { u_int8_t a, r, g, b; } WColorStruct; /* * Main parent process ID: */ extern pid_t root_pid; /* * Runlevel: * * The main while() loop in function main() checks to see if runlevel * is 2 or greater. If runlevel drops to 1 or less, then the loop * breaks and the program should exit. * * 0 = Shutting down. * 1 = Starting up. * 2 = Normal running. */ extern int runlevel; /* * Current time since midnight in milliseconds: */ extern long cur_millitime; /* * Current systime seconds: */ extern time_t cur_systime; /* * Lapsed MilliTime: * * In milliseconds, the time it took the previous loop to execute. * This is compared to CYCLIC_MILLITIME_LAPSE (#defined in reality.h) * to adjust for time lost in the last loop. */ extern long lapsed_millitime; /* * Time Compensation: * * This value is always in the range of 1.0 to . * It is used as the coefficent to various momentum and movement * calculations to compensate for lost time in the previous * loop. */ extern double time_compensation; /* * Global debug values: * * Used for run time debugging. */ #define DEBUG_LEVEL_NONE 0 #define DEBUG_LEVEL_ALL 1 #define DEBUG_LEVEL_MEMORY 2 #define DEBUG_LEVEL_NETWORK 3 typedef struct { int level; /* One of DEBUG_LEVEL_* */ double val; } xsw_debug_struct; extern xsw_debug_struct debug; /* * Options structure: */ typedef struct { /* RC file versions. */ int rc_version_major, rc_version_minor; /* Units, one of XSW_UNITS_*. */ #define XSW_UNITS_XSW 0 /* XSW Internal units. */ #define XSW_UNITS_METRIC 1 /* AstroMetric. */ #define XSW_UNITS_ENGLISH 2 /* Universal English. */ int units; /* Log options. */ char log_client, log_net, log_errors; /* Energy saver mode (1 for on, 0 for off). */ char energy_saver_mode; /* Throttle mode. */ #define THROTTLE_MODE_NORMAL 0 #define THROTTLE_MODE_BIDIRECTIONAL 1 #define THROTTLE_MODE_INCREMENTAL 2 int throttle_mode; /* Default scanner orientation (from startup). */ #define SCANNER_ORIENT_GC 0 #define SCANNER_ORIENT_LOCAL 1 int def_scanner_orient; /* Show object labels in formal format: * * 0 = never. * 1 = as needed. * 2 = always. */ char show_formal_label; /* Show network errors (undicipherable network data)? */ char show_net_errors; /* Show server error message dialogs? */ char show_server_errors; /* Update objects locally by predicting movement patterns. */ int local_updates; /* Sound level, one of XSW_SOUNDS_*. */ #define XSW_SOUNDS_NONE 0 #define XSW_SOUNDS_EVENTS 1 #define XSW_SOUNDS_ENGINE 2 #define XSW_SOUNDS_ALL 3 char sounds; char music; /* 0 for off, 1 for on. */ /* Scanner range affected by enviroment? (set true, no cheating!) */ char scanner_limiting; /* Notify when objects come into or leave scanner range? */ char notify_scanner_contacts; /* Cap offs. */ char auto_map_eco_win; } xsw_options_struct; extern xsw_options_struct option; /* * Curses IO display structure array: */ extern CDisplay **curses_display; extern int total_curses_displays; /* * Sound server connection info: */ typedef struct { /* Sound server type. */ #define SNDSERV_TYPE_NONE 0 #define SNDSERV_TYPE_YIFF 1 #define SNDSERV_TYPE_ESOUND 2 #define SNDSERV_TYPE_MIKMOD 3 /* Not supported. */ int server_type; /* Script file that starts sound server. */ #define DEF_SOUND_SERVER_START_CMD "/usr/sbin/yiff" char start_cmd[PATH_MAX + NAME_MAX]; /* Connection argument to connect to sound server. */ #define DEF_SOUND_SERVER_CONNECT_ARG "127.0.0.1:9433" char con_arg[MAX_URL_LEN]; /* Pointer to connection data (do not free, belongs to sound * server). This pointer also serves as a marker to denote * if sound is initialized or not (not initialized if NULL). */ void *con_data; /* Name of Audio mode that the sound server is to be in when * using current sound scheme (may not be applicatable to all * sound servers). */ #define SNDSERV_AUDIO_MODE_NAME_MAX 256 /* Should be enough. */ char audio_mode_name[SNDSERV_AUDIO_MODE_NAME_MAX]; /* Background sound play ID (NULL if none is being played). */ void *bkg_playid; /* Background mood code, one of SOUND_CODE_BKG_*. */ int bkg_mood_code; } xsw_sound_struct; extern xsw_sound_struct sound; /* * Directory names: * * All values MUST be complete absolute paths. */ typedef struct { char startup[PATH_MAX]; /* Startup dir. */ char toplevel[PATH_MAX]; /* XSW's toplevel dir. */ char etc[PATH_MAX]; /* Configuration dir. */ char images[PATH_MAX]; /* Images dir. */ char sounds[PATH_MAX]; /* Sounds dir. */ char downloads[PATH_MAX]; /* Screen shot dir. */ } xsw_dname_struct; extern xsw_dname_struct dname; /* * File names: * * Must be a absolute full path to the file. */ typedef struct { char rc[NAME_MAX + PATH_MAX]; /* RC file. */ char sound_scheme[NAME_MAX + PATH_MAX]; /* Sound scheme. */ char ocsn[NAME_MAX + PATH_MAX]; /* Object create script names. */ char isr[NAME_MAX + PATH_MAX]; /* Imageset referances file. */ char log[NAME_MAX + PATH_MAX]; /* Log file. */ } xsw_fname_struct; extern xsw_fname_struct fname; /* * Next event scheduals: * * Marks the next time in milliseconds that something * is to be performed. */ typedef struct { long update_check, viewscreen, /* Redraw viewscreen. */ bridge_std_redraw, /* Standard bridge graphics redraw. */ memory_clean, /* Reclaim memory. */ lplayer_pos_send; /* Next send player position. */ } xsw_next_struct; extern xsw_next_struct next; /* * Local control settings: * * Client emulated simulation values to enhance realism. * This has no affect on what happens on the server. * * Do not confuse this with the gctl_struct. */ typedef struct { char weapons_online; /* Acts as a safety trigger padlock, * weapons won't fire if this is 0. */ double weapon_freq; } xsw_local_control_struct; extern xsw_local_control_struct local_control; /* * Game controller values: * * A wrapper for information about the game controller's current. * states (such as joystick position, button states, etc). * * The information here is fetched once per loop and functions * use the information herein to tell what state the game controller * is in regardless of what game controller is being used (keyboard, * joystick, pointer, etc). */ typedef struct { double turn, /* -1 to 1. */ throttle, /* Depends on option.throttle_mode. */ thrust_dir, /* -1 to 1 (0 is directly backwards). */ vs_zoom, /* 0 to 1. */ scanner_zoom; /* 0 to 1. */ u_int8_t fire_weapon, omni_dir_thrust, external_dampers; /* Brakes. */ } xsw_gctl_struct; extern xsw_gctl_struct gctl[1]; /* * Network load monitoring and stats structure: */ typedef struct { long net_load_max; /* Maximum bytes per 1000 milliseconds of * network connection. * A 28.8k modem would have 3600. */ long rx_interval; /* Bytes recieved per 1000 milliseconds. */ long sx_interval; /* Bytes sent per 1000 milliseconds. */ long rx_ilast; /* Last bytes recieved per 1000 milliseconds. */ long sx_ilast; /* Last bytes sent per 1000 milliseconds. */ } xsw_loadstat_struct; extern xsw_loadstat_struct loadstat; /* * Auto interval tuning: * * Relies on information in loadstat. */ typedef struct { char state; /* 0 = off, 1 = on. */ /* Re-tuned every this many milliseconds. */ #define AINT_DEF_TUNE_INT 1000 long interval; /* Always 1000 ms (every second). */ /* Next update in milliseconds. */ long next; } xsw_auto_interval_tune_struct; extern xsw_auto_interval_tune_struct auto_interval_tune; /* * Color structure: */ typedef struct { pixel_t standard_text, bold_text; pixel_t bp_standard_text, bp_bold_text; WColorStruct vs_label_fg_cv, vs_label_bg_cv; } xsw_color_struct; extern xsw_color_struct xsw_color; /* * XSW Font structure (mostly just cap offs): */ typedef struct { /* All purpose fonts. */ font_t *std, *std_bold; /* Bridge console panel fonts. */ font_t *console_heading, *console_standard, *console_message; } xsw_font_struct; extern xsw_font_struct xsw_font; /* Bridge console panel codes. */ #define BPANEL_DETAIL_ALL 0 #define BPANEL_DETAIL_P1 1 #define BPANEL_DETAIL_P2 2 #define BPANEL_DETAIL_P3 3 #define BPANEL_DETAIL_P4 4 #define BPANEL_DETAIL_S1 5 #define BPANEL_DETAIL_S2 6 #define BPANEL_DETAIL_S3 7 #define BPANEL_DETAIL_PNAME 20 #define BPANEL_DETAIL_PSHIELDFREQ 21 #define BPANEL_DETAIL_PWEAPONFREQ 22 #define BPANEL_DETAIL_PCOMCHANNEL 23 #define BPANEL_DETAIL_PHULL 30 #define BPANEL_DETAIL_PPOWER 31 #define BPANEL_DETAIL_PSHIELDS 32 #define BPANEL_DETAIL_PVIS 33 #define BPANEL_DETAIL_PDMGCTL 34 #define BPANEL_DETAIL_SNAME 40 #define BPANEL_DETAIL_SEMPIRE 41 #define BPANEL_DETAIL_SHULL 42 #define BPANEL_DETAIL_SPOWER 43 #define BPANEL_DETAIL_SSHIELDS 44 #define BPANEL_DETAIL_SVIS 45 #define BPANEL_DETAIL_SBEARING 46 #define BPANEL_DETAIL_SDISTANCE 47 #define BPANEL_DETAIL_SDMGCTL 48 #define BPANEL_DETAIL_PINAME 50 #define BPANEL_DETAIL_PWLOCK 51 #define BPANEL_DETAIL_PWEAPONS 52 #define BPANEL_DETAIL_SINAME 60 #define BPANEL_DETAIL_SWLOCK 61 #define BPANEL_DETAIL_SWEAPONS 62 #define BPANEL_DETAIL_SANTIMATTER 63 #define BPANEL_DETAIL_SHEADING 64 /* And coordinates. */ #define BPANEL_DETAIL_PTHROTTLE 70 #define BPANEL_DETAIL_PVELOCITY 71 #define BPANEL_DETAIL_PANTIMATTER 72 #define BPANEL_DETAIL_PENGINESTATE 73 #define BPANEL_DETAIL_PHEADING 74 /* And coordinates. */ #define BPANEL_DETAIL_PTHRUSTVECTOR 75 /* * Bridge window: */ typedef struct { char *message; pixel_t color; } bridge_win_mesg_struct; typedef struct { char map_state; char is_in_focus; int x, y; unsigned int width, height; /* Viewscreen zoom. */ #define VS_ZOOM_MIN 0.01 #define VS_ZOOM_MAX 1.00 double vs_zoom; /* Screen display type. */ #define BRIDGE_SCREEN_TYPE_MAIN_MENU 0 #define BRIDGE_SCREEN_TYPE_VIEWSCREEN 1 #define BRIDGE_SCREEN_TYPE_MESSAGES 2 /* All messages. */ #define BRIDGE_SCREEN_TYPE_HELP 3 int screen_type; /* Prompt. */ Prompt prompt; /* Prompt mode. */ #define PROMPT_MODE_NONE 0 #define PROMPT_MODE_CONNECT 1 #define PROMPT_MODE_CHANNEL 2 #define PROMPT_MODE_SHIELD_FREQ 3 #define PROMPT_MODE_WEAPON_FREQ 4 #define PROMPT_MODE_INTERCEPT 5 #define PROMPT_MODE_MESSAGE 6 #define PROMPT_MODE_SERVER_CMD 7 #define PROMPT_MODE_EXIT 10 int prompt_mode; /* Messages. */ bridge_win_mesg_struct **message; int total_messages; int message_scroll_pos; /* Fake XSW cap offs. */ image_t *vs_weapon_image; pixmap_t vs_weapon_buf; } xsw_bridge_win_struct; extern xsw_bridge_win_struct bridge_win; /* * Economy window: */ typedef struct { char map_state; int x, y; unsigned int width, height; } eco_win_struct; extern eco_win_struct eco_win; /* * Dialog structure: */ typedef struct { char map_state; int x, y; unsigned int width, height; } dialog_win_struct; extern dialog_win_struct err_dw; extern dialog_win_struct info_dw; /* * Global ShipWars Universe units: */ extern sw_units_struct sw_units; /* * Sector legend: * * Defines the sizes and bounds of each sector. * All units are in XSW real units unless otherwise noted. */ typedef struct { double x_len, y_len, z_len; double x_min, x_max; double y_min, y_max; double z_min, z_max; } xsw_sector_legend_struct; extern xsw_sector_legend_struct sector_legend; /* * Scanner contacts: * * List record of objects in scanner range. * * Used to keep track of which objects have just entered * or left sensor range. */ typedef struct { int object_num; } scanner_contacts_struct; extern scanner_contacts_struct **scanner_contact; extern int total_scanner_contacts; /* * Object Create Script Names: * * For referancing an OCS type to a name. Purpose for these is * only to provide a name for a type of OCS. * * NOTE: This OCS structure differs with the OCS structure for * the server is different! */ #define OCS_TYPE_GARBAGE 0 typedef struct { int type; char name[XSW_OBJ_NAME_MAX]; image_t *icon; } ocsn_struct; extern ocsn_struct **ocsn; extern int total_ocsns; /* * XSW Objects List: */ extern xsw_object_struct **xsw_object; extern int total_objects; /* * In range objects list: * * Array containing pointers to objects that are in range * of player. */ extern xsw_object_struct **inrange_xsw_object; extern int total_inrange_objects; /* * Sound scheme item structure: */ typedef struct { char *path; } ss_item_struct; extern ss_item_struct **ss_item; extern int total_ss_items; /* ********************************************************************* */ /* In autointerval.c */ extern int AIntvTuneHandleAdjust(void); /* In bridge.c */ extern int BridgeInit(int argc, char *argv[]); extern void BridgeDraw(int portion); extern void BridgeDrawSchedualed(void); extern int BridgeManage(CEvent *event); extern void BridgeSetFocus(int focus); extern void BridgeMap(void); extern void BridgeUnmap(void); extern void BridgeDestroy(void); /* In bridgedraw.c */ extern void BridgeDrawTitle(CDisplay *display); extern void BridgeDrawHelp(CDisplay *display); extern void BridgeDrawClearVS(CDisplay *display); extern void BridgeDrawPlayerStats(CDisplay *display, int object_num); extern void BridgeDrawSubjectStats(CDisplay *display, int object_num); extern void BridgeDrawVSObjects(CDisplay *display); extern void BridgeDrawMessages(CDisplay *display); extern void BridgeDrawStatusBar(CDisplay *display); /* In bridgeop.c */ extern void BridgeMapPrompt(int code); extern void BridgePromptCB(void *data, char *value); extern void BridgeWarnWeaponsOffline(int object_num); /* In swtmesg.c */ extern int MesgAdd(char *new_mesg, pixel_t mesg_color); extern int printdw( dialog_win_struct *dw, char *mesg ); /* In db.c */ extern int DBIsObjectGarbage(int object_num); extern xsw_object_struct **DBAllocObjectPointers( xsw_object_struct **cur_obj_ptrs, int num_objects ); extern xsw_object_struct *DBAllocObject(void); extern int DBCreateObject( int imageset, int type, int owner, double x, double y, double z, double heading, double pitch, double bank ); extern int DBCreateExplicitObject( int object_num, int imageset, int type, int owner, double x, double y, double z, double heading, double pitch, double bank ); extern void DBDeleteObject(xsw_object_struct *obj_ptr); extern void DBDeleteAllObjects(void); extern void DBRecycleObject(int object_num); extern void DBReclaim(void); /* In dbinrange.c */ extern void DBInRangeUpdate(int object_num); extern int DBInRangeAdd(int ref_obj, int tar_obj, char check_range); extern void DBInRangeDelete(xsw_object_struct *obj_ptr); extern void DBInRangeDeleteAll(void); /* In dbutil.c */ extern int DBCreateObjectEconomyProduct( int object_num, char *product_name, xswo_credits_t sell_price, xswo_credits_t buy_price, double product_amount, double product_max ); extern int DBObjectTractor(int src_obj, int tar_obj); extern void DBObjectUntractor(int src_obj, int tar_obj); extern int DBValidateObjectName(char *name); extern int DBValidateObjectPassword(char *password); extern double DBGetObjectVisibility(int object_num); extern double DBGetObjectVisibilityPtr(xsw_object_struct *obj_ptr); extern int DBGetTopObjectNumber(void); extern int DBGetObjectNumByPtr(xsw_object_struct *obj_ptr); extern char *DBGetFormalNameStr(int object_num); extern char *DBGetObjectVectorName(double theta); extern double DBGetObjectVisibility(int object_num); extern double DBGetObjectVisibilityPtr(xsw_object_struct *obj_ptr); extern void DBSetPlayerObject(int object_num); /* In main.c */ extern void SWTHandleSignal(int s); extern void SWTResetTimmers(void); extern void SWTReclaimGlobalMemory(bool_t print_response); extern void SWTDoChangeBackgroundMusic(void); extern int SWTDoConnect(char *arg); extern void SWTDoDisconnect(void); extern void SWTDoRefresh(void); extern void SWTCManage(void); extern int SWTInit(int argc, char *argv[]); extern void SWTManage(void); extern void SWTShutdown(void); /* In ocsnames.c */ extern void OCSReclaimMemory(void); extern void OCSReset(int ocsn_num); extern void OCSDeleteAll(void); extern int OCSIsGarbage(int ocsn_num); extern int OCSCreate(int type); extern int OCSCreateExplicit(int ocsn_num, int type); extern void OCSRecycle(int ocsn_num); extern int OCSGetTop(void); extern int OCSGetByCode(int code); /* In ocsnamesfile.c */ extern int OCSLoadFromFile(char *filename); /* In rengine.c */ extern int REngInit(void); extern void REngManage(void); extern void REngShutdown(void); /* In scanner.c */ extern int ScIsAllocated(int entry_num); extern int ScAddObjectInContact(xsw_object_struct *obj_ptr); extern void ScRemoveObjectFromContact(xsw_object_struct *obj_ptr); extern int ScIsObjectInContact(xsw_object_struct *obj_ptr); extern void ScDelete(int entry_num); extern void ScDeleteAll(void); extern void ScReclaim(void); extern int ScHandleContacts(int object_num); /* In sound.c */ extern int SoundInit(void); extern int SoundChangeMode(char *arg); extern int SoundPlay( int code, double left_volume, double right_volume, int effects, int priority ); extern int SoundChangeBackgroundMusic( int code, int effects, int priority /* 0 or 1. */ ); extern int SoundStopBackgroundMusic(); extern int SoundManageEvents(void); extern void SoundShutdown(void); /* In ss.c */ extern int SSIsAllocated(int n); extern ss_item_struct *SSGetPtr(int n); extern int SSAllocate(char *path); extern int SSAllocateExplicit(int n); extern void SSDelete(int n); extern void SSDeleteAll(void); /* In ssfile.c */ extern int SSLoadFromFile(char *filename); /* In timming.c */ extern long MilliTime(void); /* In unitconv.c */ extern double ConvertRUToAU(double x); extern double ConvertRUToSU(double x); extern double ConvertVelocityRUPCToRUPS(double x); extern double ConvertVelocityRUPCToAUPS(double x); /* In ssfile.c */ extern int SSLoadFromFile(char *filename); /* In swtmesg.c */ extern int printdw( dialog_win_struct *dw, char *mesg ); extern int MesgAdd(char *new_mesg, pixel_t mesg_color); /* In timming.c */ extern long MilliTime(void); /* In xsweqv.c */ extern int LogAppendLineFormatted(char *filename, char *str); extern void XSWDoDisconnect(void); extern void XSWDoChangeBackgroundMusic(); /* In xswcapoff.c */ extern void BridgeWinDrawPanel( int obj_num, int panel_detail ); extern void BridgeWinDrawAll(void); extern int EcoWinDoAddInventory( int customer_obj, int proprietor_obj, xsw_ecoproduct_struct product ); extern int EcoWinDraw(void); extern void EcoWinMap(void); extern int ISRefIsLoaded(int isref_num); extern int ISRefLoad(int isref_num); extern int ISRefLoadFromFile(char *filename); extern void ISRefUnload(int isref_num); extern void OSWDestroyImage(image_t **image); extern void ScannerUpdateLabels(int object_num); extern void VSDrawUpdateWeaponLabel( image_t **image, pixmap_t pixmap ); extern void VSDrawUpdateNetstatsLabel( image_t **image, pixmap_t pixmap ); extern int VSLabelAdd( char *text, WColorStruct fg_color, WColorStruct bg_color, font_t *font, xsw_object_struct *obj_ptr ); extern void VSLabelDelete(int n); extern void VSLabelDeleteByObjectPtr(xsw_object_struct *obj_ptr); extern void VSLabelDeleteAll(); #endif /* SWTERM_H */