--- deliantra/server/lib/cf.pm 2007/04/16 13:02:29 1.243 +++ deliantra/server/lib/cf.pm 2007/04/17 10:06:33 1.245 @@ -11,7 +11,7 @@ use Safe; use Safe::Hole; -use Coro 3.52 (); +use Coro 3.61 (); use Coro::State; use Coro::Event; use Coro::Timer; @@ -56,7 +56,7 @@ our @EVENT; our $LIBDIR = datadir . "/ext"; -our $TICK = MAX_TIME * 1e-6; +our $TICK = MAX_TIME * 1e-6; # this is a CONSTANT(!) our $TICK_WATCHER; our $AIO_POLL_WATCHER; our $NEXT_RUNTIME_WRITE; # when should the runtime file be written @@ -2386,10 +2386,7 @@ 1 } -our $archetypes_loaded; - sub load_archetypes { - return 1 if $archetypes_loaded++; # current can only load them once load_archetype_file sprintf "%s/archetypes", cf::datadir; # remove when stable load_archetype_file sprintf "%s/archetypes", cf::datadir } @@ -2399,6 +2396,8 @@ } sub reload_resources { + warn "reloading resource files...\n"; + load_resource_file sprintf "%s/%s/regions", cf::datadir, cf::mapdir or die "unable to load regions file\n"; load_facedata @@ -2407,6 +2406,8 @@ or die "unable to load archetypes\n"; load_treasures or die "unable to load treasurelists\n"; + + warn "finished reloading resource files\n"; } sub init { @@ -2697,6 +2698,7 @@ $NOW = Event::time; cf::server_tick; # one server iteration + $RUNTIME += $TICK; $NEXT_TICK += $TICK; @@ -2708,13 +2710,6 @@ }; } - if (my $sig = shift @WAIT_FOR_TICK_BEGIN) { - $sig->send; - } - while (my $sig = shift @WAIT_FOR_TICK) { - $sig->send; - } - # my $AFTER = Event::time; # warn $AFTER - $NOW;#d# @@ -2723,6 +2718,15 @@ $TICK_WATCHER->at ($NEXT_TICK); $TICK_WATCHER->start; + + if (my $sig = shift @WAIT_FOR_TICK_BEGIN) { + $sig->send; + } + while (my $sig = shift @WAIT_FOR_TICK) { + $sig->send; + } + + _post_tick; }, );