--- deliantra/server/lib/cf.pm 2007/01/20 21:06:52 1.187 +++ deliantra/server/lib/cf.pm 2007/01/20 23:30:16 1.188 @@ -1299,35 +1299,46 @@ 1 } -sub load_orig { +sub load_header_orig { my ($self) = @_; $self->load_header_from ($self->load_path) } -sub load_temp { +sub load_header_temp { my ($self) = @_; $self->load_header_from ($self->save_path) } +sub prepare_temp { + my ($self) = @_; + + $self->last_access ((delete $self->{last_access}) + || $cf::RUNTIME); #d# + # safety + $self->{instantiate_time} = $cf::RUNTIME + if $self->{instantiate_time} > $cf::RUNTIME; +} + +sub prepare_orig { + my ($self) = @_; + + $self->{load_original} = 1; + $self->{instantiate_time} = $cf::RUNTIME; + $self->last_access ($cf::RUNTIME); + $self->instantiate; +} + sub load_header { my ($self) = @_; - if ($self->load_temp) { - $self->last_access ((delete $self->{last_access}) - || $cf::RUNTIME); #d# - # safety - $self->{instantiate_time} = $cf::RUNTIME - if $self->{instantiate_time} > $cf::RUNTIME; + if ($self->load_header_temp) { + $self->prepare_temp; } else { - $self->load_orig + $self->load_header_orig or return; - - $self->{load_original} = 1; - $self->{instantiate_time} = $cf::RUNTIME; - $self->last_access ($cf::RUNTIME); - $self->instantiate; + $self->prepare_orig; } 1 @@ -1364,6 +1375,9 @@ } } +sub pre_load { } +sub post_load { } + sub load { my ($self) = @_; @@ -1375,6 +1389,9 @@ $self->in_memory (cf::MAP_LOADING); $self->alloc; + + $self->pre_load; + $self->_load_objects ($self->{load_path}, 1) or return; @@ -1406,6 +1423,8 @@ $self->activate; } + $self->post_load; + $self->in_memory (cf::MAP_IN_MEMORY); }