/**************************************************************************/ // locker.h - locker header /*************************************************************************** * The Dawn of Time v1.69r (c)1997-2004 Michael Garratt * * >> A number of people have contributed to the Dawn codebase, with the * * majority of code written by Michael Garratt - www.dawnoftime.org * * >> To use this source code, you must fully comply with the dawn license * * in licenses.txt... In particular, you may not remove this copyright * * notice. * **************************************************************************/ #ifndef LOCKERS_H #define LOCKERS_H // notes on locker implementation at the head of lockers.cpp #define LOCKER_HASH_KEY (47) /**************************************************************************/ struct locker_room_data { sh_int quantity; // quantity in room sh_int initial_rent; // initial IC monthly rent and setup charge sh_int ongoing_rent; // ongoing IC yearly rent sh_int weight; // oedit's v0 sh_int capacity; // oedit's v3 sh_int pick_proof; // if a locker is pickproof }; /**************************************************************************/ struct locker_data // information about a single locker in a room { int roomvnum; // room the locker is stored in sh_int number; // locker number within the room char *owner; // name of owner of locker char *access; // names of those with access char *label; // label on exterior of locker time_t paid_until; // the rent is paid until this time time_t last_accessed; OBJ_DATA *locker_object; locker_data * next_locker; }; /**************************************************************************/ class lockers_object // this locker is treated as a normal object { public: bool room_has_lockers(ROOM_INDEX_DATA * room); // return true if room player is in has lockers OBJ_DATA *find_locker_object(char_data *ch, bool display_messages, int number); // return the requested locker object locker_data *find_locker_data(char *owner, int roomvnum, int number); // return the requested locker data locker_data *find_locker(char_data *ch, bool display_messages, int number); // return the requested locker data void admin_delete(char_data *ch, int locker_number); // admin deleting a particular locker lockers_object(); // constructor bool has_access(char_data *ch, locker_data *l); bool has_access(char_data *ch, OBJ_DATA *locker_object); void remove_access(char_data *ch, char *argument, int locker_number); void grant_access(char_data *ch, char *argument, int locker_number); void postletter(char_data *ch, int locker_number); void start_rent(char_data *ch, int locker_number); void pay_rent(char_data *ch, int locker_number); void lockers_load_db(); void lockers_save_db(); void changeowner(char_data *ch, char *argument, int locker_number); void changelabel(char_data *ch, char *argument, int locker_number); void tempopen(char_data *ch, char *argument, int locker_number); void look(char_data *ch); void roomlist(char_data *ch, char *name); locker_data *get_first(int roomvnum); // get_first() returns a starting place to // start searching for rooms of a given locker vnum // (adding this now, will make it easier to use hash tables later) int count_used_lockers_in_room(int roomvnum); int get_next_free_locker_number(int roomvnum); // return the next available locker number in the room void info(char_data *ch, int locker_number); OBJ_DATA *locker_contains; locker_data * next_locker; locker_data * locker_data_of_last_found_locker_object; private: locker_data *hash[LOCKER_HASH_KEY]; }; /**************************************************************************/ extern lockers_object *lockers; /**************************************************************************/ /**************************************************************************/ #endif // LOCKERS_H