MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | // 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 |
| 13 | #pragma pedantic, range_check |
| 14 | #pragma warn_deprecated |
| 15 | |
| 16 | private 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 | |
| 45 | protected int start_player_check(closure check_cl, closure finish_cl, int res, |
| 46 | varargs mixed extra) |
| 47 | { |
| 48 | res ||= 1250000; |
| 49 | mapping allplayer=(mapping)master()->get_all_players(); |
| 50 | call_out(#'check_all_player,2, allplayer, check_cl, finish_cl, res, extra...); |
| 51 | return 1; |
| 52 | } |
| 53 | |