/**
* Keep track of each banks data.
* @change 12-11-97 Pinkfish
* Removed the player_name variable. Made a couple of the functions
* private
*
* @change 21-11-97 Terano
* Changed the get_data_file function so that if there is no data file
* for a player, it calls init_data().
*/
#define RESTORE_PATH "/save/bank_accounts/"
private mapping accounts;
private void create() {
seteuid( master()->creator_file( file_name(TO) ) );
} /* create() */
private void init_data( string word ) {
accounts = ([ ]);
} /* init_data() */
/**
* Start up the system by restoring the players data.
* @param word the name of the player being restored
*/
int get_data_file( string name ) {
if( !unguarded( (: restore_object,
RESTORE_PATH+name[0..0]+"/"+name :) ) ) {
init_data(name);
return 0;
}
return 1;
} /* get_data_file() */
/**
* Save the current data file to disk.
* @param word the name of the player being saved
*/
private void save_data_file( string name ) {
unguarded( (: save_object, RESTORE_PATH+name[0..0]+"/"+name :) );
} /* save_data_file() */
/**
* Find out how much a player has at a given bank.
* @param name the name of the player
* @param bank_name the name of the bank
* @return the current balance, -1 on failure
*/
int query_account( string name, string bank_name ) {
get_data_file( name );
if( !accounts )
return -1;
if( undefinedp( accounts[ bank_name ] ) == 1 )
return -1;
return accounts[ bank_name ];
} /* query_account() */
/**
* Change the amount of money a player has at a given bank.
* @param word the name of the player
* @param bank_name the name of the bank
* @param amount the amount to change the balance by
*/
void adjust_account( string word, string bank_name, int amount ) {
get_data_file( word );
accounts[ bank_name ] += amount;
if( accounts[ bank_name ] < 0 )
map_delete( accounts, bank_name );
save_data_file( word );
} /* adjust_account() */
/**
* Sets the balance at a certain bank to the specificed amount.
* @param word the name of the player
* @param bank_name the name of the bank
* @param amount the amount to set the bank to.
*/
void set_account( string word, string bank_name, int amount ) {
get_data_file( word );
if( amount < 0 )
map_delete( accounts, bank_name );
else
accounts[ bank_name ] = amount;
save_data_file( word );
} /* set_account() */
/** @ignore yes */
mapping query_accounts() { return copy(accounts); }