… | |
… | |
40 | use Coro::Timer; |
40 | use Coro::Timer; |
41 | use Coro::Signal; |
41 | use Coro::Signal; |
42 | use Coro::Semaphore; |
42 | use Coro::Semaphore; |
43 | use Coro::AnyEvent; |
43 | use Coro::AnyEvent; |
44 | use Coro::AIO; |
44 | use Coro::AIO; |
45 | use Coro::BDB; |
45 | use Coro::BDB 1.6; |
46 | use Coro::Storable; |
46 | use Coro::Storable; |
47 | use Coro::Util (); |
47 | use Coro::Util (); |
48 | |
48 | |
49 | use JSON::XS 2.01 (); |
49 | use JSON::XS 2.01 (); |
50 | use BDB (); |
50 | use BDB (); |
… | |
… | |
2086 | my $f = new_from_file cf::object::thawer $self->{load_path}; |
2086 | my $f = new_from_file cf::object::thawer $self->{load_path}; |
2087 | $f->skip_block; |
2087 | $f->skip_block; |
2088 | $self->_load_objects ($f) |
2088 | $self->_load_objects ($f) |
2089 | or return; |
2089 | or return; |
2090 | |
2090 | |
2091 | $self->set_object_flag (cf::FLAG_OBJ_ORIGINAL, 1) |
2091 | $self->post_load_original |
2092 | if delete $self->{load_original}; |
2092 | if delete $self->{load_original}; |
2093 | |
2093 | |
2094 | if (my $uniq = $self->uniq_path) { |
2094 | if (my $uniq = $self->uniq_path) { |
2095 | utf8::encode $uniq; |
2095 | utf8::encode $uniq; |
2096 | unless (aio_stat $uniq) { |
2096 | unless (aio_stat $uniq) { |
… | |
… | |
2613 | Moves the player to the given map-path and coordinates by first freezing |
2613 | Moves the player to the given map-path and coordinates by first freezing |
2614 | her, loading and preparing them map, calling the provided $check callback |
2614 | her, loading and preparing them map, calling the provided $check callback |
2615 | that has to return the map if sucecssful, and then unfreezes the player on |
2615 | that has to return the map if sucecssful, and then unfreezes the player on |
2616 | the new (success) or old (failed) map position. In either case, $done will |
2616 | the new (success) or old (failed) map position. In either case, $done will |
2617 | be called at the end of this process. |
2617 | be called at the end of this process. |
|
|
2618 | |
|
|
2619 | Note that $check will be called with a potentially non-loaded map, so if |
|
|
2620 | it needs a loaded map it has to call C<< ->load >>. |
2618 | |
2621 | |
2619 | =cut |
2622 | =cut |
2620 | |
2623 | |
2621 | our $GOTOGEN; |
2624 | our $GOTOGEN; |
2622 | |
2625 | |
… | |
… | |
3125 | =cut |
3128 | =cut |
3126 | |
3129 | |
3127 | for ( |
3130 | for ( |
3128 | ["cf::object" => qw(contr pay_amount pay_player map force_find force_add x y |
3131 | ["cf::object" => qw(contr pay_amount pay_player map force_find force_add x y |
3129 | insert remove inv nrof name archname title slaying race |
3132 | insert remove inv nrof name archname title slaying race |
3130 | decrease split destroy)], |
3133 | decrease split destroy change_exp)], |
3131 | ["cf::object::player" => qw(player)], |
3134 | ["cf::object::player" => qw(player)], |
3132 | ["cf::player" => qw(peaceful)], |
3135 | ["cf::player" => qw(peaceful)], |
3133 | ["cf::map" => qw(trigger)], |
3136 | ["cf::map" => qw(trigger)], |
3134 | ) { |
3137 | ) { |
3135 | no strict 'refs'; |
3138 | no strict 'refs'; |
… | |
… | |
3793 | BDB::max_poll_reqs $TICK * 0.1; |
3796 | BDB::max_poll_reqs $TICK * 0.1; |
3794 | $AnyEvent::BDB::WATCHER->priority (1); |
3797 | $AnyEvent::BDB::WATCHER->priority (1); |
3795 | |
3798 | |
3796 | unless ($DB_ENV) { |
3799 | unless ($DB_ENV) { |
3797 | $DB_ENV = BDB::db_env_create; |
3800 | $DB_ENV = BDB::db_env_create; |
3798 | $DB_ENV->set_flags (BDB::AUTO_COMMIT | BDB::REGION_INIT | BDB::TXN_NOSYNC |
3801 | $DB_ENV->set_flags (BDB::AUTO_COMMIT | BDB::REGION_INIT); |
3799 | | BDB::LOG_AUTOREMOVE, 1); |
3802 | $DB_ENV->set_flags (&BDB::LOG_AUTOREMOVE ) if BDB::VERSION v0, v4.7; |
|
|
3803 | $DB_ENV->log_set_config (&BDB::LOG_AUTO_REMOVE) if BDB::VERSION v4.7; |
3800 | $DB_ENV->set_timeout (30, BDB::SET_TXN_TIMEOUT); |
3804 | $DB_ENV->set_timeout (30, BDB::SET_TXN_TIMEOUT); |
3801 | $DB_ENV->set_timeout (30, BDB::SET_LOCK_TIMEOUT); |
3805 | $DB_ENV->set_timeout (30, BDB::SET_LOCK_TIMEOUT); |
3802 | |
3806 | |
3803 | cf::sync_job { |
3807 | cf::sync_job { |
3804 | eval { |
3808 | eval { |