… | |
… | |
2 | |
2 | |
3 | # player scheduler, evoking players from ram |
3 | # player scheduler, evoking players from ram |
4 | |
4 | |
5 | our $SCHEDULE_INTERVAL = $cf::CFG{player_schedule_interval} || 10; # time the player scheduler sleeps between runs |
5 | our $SCHEDULE_INTERVAL = $cf::CFG{player_schedule_interval} || 10; # time the player scheduler sleeps between runs |
6 | our $SAVE_TIMEOUT = $cf::CFG{player_save_interval} || 20; # save players every n seconds |
6 | our $SAVE_TIMEOUT = $cf::CFG{player_save_interval} || 20; # save players every n seconds |
|
|
7 | |
|
|
8 | cf::player->attach ( |
|
|
9 | on_load => sub { |
|
|
10 | my ($pl, $path) = @_; |
|
|
11 | |
|
|
12 | my $slots = delete $pl->{_slots}; |
|
|
13 | |
|
|
14 | $pl->ob->current_weapon ($slots->[0]); |
|
|
15 | $pl->combat_ob ($slots->[1]); |
|
|
16 | $pl->ranged_ob ($slots->[2]); |
|
|
17 | }, |
|
|
18 | on_save => sub { |
|
|
19 | my ($pl, $path) = @_; |
|
|
20 | $pl->{_slots} = [$pl->ob->current_weapon, $pl->combat_ob, $pl->ranged_ob]; |
|
|
21 | }, |
|
|
22 | ); |
7 | |
23 | |
8 | our $SCHEDULER = cf::async_ext { |
24 | our $SCHEDULER = cf::async_ext { |
9 | $Coro::current->{desc} = "player scheduler"; |
25 | $Coro::current->{desc} = "player scheduler"; |
10 | |
26 | |
11 | while () { |
27 | while () { |