#include <standard.h>
#include <cmd.h>
inherit CMD_BASE;
void setup(){
position =1;
}
static mapping blue;
int stats_sort_array(string str, string str2) {
if (blue[str]["heart_beats"] > blue[str2]["heart_beats"])
return 1;
if (blue[str]["heart_beats"] < blue[str2]["heart_beats"])
return -1;
return 0;
} /* stats_sort_array() */
int stats_filter_array(string ind) {
return blue[ind]["moves"]+blue[ind]["heart_beats"]+blue[ind]["worth"]+
blue[ind]["array_size"]+blue[ind]["errors"]+blue[ind]["objects"];
} /* stats_filter_array() */
string string_stats(mapping map) {
string *inds, str;
int i;
str = sprintf("%20-s %7|s %7|s %7|s %7|s %7|s %7|s\n",
"name", "moves", "hbs", "worth", "arr", "errors", "objects");
inds = keys(map);
blue = map;
inds = sort_array(filter_array(inds, "stats_filter_array", this_object()),
"stats_sort_array", this_object());
blue = ([ ]);
for (i=0;i<sizeof(inds);i++) {
str += sprintf("%20-s %7|d %7|d %7|d %7|d %7|d %7|d\n", inds[i],
map[inds[i]]["moves"],
map[inds[i]]["heart_beats"], map[inds[i]]["worth"],
map[inds[i]]["array_size"], map[inds[i]]["errors"],
map[inds[i]]["objects"]);
}
return str;
} /* print_stats() */
static int cmd(string str, object me) {
mapping bit;
if (str)
bit = ([ str: domain_stats(str) ]);
else
bit = domain_stats();
me->more_string(string_stats(bit));
return 1;
} /* do_author() */