… | |
… | |
1555 | |
1555 | |
1556 | while (my ($k, $v) = each %todo) { |
1556 | while (my ($k, $v) = each %todo) { |
1557 | cf::cleanup "mandatory extension '$k' has unresolved dependencies, exiting." |
1557 | cf::cleanup "mandatory extension '$k' has unresolved dependencies, exiting." |
1558 | if exists $v->{meta}{mandatory}; |
1558 | if exists $v->{meta}{mandatory}; |
1559 | } |
1559 | } |
|
|
1560 | |
|
|
1561 | last; |
1560 | } |
1562 | } |
1561 | } |
1563 | } |
1562 | }; |
1564 | }; |
1563 | } |
1565 | } |
1564 | |
1566 | |
… | |
… | |
1992 | |
1994 | |
1993 | Carp::cluck "unable to resolve path '$path' (base '$base')"; |
1995 | Carp::cluck "unable to resolve path '$path' (base '$base')"; |
1994 | () |
1996 | () |
1995 | } |
1997 | } |
1996 | |
1998 | |
|
|
1999 | # may re-bless or do other evil things |
1997 | sub init { |
2000 | sub init { |
1998 | my ($self) = @_; |
2001 | my ($self) = @_; |
1999 | |
2002 | |
2000 | $self |
2003 | $self |
2001 | } |
2004 | } |
… | |
… | |
2173 | $self->alloc; |
2176 | $self->alloc; |
2174 | |
2177 | |
2175 | $self->pre_load; |
2178 | $self->pre_load; |
2176 | cf::cede_to_tick; |
2179 | cf::cede_to_tick; |
2177 | |
2180 | |
|
|
2181 | if (exists $self->{load_path}) { |
2178 | my $f = new_from_file cf::object::thawer $self->{load_path}; |
2182 | my $f = new_from_file cf::object::thawer $self->{load_path}; |
2179 | $f->skip_block; |
2183 | $f->skip_block; |
2180 | $self->_load_objects ($f) |
2184 | $self->_load_objects ($f) |
2181 | or return; |
2185 | or return; |
2182 | |
2186 | |
2183 | $self->post_load_original |
2187 | $self->post_load_original |
2184 | if delete $self->{load_original}; |
2188 | if delete $self->{load_original}; |
2185 | |
2189 | |
2186 | if (my $uniq = $self->uniq_path) { |
2190 | if (my $uniq = $self->uniq_path) { |
2187 | utf8::encode $uniq; |
2191 | utf8::encode $uniq; |
2188 | unless (aio_stat $uniq) { |
2192 | unless (aio_stat $uniq) { |
2189 | if (my $f = new_from_file cf::object::thawer $uniq) { |
2193 | if (my $f = new_from_file cf::object::thawer $uniq) { |
2190 | $self->clear_unique_items; |
2194 | $self->clear_unique_items; |
2191 | $self->_load_objects ($f); |
2195 | $self->_load_objects ($f); |
2192 | $f->resolve_delayed_derefs; |
2196 | $f->resolve_delayed_derefs; |
|
|
2197 | } |
2193 | } |
2198 | } |
2194 | } |
2199 | } |
2195 | } |
|
|
2196 | |
2200 | |
2197 | $f->resolve_delayed_derefs; |
2201 | $f->resolve_delayed_derefs; |
|
|
2202 | } |
2198 | |
2203 | |
2199 | cf::cede_to_tick; |
2204 | cf::cede_to_tick; |
2200 | # now do the right thing for maps |
2205 | # now do the right thing for maps |
2201 | $self->link_multipart_objects; |
2206 | $self->link_multipart_objects; |
2202 | $self->difficulty ($self->estimate_difficulty) |
2207 | $self->difficulty ($self->estimate_difficulty) |
… | |
… | |
3655 | |
3660 | |
3656 | sub main { |
3661 | sub main { |
3657 | cf::init_globals; # initialise logging |
3662 | cf::init_globals; # initialise logging |
3658 | |
3663 | |
3659 | LOG llevInfo, "Welcome to Deliantra, v" . VERSION; |
3664 | LOG llevInfo, "Welcome to Deliantra, v" . VERSION; |
3660 | LOG llevInfo, "Copyright (C) 2005-2010 Marc Alexander Lehmann / Robin Redeker / the Deliantra team."; |
3665 | LOG llevInfo, "Copyright (C) 2005-2011 Marc Alexander Lehmann / Robin Redeker / the Deliantra team."; |
3661 | LOG llevInfo, "Copyright (C) 1994 Mark Wedel."; |
3666 | LOG llevInfo, "Copyright (C) 1994 Mark Wedel."; |
3662 | LOG llevInfo, "Copyright (C) 1992 Frank Tore Johansen."; |
3667 | LOG llevInfo, "Copyright (C) 1992 Frank Tore Johansen."; |
3663 | |
3668 | |
3664 | $Coro::current->prio (Coro::PRIO_MAX); # give the main loop max. priority |
3669 | $Coro::current->prio (Coro::PRIO_MAX); # give the main loop max. priority |
3665 | |
3670 | |