ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/util/json_conv_old_faces
Revision: 1.2
Committed: Wed Jan 31 21:18:14 2007 UTC (17 years, 3 months ago) by elmex
Branch: MAIN
CVS Tags: rel-2_2, rel-2_0, rel-2_1, HEAD
Changes since 1.1: +1 -1 lines
Log Message:
added script for generation of palette files for drawing

File Contents

# Content
1 #!/opt/perl/bin/perl
2 #
3 # this script converts the old face names to the new ones and checks whether
4 # the face can be found in the list of image filenames.
5 #
6 # First make a list of filenames:
7 # find cf.schmorp.de/arch/ -name "*.png" -print > /tmp/face.filenames
8 #
9 # Second make a json file with the uuid->face mapping:
10 # cd /var/crossfire/
11 # grep_for_uuid_faces > /tmp/face.json
12 #
13 # Third call this to convert the facenames in the face.json:
14 # json_conv_old_faces /tmp/face.json /tmp/face.filenames > /tmp/newface.json
15 #
16 # finished.
17 #
18 use strict;
19 use JSON::Syck;
20
21 open J, $ARGV[0] or die "$!";
22 open F, $ARGV[1] or die "$!";
23
24 my $h = JSON::Syck::Load (do { local $/; <J> });
25 my @files = split /\r?\n/, do { local $/; <F> };
26
27 my %faces;
28 $faces{$_} = 1 for (values %$h);
29
30 my %filenames;
31 my %collided;
32
33 for (@files) {
34 next if /\.xvpics/;
35 s/^.*\/([^\/]*)$/\1/;
36 if ($filenames{$_}) {
37 warn "filename collision in $_\n" if $filenames{$_};
38 $collided{$_} = 1;
39 }
40 $filenames{$_} = 1;
41 }
42
43 my $first = 1;
44 print "{";
45 for my $k (keys %$h) {
46
47 local $_ = $h->{$k};
48
49 my $fn;
50 if (/\.x..$/) { $fn = $_ }
51 elsif (s/(sparkling|(?:ice|fire|acid)born).(\d)\2\2$/\1.x1\2/) { $fn = $_ }
52 elsif (s/\.\d(..)$/.x\1/) { $fn = $_ }
53 else { die "error in face for $k: $_" }
54
55 my $file = $fn;
56 $file =~ s/^(.*)\.(x..)$/\1.base.\2.png/;
57
58 if ($filenames{$file}) {
59 if ($collided{$file}) {
60 warn "face $fn -> $file has colliding filenames\n";
61 }
62 print "," unless $first;
63 $first = 0;
64 print "\n\"$k\":\"$fn\"";
65 } else {
66 warn "no such face: $_ -> $fn\n";
67 }
68 }
69 print "\n}\n";