blob: c2f4bd2d521dfe78025cfa15eb91b89c628a7ff3 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001// MorgenGrauen MUDlib
2/** \file /file.c
3* Kurzbeschreibung.
4* Langbeschreibung...
5* \author <Autor>
6* \date <date>
7* \version $Id$
8*/
9/* Changelog:
10*/
11#pragma strong_types, save_types, rtt_checks
12#pragma no_clone, no_shadow
Zesstra0d64cca2020-03-09 21:03:56 +010013#pragma range_check
MG Mud User88f12472016-06-24 23:31:02 +020014#pragma warn_deprecated
15
16private void check_all_player(mapping allplayer, closure check_cl,
17 closure finish_cl, int res,
18 varargs mixed extra)
19{
20 // offenbar fertig mit allen Spielern, Aufrufer informieren.
21 if (!sizeof(allplayer))
22 {
23 funcall(finish_cl, extra...);
24 return;
25 }
26
27 string dir=m_indices(allplayer)[0];
28 string *pls=allplayer[dir];
29 foreach(string pl: &pls)
30 {
31 if (get_eval_cost() < res)
32 break; // spaeter weitermachen
33 catch(funcall(check_cl, pl, extra...) ; publish);
34 pl = 0;
35 }
36 pls-=({0});
37 allplayer[dir] = pls;
38
39 if (!sizeof(allplayer[dir]))
40 m_delete(allplayer,dir);
41
42 call_out(#'check_all_player,2, allplayer, check_cl, finish_cl, res, extra...);
43}
44
45protected int start_player_check(closure check_cl, closure finish_cl, int res,
46 varargs mixed extra)
47{
Arathornd5c9c022020-01-08 22:04:28 +010048 // Reservierte Ticks, pausieren, wenn weniger.
MG Mud User88f12472016-06-24 23:31:02 +020049 res ||= 1250000;
Arathornd5c9c022020-01-08 22:04:28 +010050 mapping allplayer=master()->get_all_players();
MG Mud User88f12472016-06-24 23:31:02 +020051 call_out(#'check_all_player,2, allplayer, check_cl, finish_cl, res, extra...);
52 return 1;
53}
54