ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra/Deliantra.pm
(Generate patch)

Comparing deliantra/Deliantra/Deliantra.pm (file contents):
Revision 1.18 by root, Wed Feb 22 22:41:22 2006 UTC vs.
Revision 1.23 by root, Thu Feb 23 02:52:51 2006 UTC

12 12
13use base 'Exporter'; 13use base 'Exporter';
14 14
15use Carp (); 15use Carp ();
16use Storable; 16use Storable;
17use File::Spec;
17use List::Util qw(min max); 18use List::Util qw(min max);
18 19
19#XXX: The map_* procedures scream for a map-object 20#XXX: The map_* procedures scream for a map-object
20 21
21our @EXPORT = 22our @EXPORT =
113 my ($path, $cache) = @_; 114 my ($path, $cache) = @_;
114 115
115 eval { 116 eval {
116 defined $cache 117 defined $cache
117 && -M $cache < -M $path 118 && -M $cache < -M $path
118 && Storable::retrieve $cache 119 && Storable::retrieve ($cache)
119 } or do { 120 } or do {
120 my %pak; 121 my %pak;
121 122
122 open my $fh, "<:raw", $path 123 open my $fh, "<:raw", $path
123 or Carp::croak "$_[0]: $!"; 124 or Carp::croak "$_[0]: $!";
125 my ($type, $id, $len, $path) = split; 126 my ($type, $id, $len, $path) = split;
126 $path =~ s/.*\///; 127 $path =~ s/.*\///;
127 read $fh, $pak{$path}, $len; 128 read $fh, $pak{$path}, $len;
128 } 129 }
129 130
130 Storable::nstore \%pak, $cache 131 Storable::nstore (\%pak, $cache)
131 if defined $cache; 132 if defined $cache;
132 133
133 \%pak 134 \%pak
134 } 135 }
135} 136}
138 my ($path, $cache) = @_; 139 my ($path, $cache) = @_;
139 140
140 eval { 141 eval {
141 defined $cache 142 defined $cache
142 && -M $cache < -M $path 143 && -M $cache < -M $path
143 && Storable::retrieve $cache 144 && Storable::retrieve ($cache)
144 } or do { 145 } or do {
145 my %arc; 146 my %arc;
146 my ($more, $prev); 147 my ($more, $prev);
147 148
148 open my $fh, "<:raw", $path 149 open my $fh, "<:raw", $path
203 } 204 }
204 } 205 }
205 206
206 undef $parse_block; # work around bug in perl not freeing $fh etc. 207 undef $parse_block; # work around bug in perl not freeing $fh etc.
207 208
208 Storable::nstore \%arc, $cache 209 Storable::nstore (\%arc, $cache)
209 if defined $cache; 210 if defined $cache;
210 211
211 \%arc 212 \%arc
212 } 213 }
213} 214}
269sub init($) { 270sub init($) {
270 my ($cachedir) = @_; 271 my ($cachedir) = @_;
271 272
272 return if %ARCH; 273 return if %ARCH;
273 274
275 mkdir $cachedir, 0777;
274 *ARCH = read_arch "$LIB/archetypes", "$cachedir/archetypes.pst"; 276 *ARCH = read_arch "$LIB/archetypes", "$cachedir/archetypes.pst";
275} 277}
276 278
277=item $data = arch_attr $arch 279=item $type = arch_attr $arch
278 280
279Returns a hashref describing the object and its attributes. It can contain 281Returns a hashref describing the object and its attributes. It can contain
280the following keys: 282the following keys:
281 283
282 name the name, suitable for display purposes 284 name the name, suitable for display purposes
283 ignore 285 ignore
284 attr 286 attr
285 desc 287 desc
286 use 288 use
287 section => [name => \%attr, name => \%attr] 289 section => [name => \%attr, name => \%attr]
290 import
288 291
289=cut 292=cut
290 293
291sub arch_attr($) { 294sub arch_attr($) {
292 my ($arch) = @_; 295 my ($arch) = @_;
312 315
313 $attr = $_; 316 $attr = $_;
314 } 317 }
315 } 318 }
316 319
317 use PApp::Util; 320 $attr || \%Crossfire::Data::DEFAULT_ATTR;
318 warn PApp::Util::dumpval $attr;
319} 321}
320 322
321sub arch_edit_sections { 323sub arch_edit_sections {
322# if (edit_type == IGUIConstants.TILE_EDIT_NONE) 324# if (edit_type == IGUIConstants.TILE_EDIT_NONE)
323# edit_type = 0; 325# edit_type = 0;
377# return(edit_type); 379# return(edit_type);
378# 380#
379# 381#
380} 382}
381 383
382$CACHEDIR ||= "$ENV{HOME}/.crossfire"; 384$CACHEDIR ||= $ENV{HOME} ? "$ENV{HOME}/.crossfire" : File::Spec->tmpdir;
383 385
384init $CACHEDIR; 386init $CACHEDIR;
385 387
386=head1 AUTHOR 388=head1 AUTHOR
387 389

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines