inherit OBJECT;
string board_id;
mixed *msgs;
void add_message( string from, string subj, string msg );
void set_board_id( string str ) {
board_id = str;
}
string query_board_id( void ) {
return( board_id );
}
void save_me( void ) {
save_object( "/data/boards/" + query_board_id() + ".o" );
}
void restore_me( void ) {
restore_object( "/data/boards/" + query_board_id() + ".o" );
}
void create( void ) {
::create();
}
void check_restore( void ) {
if( !msgs )
restore_me();
if( !msgs ) {
msgs = ({ });
}
}
void add_message( string from, string subj, string msg ) {
check_restore();
msgs += ({ ({capitalize(from), capitalize(subj), ctime( time() ), msg }) });
save_me();
}
int query_message_count( void ) {
check_restore();
return( sizeof( msgs ) );
}
int query_new_message_count( void ) {
check_restore();
return( query_message_count() - this_player()->query_board_read( board_id ) );
}
int query_msg_exists( string num ) {
int i;
check_restore();
i = str2val(num) - 1;
if( i > sizeof( msgs ) - 1 || i < 0 ) {
return( 0 );
}
return( 1 );
}
string query_message( string num ) {
int i;
string msg;
i = str2val(num) - 1;
if( i > sizeof( msgs ) || i < 0 ) {
return( "Message doesn't exist.\n" );
}
save_me();
msg = " \nPoster: %^CYAN%^" + msgs[i][0] + "%^RESET%^\n";
msg += "Subject: %^YELLOW%^" + msgs[i][1] + "%^RESET%^\n";
msg += "Date: %^GREEN%^" + msgs[i][2] + "%^RESET%^\n";
msg += "------------------------------------------------------------------------------\n";
msg += msgs[i][3];
return( msg );
}
string query_message_list( string who ) {
string msg;
string tmp;
string from;
string subj;
string date;
int i;
int num;
check_restore();
msg = " \nNum From Subject Date\n" +
"------------------------------------------------------------------------------\n";
num = this_player()->query_board_read( board_id ) - 10;
if( num < 0 )
num = 0;
for( i = num; i < sizeof( msgs ); i++ ) {
tmp = " " + (i+1);
tmp = tmp[strlen(tmp)-4..];
from = (string) msgs[i][0] + " ";
from = from[..10];
subj = msgs[i][1] + " ";
subj = subj[..33];
date = msgs[i][2] + " ";
date = date[..25];
if( i == this_player()->query_board_read( board_id ) ) {
msg += "[" + tmp + "]>" + from + " " + subj + " " + date + "\n";
} else {
msg += "[" + tmp + "] " + from + " " + subj + " " + date + "\n";
}
}
return(msg);
}