blob: 76e8ca015d4b345b70b51f120fa61a676c0bcd2d [file] [log] [blame]
#pragma strong_types,save_types
#pragma no_shadow,no_clone
#include <living/team.h>
#include <wizlevels.h>
#define ME this_object()
#define PO previous_object()
static mapping team_names;
static mapping team_names_reverse;
void create() {
team_names=([]); // Objekt -> Name
team_names_reverse=([]); // Name -> Objekt
}
static mixed DoRegisterTeam(object ob, string name) {
mixed old;
old=team_names[ob];
m_delete(team_names_reverse,old); // Namen Freigeben
if (!name) { // UnRegister
m_delete(team_names,ob);
return name;
}
team_names[ob]=name;
team_names_reverse[name]=ob;
return name;
}
varargs string RegisterTeam(string name) {
int i,min;
if (member(inherit_list(PO),TEAM_OBJECT+".c")<0)
return 0;
if (stringp(name)){
if (!team_names_reverse[name]) // Name noch nicht vergeben
return DoRegisterTeam(PO,name);
return 0;
}
min=sizeof(m_indices(team_names_reverse))+2;
for (i=1;i<min;i++)
if (!team_names_reverse[sprintf("%d",i)]) {
min=i;
break;
}
name=sprintf("%d",i);
return DoRegisterTeam(PO,name);
}
void UnregisterTeam() {
if (member(inherit_list(PO),TEAM_OBJECT+".c")>=0)
DoRegisterTeam(PO,0);
}
object *ListTeamObjects() {
return(m_indices(team_names)-({0}));
}
string *ListTeamNames() {
return(m_indices(team_names_reverse)-({0}));
}
string *SortedListTeamNames() {
return(sort_array(ListTeamNames(),#'<));
}
void ShowTeamInfos() {
object ob;
string *ind;
int i;
write(" --- Teamliste: ---\n");
ind=SortedListTeamNames();
for (i=sizeof(ind)-1;i>=0;i--)
if (objectp(ob=team_names_reverse[ind[i]]))
ob->ShowTeamInfo();
write(" --- (Ende Teamliste) ---\n");
}
varargs int remove(int silent) {
return 0;
}