--- deliantra/server/utils/cfutil.in 2008/01/15 12:02:24 1.69 +++ deliantra/server/utils/cfutil.in 2009/10/26 11:31:39 1.73 @@ -14,21 +14,24 @@ my $PNGNQ = "@PNGNQ@"; use Getopt::Long; +use File::Temp; +use POSIX (); +use Carp; + use Coro::EV; use AnyEvent; -use YAML (); +use YAML::XS (); use JSON::XS (); use IO::AIO (); -use File::Temp; -use Deliantra; -use Coro; + +use Coro 5.12; use Coro::AIO; use Coro::Util; -use POSIX (); -use Carp; use Coro::Channel; use Coro::Storable; $Storable::canonical = 1; +use Deliantra; + $SIG{QUIT} = sub { Carp::cluck "QUIT" }; sub usage { @@ -275,7 +278,8 @@ system $OPTIPNG, "-i0", "-q", "$other~"; # reduce smoothfaces >10000 bytes - if ($stem =~ /_S\./ && (-s "$other~") > 10000) { + # obsolete, no longer required + if (0 && $stem =~ /_S\./ && (-s "$other~") > 10000) { my $ncolor = 256; while () { system "<\Q$other~\E $PNGNQ -s1 -n$ncolor >\Q$other~~\E"; @@ -535,7 +539,7 @@ if (my $filter = $meta->{cfutil_filter}) { if ($filter eq "yaml2json") { - $data = JSON::XS::encode_json YAML::Load $data; + $data = JSON::XS::encode_json YAML::XS::Load $data; } elsif ($filter eq "json2json") { $data = JSON::XS::encode_json JSON::XS->relaxed->utf8->decode ($data); } elsif ($filter eq "perl2json") { @@ -602,6 +606,30 @@ }; } + sub generate_plurals { +# use Lingua::EN::Inflect (); +# Lingua::EN::Inflect::classical; +# Lingua::EN::Inflect::def_noun 'talisman' => 'talismans'; +# Lingua::EN::Inflect::def_noun '(.*)boots' => '$1boots'; # hack +# +# for my $a (@ARC) { +# my $name = $a->{name} || $a->{_name}; +# +# next unless $a->{name_pl}; +# +# +# my $test = Lingua::EN::Inflect::PL_N_eq $name, Lingua::EN::Inflect::PL $name; +# my $pl = $test =~ /^(?:eq|p:.)$/ +# ? $name +# : Lingua::EN::Inflect::PL $name; +# die "$test $pl" if $pl =~ /bootss/;#d# +# +# if ($pl ne $a->{name_pl}) { +# warn "$a->{_name}: plural differs, $pl vs $a->{name_pl}\n"; +# } +# } + } + sub inst_arch($) { my (undef, $path) = @_; @@ -632,9 +660,9 @@ IO::AIO::flush; - $c_res->put (undef) for @a_res; - $c_arc->put (undef) for @a_arc; - $c_trs->put (undef) for @a_trs; + $c_res->shutdown; + $c_arc->shutdown; + $c_trs->shutdown; print "start file scan, arc, res processing...\n" if $VERBOSE; @@ -689,6 +717,9 @@ # remove base classes (by naming scheme, should use something like "baseclass xxx" to inherit @ARC = grep $_->{_name} !~ /^(?:type|class)_/, @ARC; + print "generating plurals...\n" if $VERBOSE; + generate_plurals; + print "writing archetypes...\n" if $VERBOSE; open my $fh, ">:utf8", "$DATADIR/archetypes~" or die "$DATADIR/archetypes~: $!"; @@ -708,7 +739,7 @@ length $v->{data32} or warn "$k: face has no png32. this will not work (shoddy gcfclient will crash of course).\n"; length $v->{data64} or warn "$k: face has no png64. this will not work very well.\n"; - length $v->{data32} <= 10000 or warn "$k: face32 larger than 10000 bytes, will not work with crossfire client.\n"; + #length $v->{data32} <= 10000 or warn "$k: face32 larger than 10000 bytes, will not work with crossfire client.\n"; #length $v->{data64} <= 10000 or warn "$k: face64 larger than 10000 bytes.\n"; if (my $magicmap = $v->{magicmap}) {