blob: 76e8ca015d4b345b70b51f120fa61a676c0bcd2d [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001#pragma strong_types,save_types
2#pragma no_shadow,no_clone
3
4#include <living/team.h>
5#include <wizlevels.h>
6#define ME this_object()
7#define PO previous_object()
8
9static mapping team_names;
10static mapping team_names_reverse;
11
12void create() {
13
14 team_names=([]); // Objekt -> Name
15 team_names_reverse=([]); // Name -> Objekt
16}
17
18static mixed DoRegisterTeam(object ob, string name) {
19 mixed old;
20
21 old=team_names[ob];
22 m_delete(team_names_reverse,old); // Namen Freigeben
23 if (!name) { // UnRegister
24 m_delete(team_names,ob);
25 return name;
26 }
27 team_names[ob]=name;
28 team_names_reverse[name]=ob;
29 return name;
30}
31
32varargs string RegisterTeam(string name) {
33 int i,min;
34
35 if (member(inherit_list(PO),TEAM_OBJECT+".c")<0)
36 return 0;
37 if (stringp(name)){
38 if (!team_names_reverse[name]) // Name noch nicht vergeben
39 return DoRegisterTeam(PO,name);
40 return 0;
41 }
42 min=sizeof(m_indices(team_names_reverse))+2;
43 for (i=1;i<min;i++)
44 if (!team_names_reverse[sprintf("%d",i)]) {
45 min=i;
46 break;
47 }
48 name=sprintf("%d",i);
49 return DoRegisterTeam(PO,name);
50}
51
52void UnregisterTeam() {
53 if (member(inherit_list(PO),TEAM_OBJECT+".c")>=0)
54 DoRegisterTeam(PO,0);
55}
56
57object *ListTeamObjects() {
58 return(m_indices(team_names)-({0}));
59}
60
61string *ListTeamNames() {
62 return(m_indices(team_names_reverse)-({0}));
63}
64
65string *SortedListTeamNames() {
66 return(sort_array(ListTeamNames(),#'<));
67}
68
69void ShowTeamInfos() {
70 object ob;
71 string *ind;
72 int i;
73
74 write(" --- Teamliste: ---\n");
75 ind=SortedListTeamNames();
76 for (i=sizeof(ind)-1;i>=0;i--)
77 if (objectp(ob=team_names_reverse[ind[i]]))
78 ob->ShowTeamInfo();
79 write(" --- (Ende Teamliste) ---\n");
80}
81
82varargs int remove(int silent) {
83 return 0;
84}