… | |
… | |
10 | |
10 | |
11 | =over 4 |
11 | =over 4 |
12 | |
12 | |
13 | =cut |
13 | =cut |
14 | |
14 | |
|
|
15 | package Deliantra::Client; # work around CPAN breakage |
|
|
16 | package App::Deliantra; # try to reserve namespace |
15 | package DC; |
17 | package DC; |
16 | |
18 | |
17 | use Carp (); |
19 | use Carp (); |
18 | |
20 | |
19 | BEGIN { |
21 | BEGIN { |
20 | $VERSION = '0.9967'; |
22 | $VERSION = '0.9975'; |
21 | |
23 | |
22 | use XSLoader; |
24 | use XSLoader; |
23 | XSLoader::load "Deliantra::Client", $VERSION; |
25 | XSLoader::load "Deliantra::Client", $VERSION; |
24 | } |
26 | } |
25 | |
27 | |
… | |
… | |
164 | |
166 | |
165 | $::CFG = decode_json $CFG; |
167 | $::CFG = decode_json $CFG; |
166 | } |
168 | } |
167 | |
169 | |
168 | sub write_cfg { |
170 | sub write_cfg { |
169 | my ($file) = @_; |
171 | my $file = "$Deliantra::VARDIR/client.cf"; |
170 | |
172 | |
171 | $::CFG->{VERSION} = $::VERSION; |
173 | $::CFG->{VERSION} = $::VERSION; |
172 | |
174 | |
173 | open my $fh, ">:utf8", $file |
175 | open my $fh, ">:utf8", $file |
174 | or return; |
176 | or return; |
175 | print $fh encode_json $::CFG; |
177 | print $fh JSON::XS->new->utf8->pretty->encode ($::CFG); |
176 | } |
178 | } |
177 | |
179 | |
178 | sub http_proxy { |
180 | sub http_proxy { |
179 | my @proxy = win32_proxy_info; |
181 | my @proxy = win32_proxy_info; |
180 | |
182 | |
… | |
… | |
223 | $nb = (! ! $nb) + 0; |
225 | $nb = (! ! $nb) + 0; |
224 | ioctl $fh, 0x8004667e, \$nb; # FIONBIO |
226 | ioctl $fh, 0x8004667e, \$nb; # FIONBIO |
225 | } else { |
227 | } else { |
226 | fcntl $fh, &Fcntl::F_SETFL, $nb ? &Fcntl::O_NONBLOCK : 0; |
228 | fcntl $fh, &Fcntl::F_SETFL, $nb ? &Fcntl::O_NONBLOCK : 0; |
227 | } |
229 | } |
228 | |
|
|
229 | } |
230 | } |
230 | |
231 | |
231 | package DC::Layout; |
232 | package DC::Layout; |
232 | |
233 | |
233 | $DC::OpenGL::INIT_HOOK{"DC::Layout"} = sub { |
234 | $DC::OpenGL::INIT_HOOK{"DC::Layout"} = sub { |