ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/bin/pclient
(Generate patch)

Comparing deliantra/Deliantra-Client/bin/pclient (file contents):
Revision 1.167 by root, Sun Apr 23 05:33:24 2006 UTC vs.
Revision 1.172 by root, Mon Apr 24 03:43:52 2006 UTC

36our @SDL_MODES; 36our @SDL_MODES;
37our $WIDTH; 37our $WIDTH;
38our $HEIGHT; 38our $HEIGHT;
39our $FULLSCREEN; 39our $FULLSCREEN;
40our $FONTSIZE; 40our $FONTSIZE;
41
42our $FONT_PROP;
43our $FONT_FIXED;
41 44
42our $MAP; 45our $MAP;
43our $MAPWIDGET; 46our $MAPWIDGET;
44our $BUTTONBAR; 47our $BUTTONBAR;
45our $LOGVIEW; 48our $LOGVIEW;
139 my ($self, $value) = @_; 142 my ($self, $value) = @_;
140 $CFG->{fast} = $value; 143 $CFG->{fast} = $value;
141 } 144 }
142 ); 145 );
143 146
147 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Map Scale");
148 $table->add (1, $row++, new CFClient::UI::Slider
149 range => [$CFG->{map_scale}, 0.25, 2, 0.05],
150 tooltip => "Enlarge or shrink the displayed map",
151 connect_changed => sub {
152 my ($self, $value) = @_;
153 $CFG->{map_scale} = 0.05 * int $value / 0.05;
154 }
155 );
156
144 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fog of War"); 157 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fog of War");
145 $table->add (1, $row++, new CFClient::UI::CheckBox 158 $table->add (1, $row++, new CFClient::UI::CheckBox
146 state => $CFG->{fow_enable}, 159 state => $CFG->{fow_enable},
147 tooltip => "Fog-of-War marks areas that cannot be seen by the player", 160 tooltip => "Fog-of-War marks areas that cannot be seen by the player",
148 connect_changed => sub { 161 connect_changed => sub {
219 range => [$CFG->{gauge_fontsize}, 0.5, 2.0, 0.1], 232 range => [$CFG->{gauge_fontsize}, 0.5, 2.0, 0.1],
220 tooltip => "Adjusts the fontsize of the gauges at the bottom right", 233 tooltip => "Adjusts the fontsize of the gauges at the bottom right",
221 connect_changed => sub { 234 connect_changed => sub {
222 $CFG->{gauge_fontsize} = 0.1 * int $_[1] * 10; 235 $CFG->{gauge_fontsize} = 0.1 * int $_[1] * 10;
223 &set_gauge_window_fontsize; 236 &set_gauge_window_fontsize;
224 #$GAUGES->{win}->check_size;
225 #$GAUGES->{win}->update;
226 } 237 }
227 ); 238 );
228 239
229 $table->add (1, $row++, new CFClient::UI::Button 240 $table->add (1, $row++, new CFClient::UI::Button
230 expand => 1, align => 0, text => "Apply", 241 expand => 1, align => 0, text => "Apply",
231 tooltip => "Apply the video settings (unless they are auto-apply)", 242 tooltip => "Apply the video settings",
232 connect_activate => sub { 243 connect_activate => sub {
233 video_shutdown (); 244 video_shutdown ();
234 video_init (); 245 video_init ();
235 } 246 }
236 ); 247 );
265 } 276 }
266 ); 277 );
267 278
268 $table->add (1, $row++, new CFClient::UI::Button 279 $table->add (1, $row++, new CFClient::UI::Button
269 expand => 1, align => 0, text => "Apply", 280 expand => 1, align => 0, text => "Apply",
270 tooltip => "Apply the audio settings that are not auto-apply", 281 tooltip => "Apply the audio settings",
271 connect_activate => sub { 282 connect_activate => sub {
272 audio_shutdown (); 283 audio_shutdown ();
273 audio_init (); 284 audio_init ();
274 } 285 }
275 ); 286 );
285 296
286sub set_gauge_window_fontsize { 297sub set_gauge_window_fontsize {
287 for (map { $GAUGES->{$_} } grep { $_ ne 'win' } keys %{$GAUGES}) { 298 for (map { $GAUGES->{$_} } grep { $_ ne 'win' } keys %{$GAUGES}) {
288 $_->set_fontsize ($::CFG->{gauge_fontsize}); 299 $_->set_fontsize ($::CFG->{gauge_fontsize});
289 } 300 }
301
302# local $GAUGES->{win}{parent};#d#
303# use PApp::Util; open D, ">:utf8", "d"; print D PApp::Util::dumpval $GAUGES->{win}; close D;
290} 304}
291 305
292sub make_gauge_window { 306sub make_gauge_window {
293 my $gh = int ($HEIGHT * $CFG->{gauge_size}); 307 my $gh = int ($HEIGHT * $CFG->{gauge_size});
294# my $gw = int ($WIDTH * $CFG->{gauge_w_size}); 308# my $gw = int ($WIDTH * $CFG->{gauge_w_size});
295 309
296 my $win = new CFClient::UI::Frame ( 310 my $win = new CFClient::UI::Frame (
297 y => $HEIGHT - $gh, x => 0, req_w => $WIDTH, req_h => $gh 311 y => $HEIGHT - $gh, x => 0, user_w => $WIDTH, user_h => $gh
298 ); 312 );
299 $win->add (my $vb = new CFClient::UI::VBox); 313 $win->add (my $vb = new CFClient::UI::VBox);
300 314
301 $vb->add (my $hbg = new CFClient::UI::HBox expand => 1); 315 $vb->add (my $hb1 = new CFClient::UI::HBox expand => 1);
302 316
303
304 $hbg->add (new CFClient::UI::Empty expand => 1); 317 $hb1->add (new CFClient::UI::Empty expand => 1);
305 $hbg->add (my $hb = new CFClient::UI::HBox); 318 $hb1->add (my $hb = new CFClient::UI::HBox);
306 $hb->add (my $hg = new CFClient::UI::Gauge type => 'hp', tooltip => "Health points"); 319 $hb->add (my $hg = new CFClient::UI::Gauge type => 'hp',
320 tooltip => "Health points - depletes when you get wounded, refills when you heal or idle");
307 $hb->add (my $mg = new CFClient::UI::Gauge type => 'mana', tooltip => "Spellpoints"); 321 $hb->add (my $mg = new CFClient::UI::Gauge type => 'mana',
322 tooltip => "Spell points - deplete when you cast wizard spells, refills when you idle");
308 $hb->add (my $gg = new CFClient::UI::Gauge type => 'grace', tooltip => "Grace"); 323 $hb->add (my $gg = new CFClient::UI::Gauge type => 'grace',
324 tooltip => "Grace points - deplete when you cast priest spells, refills when you pray");
309 $hb->add (my $fg = new CFClient::UI::Gauge type => 'food', tooltip => "Food"); 325 $hb->add (my $fg = new CFClient::UI::Gauge type => 'food',
326 tooltip => "Food - depletes with time, faster when you heal or build mana, refills when you eat healthy food");
310 327
328 $vb->add (my $hb2 = new CFClient::UI::HBox);
329
330 $hb2->add (new CFClient::UI::Empty expand => 1);
331 $hb2->add (my $vb2 = new CFClient::UI::VBox);
311 $vb->add (my $exp = new CFClient::UI::Label valign => 0, align => 1, text => "XP: 0 LVL: 0"); 332 $vb2->add (my $exp = new CFClient::UI::Label valign => 0, align => 1, can_hover => 1, can_events => 1,
333 tooltip => "Experience points and level - increases when you kill monsters or successfully use skills");
312 $vb->add (my $rng = new CFClient::UI::Label valign => 0, align => 1, text => "Rng:"); 334 $vb2->add (my $rng = new CFClient::UI::Label valign => 0, align => 1, can_hover => 1, can_events => 1,
335 tooltip => "Ranged attack - how you attack when you press shift-cursor (spell, skill, weapon etc.)");
313 336
314 $GAUGES = { 337 $GAUGES = {
315 exp => $exp, win => $win, range => $rng, 338 exp => $exp, win => $win, range => $rng,
316 food => $fg, mana => $mg, hp => $hg, grace => $gg 339 food => $fg, mana => $mg, hp => $hg, grace => $gg
317 }; 340 };
341
342 &set_gauge_window_fontsize;
343
318 $win 344 $win
319} 345}
320 346
321sub make_stats_window { 347sub make_stats_window {
322 my $tgw = new CFClient::UI::FancyFrame (x => $WIDTH * 2/5, y => 0, title => "Stats"); 348 my $tgw = new CFClient::UI::FancyFrame (x => $WIDTH * 2/5, y => 0, title => "Stats");
323 349
324 $tgw->add (my $vb = new CFClient::UI::VBox); 350 $tgw->add (my $vb = new CFClient::UI::VBox);
325 $vb->add (my $uhb = new CFClient::UI::HBox);
326 $uhb->add ($STATWIDS->{title} = new CFClient::UI::Label valign => 0, align => -1, text => "Title:", expand => 1); 351 $vb->add ($STATWIDS->{title} = new CFClient::UI::Label valign => 0, align => -1, text => "Title:", expand => 1);
327 $uhb->add ($STATWIDS->{map} = new CFClient::UI::Label valign => 0, align => -1, text => "Map:", expand => 1); 352 $vb->add ($STATWIDS->{map} = new CFClient::UI::Label valign => 0, align => -1, text => "Map:", expand => 1);
328 353
329 $vb->add (my $hb = new CFClient::UI::HBox expand => 1); 354 $vb->add (my $hb = new CFClient::UI::HBox expand => 1);
330 355
331 $hb->add (my $tbl = new CFClient::UI::Table expand => 1); 356 $hb->add (my $tbl = new CFClient::UI::Table expand => 1);
332 357
358 $tbl->add (0, 0, $STATWIDS->{st_str} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
359 $tbl->add (0, 1, $STATWIDS->{st_dex} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
360 $tbl->add (0, 2, $STATWIDS->{st_con} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
361 $tbl->add (0, 3, $STATWIDS->{st_int} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
362 $tbl->add (0, 4, $STATWIDS->{st_wis} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
363 $tbl->add (0, 5, $STATWIDS->{st_pow} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
364 $tbl->add (0, 6, $STATWIDS->{st_cha} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
365
333 $tbl->add (0, 0, $STATWIDS->{st_str_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Str"); 366 $tbl->add (1, 0, $STATWIDS->{st_str_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Str");
334 $tbl->add (0, 1, $STATWIDS->{st_dex_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Dex"); 367 $tbl->add (1, 1, $STATWIDS->{st_dex_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Dex");
335 $tbl->add (0, 2, $STATWIDS->{st_con_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Con"); 368 $tbl->add (1, 2, $STATWIDS->{st_con_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Con");
336 $tbl->add (0, 3, $STATWIDS->{st_int_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Int"); 369 $tbl->add (1, 3, $STATWIDS->{st_int_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Int");
337 $tbl->add (0, 4, $STATWIDS->{st_wis_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Wis"); 370 $tbl->add (1, 4, $STATWIDS->{st_wis_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Wis");
338 $tbl->add (0, 5, $STATWIDS->{st_pow_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Pow"); 371 $tbl->add (1, 5, $STATWIDS->{st_pow_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Pow");
339 $tbl->add (0, 6, $STATWIDS->{st_cha_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Cha"); 372 $tbl->add (1, 6, $STATWIDS->{st_cha_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Cha");
340 373
341 $tbl->add (1, 0, $STATWIDS->{st_str} = new CFClient::UI::Label valign => 0, align => +1, text => ""); 374 $tbl->add (2, 0, $STATWIDS->{st_wc} = new CFClient::UI::Label valign => 0, align => +1, template => "-120");
375 $tbl->add (2, 1, $STATWIDS->{st_ac} = new CFClient::UI::Label valign => 0, align => +1, template => "-120");
342 $tbl->add (1, 1, $STATWIDS->{st_dex} = new CFClient::UI::Label valign => 0, align => +1, text => ""); 376 $tbl->add (2, 2, $STATWIDS->{st_dam} = new CFClient::UI::Label valign => 0, align => +1, template => "120");
343 $tbl->add (1, 2, $STATWIDS->{st_con} = new CFClient::UI::Label valign => 0, align => +1, text => "");
344 $tbl->add (1, 3, $STATWIDS->{st_int} = new CFClient::UI::Label valign => 0, align => +1, text => ""); 377 $tbl->add (2, 3, $STATWIDS->{st_arm} = new CFClient::UI::Label valign => 0, align => +1, template => "120");
378 $tbl->add (2, 4, $STATWIDS->{st_spd} = new CFClient::UI::Label valign => 0, align => +1, template => "10.54");
345 $tbl->add (1, 4, $STATWIDS->{st_wis} = new CFClient::UI::Label valign => 0, align => +1, text => ""); 379 $tbl->add (2, 5, $STATWIDS->{st_wspd} = new CFClient::UI::Label valign => 0, align => +1, template => "9");
346 $tbl->add (1, 5, $STATWIDS->{st_pow} = new CFClient::UI::Label valign => 0, align => +1, text => "");
347 $tbl->add (1, 6, $STATWIDS->{st_cha} = new CFClient::UI::Label valign => 0, align => +1, text => "");
348 380
349 $tbl->add (2, 0, $STATWIDS->{st_wc_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Wc"); 381 $tbl->add (3, 0, $STATWIDS->{st_wc_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Wc");
350 $tbl->add (2, 1, $STATWIDS->{st_ac_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Ac"); 382 $tbl->add (3, 1, $STATWIDS->{st_ac_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Ac");
351 $tbl->add (2, 2, $STATWIDS->{st_dam_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Dam"); 383 $tbl->add (3, 2, $STATWIDS->{st_dam_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Dam");
352 $tbl->add (2, 3, $STATWIDS->{st_arm_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Arm"); 384 $tbl->add (3, 3, $STATWIDS->{st_arm_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Arm");
353 $tbl->add (2, 4, $STATWIDS->{st_spd_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Sp"); 385 $tbl->add (3, 4, $STATWIDS->{st_spd_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Sp");
354 $tbl->add (2, 5, $STATWIDS->{st_wspd_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "WSp"); 386 $tbl->add (3, 5, $STATWIDS->{st_wspd_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "WSp");
355
356 $tbl->add (3, 0, $STATWIDS->{st_wc} = new CFClient::UI::Label valign => 0, align => +1, text => "");
357 $tbl->add (3, 1, $STATWIDS->{st_ac} = new CFClient::UI::Label valign => 0, align => +1, text => "");
358 $tbl->add (3, 2, $STATWIDS->{st_dam} = new CFClient::UI::Label valign => 0, align => +1, text => "");
359 $tbl->add (3, 3, $STATWIDS->{st_arm} = new CFClient::UI::Label valign => 0, align => +1, text => "");
360 $tbl->add (3, 4, $STATWIDS->{st_spd} = new CFClient::UI::Label valign => 0, align => +1, text => "");
361 $tbl->add (3, 5, $STATWIDS->{st_wspd} = new CFClient::UI::Label valign => 0, align => +1, text => "");
362 387
363 $hb->add (my $tbl2 = new CFClient::UI::Table expand => 1); 388 $hb->add (my $tbl2 = new CFClient::UI::Table expand => 1);
364 389
365 my $row = 0; 390 my $row = 0;
366 my $col = 0; 391 my $col = 0;
389 drain acid pois para deat phys 414 drain acid pois para deat phys
390 blind fear tund elec cold ghit/) 415 blind fear tund elec cold ghit/)
391 { 416 {
392 $tbl2->add ($col, $row, 417 $tbl2->add ($col, $row,
393 $STATWIDS->{"res_$_"} = 418 $STATWIDS->{"res_$_"} =
394 new CFClient::UI::Label text => "0", align => +1, valign => 0 419 new CFClient::UI::Label
420 template => "-100%",
421 align => +1,
422 valign => 0,
423 tooltip => $resist_names{$_}
395 ); 424 );
396 $tbl2->add ($col + 1, $row, new CFClient::UI::Image can_hover => 1, can_events => 1, image => "ui/resist/resist_$_.png", tooltip => $resist_names{$_}); 425 $tbl2->add ($col + 1, $row, new CFClient::UI::Image
426 can_hover => 1,
427 can_events => 1,
428 image => "ui/resist/resist_$_.png",
429 tooltip => $resist_names{$_}
430 );
397 431
398 $row++; 432 $row++;
399 if ($row % 6 == 0) { 433 if ($row % 6 == 0) {
400 $col += 2; 434 $col += 2;
401 $row = 0; 435 $row = 0;
406 update_stats_window ({}); 440 update_stats_window ({});
407 441
408 $tgw 442 $tgw
409} 443}
410 444
445sub formsep {
446 reverse join ",", grep length, split /(...)/, reverse $_[0] * 1
447}
448
411sub update_stats_window { 449sub update_stats_window {
412 my ($stats) = @_; 450 my ($stats) = @_;
413 451
414 # i love text protocols!!! 452 # i love text protocols!!!
415 my $hp = $stats->{1} * 1; 453 my $hp = $stats->{Crossfire::Protocol::CS_STAT_HP} * 1;
416 my $hp_m = $stats->{2} * 1; 454 my $hp_m = $stats->{Crossfire::Protocol::CS_STAT_MAXHP} * 1;
417 my $sp = $stats->{3} * 1; 455 my $sp = $stats->{Crossfire::Protocol::CS_STAT_SP} * 1;
418 my $sp_m = $stats->{4} * 1; 456 my $sp_m = $stats->{Crossfire::Protocol::CS_STAT_MAXSP} * 1;
419 my $fo = $stats->{18} * 1; 457 my $fo = $stats->{Crossfire::Protocol::CS_STAT_FOOD} * 1;
420 my $fo_m = 999; 458 my $fo_m = 999;
421 my $gr = $stats->{23} * 1; 459 my $gr = $stats->{Crossfire::Protocol::CS_STAT_GRACE} * 1;
422 my $gr_m = $stats->{24} * 1; 460 my $gr_m = $stats->{Crossfire::Protocol::CS_STAT_MAXGRACE} * 1;
423 461
424 $GAUGES->{hp} ->set_value ($hp, $hp_m); 462 $GAUGES->{hp} ->set_value ($hp, $hp_m);
425 $GAUGES->{mana} ->set_value ($sp, $sp_m); 463 $GAUGES->{mana} ->set_value ($sp, $sp_m);
426 $GAUGES->{food} ->set_value ($fo, $fo_m); 464 $GAUGES->{food} ->set_value ($fo, $fo_m);
427 $GAUGES->{grace} ->set_value ($gr, $gr_m); 465 $GAUGES->{grace} ->set_value ($gr, $gr_m);
428 $GAUGES->{exp} ->set_text ("XP: " . ($stats->{11} || $stats->{28}) * 1 466 $GAUGES->{exp} ->set_text ("Exp: " . (formsep $stats->{Crossfire::Protocol::CS_STAT_EXP64})
429 ." LVL: " . $stats->{12} * 1); 467 . " (lvl " . ($stats->{Crossfire::Protocol::CS_STAT_LEVEL} * 1) . ")");
430 my $rng = $stats->{20}; 468 my $rng = $stats->{Crossfire::Protocol::CS_STAT_RANGE};
431 $rng =~ s/^Range: //; # thank you so much dear server 469 $rng =~ s/^Range: //; # thank you so much dear server
432 $GAUGES->{range} ->set_text ("Rng: " . $rng); 470 $GAUGES->{range} ->set_text ("Rng: " . $rng);
433 my $title = $stats->{21}; 471 my $title = $stats->{Crossfire::Protocol::CS_STAT_TITLE};
434 $title =~ s/^Player: //; 472 $title =~ s/^Player: //;
435 $STATWIDS->{title} ->set_text ("Title: " . $title); 473 $STATWIDS->{title} ->set_text ("Title: " . $title);
436 474
437 $STATWIDS->{st_str} ->set_text (sprintf "%d", $stats->{5}); 475 $STATWIDS->{st_str} ->set_text (sprintf "%d", $stats->{5});
438 $STATWIDS->{st_dex} ->set_text (sprintf "%d", $stats->{8}); 476 $STATWIDS->{st_dex} ->set_text (sprintf "%d", $stats->{8});
439 $STATWIDS->{st_con} ->set_text (sprintf "%d", $stats->{9}); 477 $STATWIDS->{st_con} ->set_text (sprintf "%d", $stats->{9});
440 $STATWIDS->{st_int} ->set_text (sprintf "%d", $stats->{6}); 478 $STATWIDS->{st_int} ->set_text (sprintf "%d", $stats->{6});
441 $STATWIDS->{st_wis} ->set_text (sprintf "%d", $stats->{7}); 479 $STATWIDS->{st_wis} ->set_text (sprintf "%d", $stats->{7});
442 $STATWIDS->{st_pow} ->set_text (sprintf "%d", $stats->{22}); 480 $STATWIDS->{st_pow} ->set_text (sprintf "%d", $stats->{22});
443 $STATWIDS->{st_cha} ->set_text (sprintf "%d", $stats->{10}); 481 $STATWIDS->{st_cha} ->set_text (sprintf "%d", $stats->{10});
444 $STATWIDS->{st_wc} ->set_text (sprintf "%d", $stats->{13}); 482 $STATWIDS->{st_wc} ->set_text (sprintf "%d", $stats->{13});
445 $STATWIDS->{st_ac} ->set_text (sprintf "%d", $stats->{14}); 483 $STATWIDS->{st_ac} ->set_text (sprintf "%d", $stats->{14});
446 $STATWIDS->{st_dam} ->set_text (sprintf "%d", $stats->{15}); 484 $STATWIDS->{st_dam} ->set_text (sprintf "%d", $stats->{15});
447 $STATWIDS->{st_arm} ->set_text (sprintf "%d", $stats->{16}); 485 $STATWIDS->{st_arm} ->set_text (sprintf "%d", $stats->{16});
448 $STATWIDS->{st_spd} ->set_text (sprintf "%.1f", $stats->{17}); 486 $STATWIDS->{st_spd} ->set_text (sprintf "%.1f", $stats->{Crossfire::Protocol::CS_STAT_SPEED});
449 $STATWIDS->{st_wspd}->set_text (sprintf "%.1f", $stats->{19}); 487 $STATWIDS->{st_wspd}->set_text (sprintf "%.1f", $stats->{Crossfire::Protocol::CS_STAT_WEAP_SP});
450 488
451 my %tbl = ( 489 my %tbl = (
452 phys => 100, 490 phys => 100,
453 magic => 101, 491 magic => 101,
454 fire => 102, 492 fire => 102,
648 user_h => int $::HEIGHT / 5, 686 user_h => int $::HEIGHT / 5,
649 child => (my $vbox = new CFClient::UI::VBox); 687 child => (my $vbox = new CFClient::UI::VBox);
650 688
651 $vbox->add ($LOGVIEW = new CFClient::UI::TextView 689 $vbox->add ($LOGVIEW = new CFClient::UI::TextView
652 expand => 1, 690 expand => 1,
691 font => $FONT_FIXED,
653 fontsize => $::CFG->{log_fontsize}, 692 fontsize => $::CFG->{log_fontsize},
654 ); 693 );
655 694
656 $vbox->add (my $input = new CFClient::UI::Entry 695 $vbox->add (my $input = new CFClient::UI::Entry
657 connect_focus_in => sub { 696 connect_focus_in => sub {
1093 1132
1094 $chunk->play; 1133 $chunk->play;
1095# warn "sound $x,$y,$soundnum,$type\n";#d# 1134# warn "sound $x,$y,$soundnum,$type\n";#d#
1096} 1135}
1097 1136
1137my $LAST_QUERY; # server is stupid, stupid, stupid
1138
1098sub conn::query { 1139sub conn::query {
1099 my ($self, $flags, $prompt) = @_; 1140 my ($self, $flags, $prompt) = @_;
1100 1141
1101 #TODO, display dialog with relevant information 1142 $prompt = $LAST_QUERY unless length $prompt;
1102 warn "<<<<QUERY:$flags:$prompt>>>\n";#d# 1143 $LAST_QUERY = $prompt;
1144
1145 my $dialog = new CFClient::UI::FancyFrame
1146 title => "Query",
1147 child => my $vbox = new CFClient::UI::VBox;
1148
1149 $vbox->add (new CFClient::UI::Label
1150 max_w => $::WIDTH * 0.4,
1151 text => $prompt);
1152
1153 if ($flags & Crossfire::Protocol::CS_QUERY_YESNO) {
1154 $vbox->add (my $hbox = new CFClient::HBox);
1155 $hbox->add (new CFClient::Button
1156 text => "No",
1157 connect_activate => sub {
1158 $self->send ("reply n");
1159 $dialog->destroy;
1160 $MAPWIDGET->focus_in;
1161 }
1162 );
1163 $hbox->add (new CFClient::Button
1164 text => "Yes",
1165 connect_activate => sub {
1166 $self->send ("reply y");
1167 $dialog->destroy;
1168 $MAPWIDGET->focus_in;
1169 },
1170 );
1171
1172 $dialog->focus_in;
1173
1174 } elsif ($flags & Crossfire::Protocol::CS_QUERY_SINGLECHAR) {
1175 $dialog->{tooltip} = "Press a key (click on the entry to make sure it has keyboard focus)";
1176 $vbox->add (my $entry = new CFClient::UI::Entry
1177 connect_changed => sub {
1178 $self->send ("reply $_[1]");
1179 $dialog->destroy;
1180 $MAPWIDGET->focus_in;
1181 },
1182 );
1183
1184 $entry->focus_in;
1185
1186 } else {
1187 $dialog->{tooltip} = "Enter the reply and press return (click on the entry to make sure it has keyboard focus)";
1188
1189 $vbox->add (my $entry = new CFClient::UI::Entry
1190 $flags & Crossfire::Protocol::CS_QUERY_HIDEINPUT ? (hiddenchar => "*") : (),
1191 connect_activate => sub {
1192 $self->send ("reply $_[1]");
1193 $dialog->destroy;
1194 $MAPWIDGET->focus_in;
1195 },
1196 );
1197
1198 $entry->focus_in;
1199 }
1200
1201 $dialog->show;
1103} 1202}
1104 1203
1105sub conn::drawinfo { 1204sub conn::drawinfo {
1106 my ($self, $color, $text) = @_; 1205 my ($self, $color, $text) = @_;
1107 1206
1125} 1224}
1126 1225
1127sub conn::spell_add { 1226sub conn::spell_add {
1128 my ($self, $spell) = @_; 1227 my ($self, $spell) = @_;
1129 1228
1229 # TODO
1230 # create a widget dynamically, using spell face (CF::Protocol downloads them)
1130 $MAPWIDGET->add_command ("invoke $spell->{name}", $spell->{message}, sub { 1231 $MAPWIDGET->add_command ("invoke $spell->{name}", $spell->{message});
1131 });
1132 $MAPWIDGET->add_command ("cast $spell->{name}", $spell->{message}, sub { 1232 $MAPWIDGET->add_command ("cast $spell->{name}", $spell->{message});
1133 });
1134} 1233}
1135 1234
1136sub conn::spell_delete { 1235sub conn::spell_delete {
1137 my ($self, $spell) = @_; 1236 my ($self, $spell) = @_;
1138} 1237}
1139 1238
1140sub conn::addme_success { 1239sub conn::addme_success {
1141 my ($self) = @_; 1240 my ($self) = @_;
1142 1241
1143 for my $skill (values %{$self->{skill_info}}) { 1242 for my $skill (values %{$self->{skill_info}}) {
1144 $MAPWIDGET->add_command ("ready_skill $skill", "", sub { 1243 $MAPWIDGET->add_command ("ready_skill $skill", "Ready the skill '$skill'");
1145 }); 1244 $MAPWIDGET->add_command ("use_skill $skill", "Immediately use the skill '$skill'");
1146 $MAPWIDGET->add_command ("use_skill $skill", "", sub {
1147 });
1148 } 1245 }
1246}
1247
1248sub conn::container_add {
1249 my ($self, $id, $items) = @_;
1250
1251 # 0 floor
1252 # $self-<{player}{tag} => player inv
1253 #use PApp::Util; warn PApp::Util::dumpval $self->{container}{$self->{player}{tag}};
1254}
1255
1256sub conn::container_clear {
1257 my ($self, $id) = @_;
1258# use PApp::Util; warn PApp::Util::dumpval $self->{container}{0};
1149} 1259}
1150 1260
1151%SDL_CB = ( 1261%SDL_CB = (
1152 CFClient::SDL_QUIT => sub { 1262 CFClient::SDL_QUIT => sub {
1153 Event::unloop -1; 1263 Event::unloop -1;
1188 sdl_mode => 0, 1298 sdl_mode => 0,
1189 width => 640, 1299 width => 640,
1190 height => 480, 1300 height => 480,
1191 fullscreen => 0, 1301 fullscreen => 0,
1192 fast => 0, 1302 fast => 0,
1303 map_scale => 0.5,
1193 fow_enable => 1, 1304 fow_enable => 1,
1194 fow_intensity => 0.45, 1305 fow_intensity => 0.45,
1195 fow_smooth => 0, 1306 fow_smooth => 0,
1196 gui_fontsize => 1, 1307 gui_fontsize => 1,
1197 log_fontsize => 1, 1308 log_fontsize => 1,
1219@SDL_MODES or CFClient::fatal "Unable to find a usable video mode\n(hardware accelerated opengl fullscreen)"; 1330@SDL_MODES or CFClient::fatal "Unable to find a usable video mode\n(hardware accelerated opengl fullscreen)";
1220 1331
1221$CFG->{sdl_mode} = 0 if $CFG->{sdl_mode} > @SDL_MODES; 1332$CFG->{sdl_mode} = 0 if $CFG->{sdl_mode} > @SDL_MODES;
1222 1333
1223{ 1334{
1224 my @fonts = map CFClient::find_rcfile $_, qw(uifont.ttf uifontb.ttf uifonti.ttf uifontbi.ttf); 1335 my @fonts = map CFClient::find_rcfile "fonts/$_", qw(
1336 DejaVuSans.ttf
1337 DejaVuSansMono.ttf
1338 DejaVuSans-Bold.ttf
1339 DejaVuSansMono-Bold.ttf
1340 DejaVuSans-Oblique.ttf
1341 DejaVuSansMono-Oblique.ttf
1342 DejaVuSans-BoldOblique.ttf
1343 DejaVuSansMono-BoldOblique.ttf
1344 );
1225 1345
1226 CFClient::add_font $_ for @fonts; 1346 CFClient::add_font $_ for @fonts;
1227 CFClient::set_font $fonts[0]; 1347
1348 $FONT_PROP = new_from_file CFClient::Font $fonts[0];
1349 $FONT_FIXED = new_from_file CFClient::Font $fonts[1];
1350
1351 $FONT_PROP->make_default;
1228} 1352}
1229 1353
1230video_init; 1354video_init;
1231audio_init; 1355audio_init;
1232 1356

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines