… | |
… | |
154 | (map { |
154 | (map { |
155 | ( |
155 | ( |
156 | "(", |
156 | "(", |
157 | "+clone", |
157 | "+clone", |
158 | -crop => (sprintf "%dx%d+%d+%d", $T, $T, $_->[0] * $T, $_->[1] * $T), |
158 | -crop => (sprintf "%dx%d+%d+%d", $T, $T, $_->[0] * $T, $_->[1] * $T), |
|
|
159 | "+repage", |
159 | -write => "png:$_->[2]~", |
160 | -write => "png:$_->[2]~", |
160 | "+delete", |
161 | "+delete", |
161 | ")", |
162 | ")", |
162 | ) |
163 | ) |
163 | } @todo), |
164 | } @todo), |
… | |
… | |
201 | |
202 | |
202 | my $arc = read_arch "$dir/$file"; |
203 | my $arc = read_arch "$dir/$file"; |
203 | for my $o (values %$arc) { |
204 | for my $o (values %$arc) { |
204 | push @ARC, $o; |
205 | push @ARC, $o; |
205 | |
206 | |
|
|
207 | $o->{editor_folder} = $dir; |
|
|
208 | |
206 | my $visibility = delete $o->{visibility}; |
209 | my $visibility = delete $o->{visibility}; |
207 | my $magicmap = delete $o->{magicmap}; |
210 | my $magicmap = delete $o->{magicmap}; |
208 | |
211 | |
209 | # find upper left corner :/ |
212 | # find upper left corner :/ |
210 | # omg, this is sooo broken |
213 | # omg, this is sooo broken |
… | |
… | |
218 | my $x = $o->{x} - $dx; |
221 | my $x = $o->{x} - $dx; |
219 | my $y = $o->{y} - $dy; |
222 | my $y = $o->{y} - $dy; |
220 | |
223 | |
221 | my $ext = $x|$y ? "+$x+$y" : ""; |
224 | my $ext = $x|$y ? "+$x+$y" : ""; |
222 | |
225 | |
223 | $o->{face} .= $ext; |
226 | $o->{face} .= $ext unless /^blank.x11$|^empty.x11$/; |
224 | |
227 | |
225 | my $visibility = delete $o->{visibility} if exists $o->{visibility}; |
228 | my $visibility = delete $o->{visibility} if exists $o->{visibility}; |
226 | my $magicmap = delete $o->{magicmap} if exists $o->{magicmap}; |
229 | my $magicmap = delete $o->{magicmap} if exists $o->{magicmap}; |
227 | |
230 | |
228 | my $anim = delete $o->{anim}; |
231 | my $anim = delete $o->{anim}; |
229 | |
232 | |
230 | if ($anim) { |
233 | if ($anim) { |
231 | $o->{animation} = "$o->{_name}$ext"; |
234 | $o->{animation} = "$o->{_name}"; |
232 | |
235 | |
233 | for (@$anim) { |
236 | for (@$anim) { |
234 | $_ .= $ext unless /^facings\s/; |
237 | $_ .= $ext unless /^facings\s|^blank.x11$|^empty.x11$/; |
235 | } |
238 | } |
236 | |
239 | |
237 | $ANIM{"$o->{_name}$ext"} = |
240 | $ANIM{"$o->{_name}$ext"} = |
238 | join "", map "$_\n", |
241 | join "", map "$_\n", |
239 | "anim $o->{_name}$ext", |
242 | "anim $o->{_name}", |
240 | @$anim, |
243 | @$anim, |
241 | "mina"; |
244 | "mina"; |
242 | } |
245 | } |
243 | |
246 | |
244 | for my $face ($o->{face} || (), @{$anim || []}) { |
247 | for my $face ($o->{face} || (), @{$anim || []}) { |
245 | next if /^facings\s/; |
248 | next if $face =~ /^facings\s|^blank.x11$|^empty.x11$/; |
246 | |
249 | |
247 | my $info = $FACEINFO{$face} ||= {}; |
250 | my $info = $FACEINFO{$face} ||= {}; |
248 | |
251 | |
249 | $info->{visibility} = $visibility if defined $visibility; |
252 | $info->{visibility} = $visibility if defined $visibility; |
250 | $info->{magicmap} = $magicmap if defined $magicmap; |
253 | $info->{magicmap} = $magicmap if defined $magicmap; |
… | |
… | |
311 | } |
314 | } |
312 | |
315 | |
313 | { |
316 | { |
314 | open my $fh, ">:utf8", "$DATADIR/archetypes~" |
317 | open my $fh, ">:utf8", "$DATADIR/archetypes~" |
315 | or die "$DATADIR/archetypes~: $!"; |
318 | or die "$DATADIR/archetypes~: $!"; |
|
|
319 | substr $_->{editor_folder}, 0, length $path, "" for @ARC; |
316 | print $fh Crossfire::archlist_to_string \@ARC; |
320 | print $fh Crossfire::archlist_to_string \@ARC; |
317 | } |
321 | } |
318 | |
322 | |
319 | { |
323 | { |
320 | while (my ($k, $v) = each %FACEINFO) { |
324 | while (my ($k, $v) = each %FACEINFO) { |
321 | $v->{data32} ||= delete $PNG32{$k}; |
325 | $v->{data32} ||= delete $PNG32{$k}; |
322 | } |
326 | } |
323 | |
327 | |
324 | while (my ($k, $v) = each %FACEINFO) { |
328 | while (my ($k, $v) = each %FACEINFO) { |
325 | exists $v->{data32} or warn "$k: face has no png32. this will crash the server.\n"; |
329 | length $v->{data32} or warn "$k: face has no png32. this will crash the server.\n"; |
326 | |
330 | |
327 | $v->{chksum32} = Digest::MD5::md5 $v->{data32}; |
331 | $v->{chksum32} = Digest::MD5::md5 $v->{data32}; |
328 | } |
332 | } |
329 | |
333 | |
330 | open my $fh, ">:perlio", "$DATADIR/faces~" |
334 | open my $fh, ">:perlio", "$DATADIR/faces~" |