#ifndef _OLC_SHUTTLE_ #define _OLC_SHUTTLE_ #define OLC_SHUTTLE #define SHUTTLE_DIR "../shuttle/" #define SHUTTLE_LIST "shuttle.lst" typedef struct shuttle_data SHUTTLE_DATA; typedef struct stop_data STOP_DATA; struct stop_data { STOP_DATA *prev; /* Previous Stop */ STOP_DATA *next; /* Next Stop */ char* stop_name; /* Name of the Stop, ie 'Coruscant' or 'Monument Plaza' */ int room; }; enum _shuttle_state { SHUTTLE_STATE_LANDING, SHUTTLE_STATE_LANDED, SHUTTLE_STATE_TAKINGOFF, SHUTTLE_STATE_INSPACE, SHUTTLE_STATE_HYPERSPACE_LAUNCH, SHUTTLE_STATE_HYPERSPACE_END, }; typedef enum { SHUTTLE_TURBOCAR, /* Pretty much the same as shuttle EDIT:: Changes messages to be appropriate to groudn - Greven*/ SHUTTLE_SPACE, /* Has some message about taking off and landing */ SHUTTLE_HYPERSPACE } SHUTTLE_CLASS; struct shuttle_data { /* Linked List Stuff */ SHUTTLE_DATA* prev; SHUTTLE_DATA* next; /* For wherever we are */ SHUTTLE_DATA* next_in_room; SHUTTLE_DATA* prev_in_room; /* Where are We */ ROOM_INDEX_DATA* in_room; /* HOTBOOT info, save vnum of current, then loop through on load to find it */ STOP_DATA* current; int current_number; /* Current State */ int state; /* Stops */ STOP_DATA* first_stop; STOP_DATA* last_stop; /* Shuttle Class */ SHUTTLE_CLASS type; /* Shuttle Filename */ char * filename; /* Shuttle Name */ char * name; /* Delay Between Stops */ int delay; /* Actual time for delay.. */ int current_delay; /* For echoing any messages */ int start_room; int end_room; int entrance; /* Descriptions */ char * takeoff_desc; char * land_desc; char * approach_desc; }; #ifndef MSL #define MSL MAX_STRING_LENGTH #endif #ifndef MIL #define MIL MAX_INPUT_LENGTH #endif //Used for double linked list extern SHUTTLE_DATA * first_shuttle; extern SHUTTLE_DATA * last_shuttle; //Function prototypes void update_shuttle args((void)); SHUTTLE_DATA * get_shuttle args((char * argument)); void write_shuttle_list args(( void )); bool save_shuttle args(( SHUTTLE_DATA * shuttle )); SHUTTLE_DATA * make_shuttle args(( char * filename, char * name )); bool extract_shuttle args(( SHUTTLE_DATA * shuttle )); bool insert_shuttle args(( SHUTTLE_DATA * shuttle, ROOM_INDEX_DATA * room )); void load_shuttles args((void)); bool load_shuttle_file args(( char * shuttlefile )); void fread_shuttle args(( SHUTTLE_DATA *shuttle, FILE *fp )); void fread_stop args(( STOP_DATA * stop, FILE *fp )); void destroy_shuttle args(( SHUTTLE_DATA *shuttle)); void show_shuttles_to_char args(( CHAR_DATA * ch, SHUTTLE_DATA *shuttle)); SHUTTLE_DATA * shuttle_in_room args(( ROOM_INDEX_DATA *room, char *name )); SHUTTLE_DATA * shuttle_from_entrance args(( int vnum )); DECLARE_DO_FUN( do_showshuttle ); DECLARE_DO_FUN( do_makeshuttle ); DECLARE_DO_FUN( do_setshuttle ); #endif