#include <top_ten_tables.h>
inherit "/std/object";
string long( string words, int number );
nosave string table_name;
void setup() {
table_name = 0;
set_name( "table" );
set_short( "top ten table" );
add_adjective( ({ "top", "ten", "score" }) );
reset_get();
add_property( "there", "in one corner" );
add_property( "survive fire", 1 );
add_read_mess((: long("",0) :), 0, "common", 0);
} /* setup() */
string query_table_name() { return table_name; }
void set_table_name( string word ) { table_name = word; }
string convert_age( int number ) {
if ( number > 86400 )
return ( number / 86400 ) +"D";
if ( number > 3600 )
return ( number / 3600 ) +"h";
if ( number > 60 )
return ( number / 60 ) +"m";
return number +"s";
} /* convert_age() */
string generate_list( mixed *args ) {
int i, number, sum;
string format, list;
if ( table_name )
format = " %2d. %-13s: level %4d %5s";
else
format = " %2d. %-23s: level %4d %5s";
format += "\n";
list = "";
number = sizeof( args );
sum = 0;
for ( i = 0; i < number; i++ ) {
list += sprintf( format, i + 1, capitalize( args[ i ][ TOP_TEN_NAME ] ),
args[ i ][ TOP_TEN_LEVEL ],
convert_age( args[ i ][ TOP_TEN_AGE ] ) );
if ( i > 0 && i < number - 1 ) {
sum += args[i][TOP_TEN_RATING];
}
}
//list += "\nA rating of " + sum / (number - 2) +
//" would put you firmly in the middle.\n";
return list;
} /* generate_list() */
string long( string words, int number ) {
string long;
mixed *args;
long = "High Score Table: ";
args = (mixed *)TOP_TEN_HANDLER->query_ordered_table( table_name );
if ( !table_name ) {
long += "All Players";
if ( !sizeof( args ) )
return long +": There is no overall top ten at present.\n";
} else {
if ( file_size( "/std/guilds/"+ table_name +".c" ) < 0 )
return "*Barf!* Can't find /std/guilds/"+ table_name +".\n";
long += capitalize( (string)( "/std/guilds/"+ table_name )->
query_name() ) + "' Guild";
if ( !sizeof( args ) )
return long +": There is no top ten for this guild at present.\n";
}
return sprintf( "%|*s\n", table_name ? 40 : 50, long ) +
sprintf( "%|*s\n", table_name ? 40 : 50, "Sorted by rating" ) +
sprintf( "%|*s\n\n", table_name ? 40 : 50,
"-=- " + ctime(time()) + " -=-" ) +
generate_list(args) + "\n";
} /* long() */