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

Comparing deliantra/Deliantra-Client/bin/cfplus (file contents):
Revision 1.15 by root, Sat May 27 19:49:07 2006 UTC vs.
Revision 1.22 by root, Sun May 28 01:37:45 2006 UTC

177 unless $BUTTONBAR->{children}[1]->{state}; 177 unless $BUTTONBAR->{children}[1]->{state};
178} 178}
179 179
180sub client_setup { 180sub client_setup {
181 my $dialog = new CFClient::UI::FancyFrame 181 my $dialog = new CFClient::UI::FancyFrame
182 req_x => 1,
183 req_y => $HEIGHT * (1/8),
184 name => "client_setup",
182 title => "Client Setup", 185 title => "Client Setup",
183 child => (my $vbox = new CFClient::UI::VBox); 186 child => (my $vbox = new CFClient::UI::VBox);
184 $vbox->add (my $table = new CFClient::UI::Table expand => 1, col_expand => [0, 1]); 187 $vbox->add (my $table = new CFClient::UI::Table expand => 1, col_expand => [0, 1]);
185 188
186 $table->add (0, 0, new CFClient::UI::Label valign => 0, align => 1, text => "Video Mode"); 189 $table->add (0, 0, new CFClient::UI::Label valign => 0, align => 1, text => "Video Mode");
201 204
202 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fullscreen"); 205 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fullscreen");
203 $table->add (1, $row++, new CFClient::UI::CheckBox 206 $table->add (1, $row++, new CFClient::UI::CheckBox
204 state => $CFG->{fullscreen}, 207 state => $CFG->{fullscreen},
205 tooltip => "Bring the client into fullscreen mode.", 208 tooltip => "Bring the client into fullscreen mode.",
206 connect_changed => sub { 209 on_changed => sub {
207 my ($self, $value) = @_; 210 my ($self, $value) = @_;
208 $CFG->{fullscreen} = $value; 211 $CFG->{fullscreen} = $value;
209 } 212 }
210 ); 213 );
211 214
212 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fast & Ugly"); 215 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fast & Ugly");
213 $table->add (1, $row++, new CFClient::UI::CheckBox 216 $table->add (1, $row++, new CFClient::UI::CheckBox
214 state => $CFG->{fast}, 217 state => $CFG->{fast},
215 tooltip => "Lower the visual quality considerably to speed up rendering.", 218 tooltip => "Lower the visual quality considerably to speed up rendering.",
216 connect_changed => sub { 219 on_changed => sub {
217 my ($self, $value) = @_; 220 my ($self, $value) = @_;
218 $CFG->{fast} = $value; 221 $CFG->{fast} = $value;
219 } 222 }
220 ); 223 );
221 224
222 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Map Scale"); 225 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Map Scale");
223 $table->add (1, $row++, new CFClient::UI::Slider 226 $table->add (1, $row++, new CFClient::UI::Slider
224 range => [(log $CFG->{map_scale}) / (log 2), -3, 1, 0, 1], 227 range => [(log $CFG->{map_scale}) / (log 2), -3, 1, 0, 1],
225 tooltip => "Enlarge or shrink the displayed map. Changes are instant.", 228 tooltip => "Enlarge or shrink the displayed map. Changes are instant.",
226 connect_changed => sub { 229 on_changed => sub {
227 my ($self, $value) = @_; 230 my ($self, $value) = @_;
228 $CFG->{map_scale} = 2 ** $value; 231 $CFG->{map_scale} = 2 ** $value;
229 } 232 }
230 ); 233 );
231 234
232 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fog of War"); 235 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fog of War");
233 $table->add (1, $row++, new CFClient::UI::CheckBox 236 $table->add (1, $row++, new CFClient::UI::CheckBox
234 state => $CFG->{fow_enable}, 237 state => $CFG->{fow_enable},
235 tooltip => "<b>Fog-of-War</b> marks areas that cannot be seen by the player. Changes are instant.", 238 tooltip => "<b>Fog-of-War</b> marks areas that cannot be seen by the player. Changes are instant.",
236 connect_changed => sub { 239 on_changed => sub {
237 my ($self, $value) = @_; 240 my ($self, $value) = @_;
238 $CFG->{fow_enable} = $value; 241 $CFG->{fow_enable} = $value;
239 } 242 }
240 ); 243 );
241 244
242 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "FoW Intensity"); 245 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "FoW Intensity");
243 $table->add (1, $row++, new CFClient::UI::Slider 246 $table->add (1, $row++, new CFClient::UI::Slider
244 range => [$CFG->{fow_intensity}, 0, 1, 0, 1 / 256], 247 range => [$CFG->{fow_intensity}, 0, 1, 0, 1 / 256],
245 tooltip => "<b>Fog of War Lightness.</b> The higher the intensity, the lighter the Fog-of-War color. Changes are instant.", 248 tooltip => "<b>Fog of War Lightness.</b> The higher the intensity, the lighter the Fog-of-War color. Changes are instant.",
246 connect_changed => sub { 249 on_changed => sub {
247 my ($self, $value) = @_; 250 my ($self, $value) = @_;
248 $CFG->{fow_intensity} = $value; 251 $CFG->{fow_intensity} = $value;
249 } 252 }
250 ); 253 );
251 254
252 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "FoW Smooth"); 255 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "FoW Smooth");
253 $table->add (1, $row++, new CFClient::UI::CheckBox 256 $table->add (1, $row++, new CFClient::UI::CheckBox
254 state => $CFG->{fow_smooth}, 257 state => $CFG->{fow_smooth},
255 tooltip => "Smooth the Fog-of-War a bit to make it more realistic. Changes are instant.", 258 tooltip => "Smooth the Fog-of-War a bit to make it more realistic. Changes are instant.",
256 connect_changed => sub { 259 on_changed => sub {
257 my ($self, $value) = @_; 260 my ($self, $value) = @_;
258 $CFG->{fow_smooth} = $value; 261 $CFG->{fow_smooth} = $value;
259 status "Fog of War smoothing requires OpenGL 1.2 or higher" if $CFClient::OpenGL::GL_VERSION < 1.2; 262 status "Fog of War smoothing requires OpenGL 1.2 or higher" if $CFClient::OpenGL::GL_VERSION < 1.2;
260 } 263 }
261 ); 264 );
262 265
263 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "GUI Fontsize"); 266 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "GUI Fontsize");
264 $table->add (1, $row++, new CFClient::UI::Slider 267 $table->add (1, $row++, new CFClient::UI::Slider
265 range => [$CFG->{gui_fontsize}, 0.5, 2, 0, 0.1], 268 range => [$CFG->{gui_fontsize}, 0.5, 2, 0, 0.1],
266 tooltip => "The base font size used by most GUI elements that do not have their own setting.", 269 tooltip => "The base font size used by most GUI elements that do not have their own setting.",
267 connect_changed => sub { $CFG->{gui_fontsize} = $_[1] }, 270 on_changed => sub { $CFG->{gui_fontsize} = $_[1] },
268 ); 271 );
269 272
270 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Message Fontsize"); 273 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Message Fontsize");
271 $table->add (1, $row++, new CFClient::UI::Slider 274 $table->add (1, $row++, new CFClient::UI::Slider
272 range => [$CFG->{log_fontsize}, 0.5, 2, 0, 0.1], 275 range => [$CFG->{log_fontsize}, 0.5, 2, 0, 0.1],
273 tooltip => "The font size used by the <b>message/server log</b> window only. Changes are instant.", 276 tooltip => "The font size used by the <b>message/server log</b> window only. Changes are instant.",
274 connect_changed => sub { $LOGVIEW->set_fontsize ($CFG->{log_fontsize} = $_[1]) }, 277 on_changed => sub { $LOGVIEW->set_fontsize ($CFG->{log_fontsize} = $_[1]) },
275 ); 278 );
276 279
277 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Stats Fontsize"); 280 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Stats Fontsize");
278 281
279 $table->add (1, $row++, new CFClient::UI::Slider 282 $table->add (1, $row++, new CFClient::UI::Slider
280 range => [$CFG->{stat_fontsize}, 0.5, 2, 0, 0.1], 283 range => [$CFG->{stat_fontsize}, 0.5, 2, 0, 0.1],
281 tooltip => "The font size used by the <b>statistics window</b> only. Changes are instant.", 284 tooltip => "The font size used by the <b>statistics window</b> only. Changes are instant.",
282 connect_changed => sub { 285 on_changed => sub {
283 $CFG->{stat_fontsize} = $_[1]; 286 $CFG->{stat_fontsize} = $_[1];
284 &set_stats_window_fontsize; 287 &set_stats_window_fontsize;
285 } 288 }
286 ); 289 );
287 290
288 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Gauge fontsize"); 291 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Gauge fontsize");
289 $table->add (1, $row++, new CFClient::UI::Slider 292 $table->add (1, $row++, new CFClient::UI::Slider
290 range => [$CFG->{gauge_fontsize}, 0.5, 2, 0, 0.1], 293 range => [$CFG->{gauge_fontsize}, 0.5, 2, 0, 0.1],
291 tooltip => "Adjusts the fontsize of the gauges at the bottom right. Changes are instant.", 294 tooltip => "Adjusts the fontsize of the gauges at the bottom right. Changes are instant.",
292 connect_changed => sub { 295 on_changed => sub {
293 $CFG->{gauge_fontsize} = $_[1]; 296 $CFG->{gauge_fontsize} = $_[1];
294 &set_gauge_window_fontsize; 297 &set_gauge_window_fontsize;
295 } 298 }
296 ); 299 );
297 300
298 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Gauge size"); 301 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Gauge size");
299 $table->add (1, $row++, new CFClient::UI::Slider 302 $table->add (1, $row++, new CFClient::UI::Slider
300 range => [$CFG->{gauge_size}, 0.2, 0.8], 303 range => [$CFG->{gauge_size}, 0.2, 0.8],
301 tooltip => "Adjust the size of the stats gauges at the bottom right. Changes are instant.", 304 tooltip => "Adjust the size of the stats gauges at the bottom right. Changes are instant.",
302 connect_changed => sub { 305 on_changed => sub {
303 $CFG->{gauge_size} = $_[1]; 306 $CFG->{gauge_size} = $_[1];
304 $GAUGES->{win}->set_size ($WIDTH, int $HEIGHT * $CFG->{gauge_size}); 307 $GAUGES->{win}->set_size ($WIDTH, int $HEIGHT * $CFG->{gauge_size});
305 } 308 }
306 ); 309 );
307 310
308 $table->add (1, $row++, new CFClient::UI::Button 311 $table->add (1, $row++, new CFClient::UI::Button
309 expand => 1, align => 0, text => "Apply", 312 expand => 1, align => 0, text => "Apply",
310 tooltip => "Apply the video settings", 313 tooltip => "Apply the video settings",
311 connect_activate => sub { 314 on_activate => sub {
312 video_shutdown (); 315 video_shutdown ();
313 video_init (); 316 video_init ();
314 } 317 }
315 ); 318 );
316 319
317 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Audio Enable"); 320 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Audio Enable");
318 $table->add (1, $row++, new CFClient::UI::CheckBox 321 $table->add (1, $row++, new CFClient::UI::CheckBox
319 state => $CFG->{audio_enable}, 322 state => $CFG->{audio_enable},
320 tooltip => "<b>Master Audio Enable.</b> If enabled, sound effects and music will be played. If disabled, no audio will be used and the soundcard will not be opened.", 323 tooltip => "<b>Master Audio Enable.</b> If enabled, sound effects and music will be played. If disabled, no audio will be used and the soundcard will not be opened.",
321 connect_changed => sub { 324 on_changed => sub {
322 $CFG->{audio_enable} = $_[1]; 325 $CFG->{audio_enable} = $_[1];
323 } 326 }
324 ); 327 );
325# $table->add (0, 9, new CFClient::UI::Label valign => 0, align => 1, text => "Effects Volume"); 328# $table->add (0, 9, new CFClient::UI::Label valign => 0, align => 1, text => "Effects Volume");
326# $table->add (1, 8, new CFClient::UI::Slider range => [$CFG->{effects_volume}, 0, 128, 1], connect_changed => sub { 329# $table->add (1, 8, new CFClient::UI::Slider range => [$CFG->{effects_volume}, 0, 128, 1], on_changed => sub {
327# $CFG->{effects_volume} = $_[1]; 330# $CFG->{effects_volume} = $_[1];
328# }); 331# });
329 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Background Music"); 332 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Background Music");
330 $table->add (1, $row++, my $hbox = new CFClient::UI::HBox); 333 $table->add (1, $row++, my $hbox = new CFClient::UI::HBox);
331 $hbox->add (new CFClient::UI::CheckBox 334 $hbox->add (new CFClient::UI::CheckBox
332 expand => 1, state => $CFG->{bgm_enable}, 335 expand => 1, state => $CFG->{bgm_enable},
333 tooltip => "If enabled, playing of background music is enabled. If disabled, no background music will be played.", 336 tooltip => "If enabled, playing of background music is enabled. If disabled, no background music will be played.",
334 connect_changed => sub { 337 on_changed => sub {
335 $CFG->{bgm_enable} = $_[1]; 338 $CFG->{bgm_enable} = $_[1];
336 } 339 }
337 ); 340 );
338 $hbox->add (new CFClient::UI::Slider 341 $hbox->add (new CFClient::UI::Slider
339 expand => 1, range => [$CFG->{bgm_volume}, 0, 1, 0, 1/128], 342 expand => 1, range => [$CFG->{bgm_volume}, 0, 1, 0, 1/128],
340 tooltip => "The volume of the background music. Changes are instant.", 343 tooltip => "The volume of the background music. Changes are instant.",
341 connect_changed => sub { 344 on_changed => sub {
342 $CFG->{bgm_volume} = $_[1]; 345 $CFG->{bgm_volume} = $_[1];
343 CFClient::MixMusic::volume $_[1] * 128; 346 CFClient::MixMusic::volume $_[1] * 128;
344 } 347 }
345 ); 348 );
346 349
347 $table->add (1, $row++, new CFClient::UI::Button 350 $table->add (1, $row++, new CFClient::UI::Button
348 expand => 1, align => 0, text => "Apply", 351 expand => 1, align => 0, text => "Apply",
349 tooltip => "Apply the audio settings", 352 tooltip => "Apply the audio settings",
350 connect_activate => sub { 353 on_activate => sub {
351 audio_shutdown (); 354 audio_shutdown ();
352 audio_init (); 355 audio_init ();
353 } 356 }
354 ); 357 );
355 358
357 $table->add (1, $row++, my $saycmd = new CFClient::UI::Entry 360 $table->add (1, $row++, my $saycmd = new CFClient::UI::Entry
358 text => $CFG->{say_command}, 361 text => $CFG->{say_command},
359 tooltip => "This is the command that will be used if you write a line in the message window entry or press <b>\"</b> in the map window. " 362 tooltip => "This is the command that will be used if you write a line in the message window entry or press <b>\"</b> in the map window. "
360 . "Usually you want to enter something like 'say' or 'shout' or 'gsay' here. " 363 . "Usually you want to enter something like 'say' or 'shout' or 'gsay' here. "
361 . "But you could also set it to <b>tell <i>playername</i></b> to only chat with that user.", 364 . "But you could also set it to <b>tell <i>playername</i></b> to only chat with that user.",
362 connect_changed => sub { 365 on_changed => sub {
363 my ($self, $value) = @_; 366 my ($self, $value) = @_;
364 $CFG->{say_command} = $value; 367 $CFG->{say_command} = $value;
365 } 368 }
366 ); 369 );
367 370
382 385
383sub make_gauge_window { 386sub make_gauge_window {
384 my $gh = int $HEIGHT * $CFG->{gauge_size}; 387 my $gh = int $HEIGHT * $CFG->{gauge_size};
385 388
386 my $win = new CFClient::UI::Frame ( 389 my $win = new CFClient::UI::Frame (
390 req_x => 0,
387 req_y => -1, 391 req_y => -1,
388 user_w => $WIDTH, 392 def_w => $WIDTH,
389 user_h => $gh, 393 def_h => $gh,
390 ); 394 );
391 395
392 $win->add (my $hbox = new CFClient::UI::HBox 396 $win->add (my $hbox = new CFClient::UI::HBox
393 children => [ 397 children => [
394 (new CFClient::UI::HBox expand => 1), 398 (new CFClient::UI::HBox expand => 1),
431 435
432 $win 436 $win
433} 437}
434 438
435sub make_stats_window { 439sub make_stats_window {
436 my $tgw = new CFClient::UI::FancyFrame title => "Stats"; 440 my $tgw = new CFClient::UI::FancyFrame
441 req_y => $HEIGHT * (2/8),
442 req_x => -1,
443 title => "Stats",
444 name => "stats_window";
437 445
438 $tgw->add (new CFClient::UI::Window child => my $vb = new CFClient::UI::VBox); 446 $tgw->add (new CFClient::UI::Window child => my $vb = new CFClient::UI::VBox);
439 $vb->add ($STATWIDS->{title} = new CFClient::UI::Label valign => 0, align => -1, text => "Title:", expand => 1, 447 $vb->add ($STATWIDS->{title} = new CFClient::UI::Label valign => 0, align => -1, text => "Title:", expand => 1,
440 can_hover => 1, can_events => 1, 448 can_hover => 1, can_events => 1,
441 tooltip => "Your name and title. You can change your title by using the <b>title</b> command, if supported by the server."); 449 tooltip => "Your name and title. You can change your title by using the <b>title</b> command, if supported by the server.");
688 $m = [$users, $host, $uptime, $version, $desc]; 696 $m = [$users, $host, $uptime, $version, $desc];
689 697
690 $y++; 698 $y++;
691 699
692 $table->add (0, $y, new CFClient::UI::VBox children => [ 700 $table->add (0, $y, new CFClient::UI::VBox children => [
693 (new CFClient::UI::Button text => "Use", connect_activate => sub { 701 (new CFClient::UI::Button text => "Use", on_activate => sub {
694 $HOST->set_text ($CFG->{host} = $host); 702 $HOST->set_text ($CFG->{host} = $host);
695 }), 703 }),
696 (new CFClient::UI::Empty expand => 1), 704 (new CFClient::UI::Empty expand => 1),
697 ]); 705 ]);
698 706
704 }); 712 });
705} 713}
706 714
707sub server_setup { 715sub server_setup {
708 my $dialog = new CFClient::UI::FancyFrame 716 my $dialog = new CFClient::UI::FancyFrame
717 x => $WIDTH * (1/3),
718 y => $HEIGHT * (1/8),
719 name => "server_setup",
709 title => "Server Setup", 720 title => "Server Setup",
710 child => (my $vbox = new CFClient::UI::VBox); 721 child => (my $vbox = new CFClient::UI::VBox),
722 on_visibility_change => sub {
723 my ($self, $visible) = @_;
724 $self->center if $visible;
725 },
711 726 ;
727
712 $vbox->add (my $table = new CFClient::UI::Table expand => 1, col_expand => [0, 1]); 728 $vbox->add (my $table = new CFClient::UI::Table expand => 1, col_expand => [0, 1]);
713 $table->add (0, 2, new CFClient::UI::Label valign => 0, align => 1, text => "Host:Port"); 729 $table->add (0, 2, new CFClient::UI::Label valign => 0, align => 1, text => "Host:Port");
714 730
715 { 731 {
716 $table->add (1, 2, my $vbox = new CFClient::UI::VBox); 732 $table->add (1, 2, my $vbox = new CFClient::UI::VBox);
718 $vbox->add ( 734 $vbox->add (
719 my $HOST = new CFClient::UI::Entry 735 my $HOST = new CFClient::UI::Entry
720 expand => 1, 736 expand => 1,
721 text => $CFG->{host}, 737 text => $CFG->{host},
722 tooltip => "The hostname or ip address of the Crossfire(+) server to connect to", 738 tooltip => "The hostname or ip address of the Crossfire(+) server to connect to",
723 connect_changed => sub { 739 on_changed => sub {
724 my ($self, $value) = @_; 740 my ($self, $value) = @_;
725 $CFG->{host} = $value; 741 $CFG->{host} = $value;
726 } 742 }
727 ); 743 );
728 744
731 $vbox->add (new CFClient::UI::Flopper 747 $vbox->add (new CFClient::UI::Flopper
732 expand => 1, 748 expand => 1,
733 text => "Server List", 749 text => "Server List",
734 other => $METASERVER, 750 other => $METASERVER,
735 tooltip => "Show a list of available crossfire servers", 751 tooltip => "Show a list of available crossfire servers",
736 connect_open => sub { 752 on_open => sub {
737 update_metaserver $HOST; 753 update_metaserver $HOST;
738 } 754 }
739 ); 755 );
740 } 756 }
741 757
742 $table->add (0, 4, new CFClient::UI::Label valign => 0, align => 1, text => "Username"); 758 $table->add (0, 4, new CFClient::UI::Label valign => 0, align => 1, text => "Username");
743 $table->add (1, 4, new CFClient::UI::Entry 759 $table->add (1, 4, new CFClient::UI::Entry
744 text => $CFG->{user}, 760 text => $CFG->{user},
745 tooltip => "The name of your character on the server", 761 tooltip => "The name of your character on the server",
746 connect_changed => sub { 762 on_changed => sub {
747 my ($self, $value) = @_; 763 my ($self, $value) = @_;
748 $CFG->{user} = $value; 764 $CFG->{user} = $value;
749 } 765 }
750 ); 766 );
751 767
752 $table->add (0, 5, new CFClient::UI::Label valign => 0, align => 1, text => "Password"); 768 $table->add (0, 5, new CFClient::UI::Label valign => 0, align => 1, text => "Password");
753 $table->add (1, 5, new CFClient::UI::Entry 769 $table->add (1, 5, new CFClient::UI::Entry
754 text => $CFG->{password}, 770 text => $CFG->{password},
755 hidden => 1, 771 hidden => 1,
756 tooltip => "The password for your character", 772 tooltip => "The password for your character",
757 connect_changed => sub { 773 on_changed => sub {
758 my ($self, $value) = @_; 774 my ($self, $value) = @_;
759 $CFG->{password} = $value; 775 $CFG->{password} = $value;
760 } 776 }
761 ); 777 );
762 778
766 range => [$CFG->{mapsize}, 10, 100, 0, 1], 782 range => [$CFG->{mapsize}, 10, 100, 0, 1],
767 tooltip => "This is the size of the portion of the map update the server sends you. " 783 tooltip => "This is the size of the portion of the map update the server sends you. "
768 . "If you set this to a high value you will be able to see further, " 784 . "If you set this to a high value you will be able to see further, "
769 . "but you also increase bandwidth requirements and latency. " 785 . "but you also increase bandwidth requirements and latency. "
770 . "This option is only used once at log-in.", 786 . "This option is only used once at log-in.",
771 connect_changed => sub { 787 on_changed => sub {
772 my ($self, $value) = @_; 788 my ($self, $value) = @_;
773 789
774 $CFG->{mapsize} = $self->{range}[0] = $value = int $value; 790 $CFG->{mapsize} = $self->{range}[0] = $value = int $value;
775 }, 791 },
776 ); 792 );
783 . "This might increase or create lag, but increases the chances " 799 . "This might increase or create lag, but increases the chances "
784 . "of faces being ready for display when you encounter them. " 800 . "of faces being ready for display when you encounter them. "
785 . "It also uses up server bandwidth on every connect, " 801 . "It also uses up server bandwidth on every connect, "
786 . "so only set it if you really need to prefetch images. " 802 . "so only set it if you really need to prefetch images. "
787 . "This option can be set and unset any time.", 803 . "This option can be set and unset any time.",
788 connect_changed => sub { $CFG->{face_prefetch} = $_[1] }, 804 on_changed => sub { $CFG->{face_prefetch} = $_[1] },
789 ); 805 );
790 806
791 $table->add (0, 9, new CFClient::UI::Label valign => 0, align => 1, text => "Output-Count"); 807 $table->add (0, 9, new CFClient::UI::Label valign => 0, align => 1, text => "Output-Count");
792 $table->add (1, 9, new CFClient::UI::Entry 808 $table->add (1, 9, new CFClient::UI::Entry
793 text => $CFG->{output_count}, 809 text => $CFG->{output_count},
794 tooltip => "Should be set to 1 unless you know what you are doing. This option is only used once at log-in.", 810 tooltip => "Should be set to 1 unless you know what you are doing. This option is only used once at log-in.",
795 connect_changed => sub { $CFG->{output_count} = $_[1] }, 811 on_changed => sub { $CFG->{output_count} = $_[1] },
796 ); 812 );
797 813
798 $table->add (0, 10, new CFClient::UI::Label valign => 0, align => 1, text => "Output-Sync"); 814 $table->add (0, 10, new CFClient::UI::Label valign => 0, align => 1, text => "Output-Sync");
799 $table->add (1, 10, new CFClient::UI::Entry 815 $table->add (1, 10, new CFClient::UI::Entry
800 text => $CFG->{output_sync}, 816 text => $CFG->{output_sync},
801 tooltip => "Should be set to 1 unless you know what you are doing. This option is only used once at log-in.", 817 tooltip => "Should be set to 1 unless you know what you are doing. This option is only used once at log-in.",
802 connect_changed => sub { $CFG->{output_sync} = $_[1] }, 818 on_changed => sub { $CFG->{output_sync} = $_[1] },
803 ); 819 );
804 820
805 $table->add (1, 11, $LOGIN_BUTTON = new CFClient::UI::Button 821 $table->add (1, 11, $LOGIN_BUTTON = new CFClient::UI::Button
806 expand => 1, 822 expand => 1,
807 align => 0, 823 align => 0,
808 text => "Login", 824 text => "Login",
809 connect_activate => sub { 825 on_activate => sub {
810 $CONN ? stop_game 826 $CONN ? stop_game
811 : start_game; 827 : start_game;
812 }, 828 },
813 ); 829 );
814 830
815 $dialog 831 $dialog
816} 832}
817 833
818sub message_window { 834sub message_window {
819 my $window = new CFClient::UI::FancyFrame 835 my $window = new CFClient::UI::FancyFrame
836 name => "message_window",
820 title => "Messages", 837 title => "Messages",
821 border_bg => [1, 1, 1, 1], 838 border_bg => [1, 1, 1, 1],
822 bg => [0, 0, 0, 0.75], 839 bg => [0, 0, 0, 0.75],
840 req_x => -1,
841 req_y => 0,
823 user_w => int $::WIDTH / 3, 842 def_w => int $::WIDTH / 3,
824 user_h => int $::HEIGHT / 5, 843 def_h => int $::HEIGHT / 5,
825 child => (my $vbox = new CFClient::UI::VBox); 844 child => (my $vbox = new CFClient::UI::VBox);
826 845
827 $vbox->add ($LOGVIEW); 846 $vbox->add ($LOGVIEW);
828 847
829 $vbox->add (my $input = new CFClient::UI::Entry 848 $vbox->add (my $input = new CFClient::UI::Entry
830 tooltip => "<b>Chat Box</b>. If you enter a text and press return/enter here, the current <i>communication command</i> " 849 tooltip => "<b>Chat Box</b>. If you enter a text and press return/enter here, the current <i>communication command</i> "
831 . "from the client setup will be prepended (e.g. <b>shout</b>, <b>chat</b>...). " 850 . "from the client setup will be prepended (e.g. <b>shout</b>, <b>chat</b>...). "
832 . "If you prepend a slash (/), you will submit a command instead (similar to IRC). " 851 . "If you prepend a slash (/), you will submit a command instead (similar to IRC). "
833 . "A better way to submit commands (and the occasional chat command) is often the map command completer.", 852 . "A better way to submit commands (and the occasional chat command) is often the map command completer.",
834 connect_focus_in => sub { 853 on_focus_in => sub {
835 my ($input, $prev_focus) = @_; 854 my ($input, $prev_focus) = @_;
836 855
837 delete $input->{refocus_map}; 856 delete $input->{refocus_map};
838 857
839 if ($prev_focus == $MAPWIDGET && $input->{auto_activated}) { 858 if ($prev_focus == $MAPWIDGET && $input->{auto_activated}) {
840 $input->{refocus_map} = 1; 859 $input->{refocus_map} = 1;
841 } 860 }
842 delete $input->{auto_activated}; 861 delete $input->{auto_activated};
843 }, 862 },
844 connect_activate => sub { 863 on_activate => sub {
845 my ($input, $text) = @_; 864 my ($input, $text) = @_;
846 $input->set_text (''); 865 $input->set_text ('');
847 866
848 if ($text =~ /^\/(.*)/) { 867 if ($text =~ /^\/(.*)/) {
849 $::CONN->user_send ($1); 868 $::CONN->user_send ($1);
854 if ($input->{refocus_map}) { 873 if ($input->{refocus_map}) {
855 delete $input->{refocus_map}; 874 delete $input->{refocus_map};
856 $MAPWIDGET->focus_in 875 $MAPWIDGET->focus_in
857 } 876 }
858 }, 877 },
859 connect_escape => sub { 878 on_escape => sub {
860 $MAPWIDGET->focus_in 879 $MAPWIDGET->focus_in
861 }, 880 },
862 ); 881 );
863 882
864 $CONSOLE = { 883 $CONSOLE = {
869 $window 888 $window
870} 889}
871 890
872sub open_quit_dialog { 891sub open_quit_dialog {
873 unless ($QUIT_DIALOG) { 892 unless ($QUIT_DIALOG) {
874
875 $QUIT_DIALOG = new CFClient::UI::FancyFrame title => "Really Quit?"; 893 $QUIT_DIALOG = new CFClient::UI::FancyFrame title => "Really Quit?";
876 894
877 $QUIT_DIALOG->add (my $vb = new CFClient::UI::VBox expand => 1); 895 $QUIT_DIALOG->add (my $vb = new CFClient::UI::VBox expand => 1);
878 896
879 $vb->add (new CFClient::UI::Label 897 $vb->add (new CFClient::UI::Label
883 ); 901 );
884 $vb->add (my $hb = new CFClient::UI::HBox expand => 1); 902 $vb->add (my $hb = new CFClient::UI::HBox expand => 1);
885 $hb->add (new CFClient::UI::Button 903 $hb->add (new CFClient::UI::Button
886 text => "Ok", 904 text => "Ok",
887 expand => 1, 905 expand => 1,
888 connect_activate => sub { $QUIT_DIALOG->hide }, 906 on_activate => sub { $QUIT_DIALOG->hide },
889 ); 907 );
890 $hb->add (new CFClient::UI::Button 908 $hb->add (new CFClient::UI::Button
891 text => "Quit anyway", 909 text => "Quit anyway",
892 expand => 1, 910 expand => 1,
893 connect_activate => sub { exit }, 911 on_activate => sub { exit },
894 ); 912 );
913 }
895 914
915 $QUIT_DIALOG->show;
896 $QUIT_DIALOG->show_centered; 916 $QUIT_DIALOG->center;
897 } else {
898 $QUIT_DIALOG->show_centered;
899 }
900} 917}
901 918
902sub make_inventory_window { 919sub make_inventory_window {
903 my $invwin = new CFClient::UI::FancyFrame 920 my $invwin = new CFClient::UI::FancyFrame
904 user_w => $WIDTH * (7/8), user_h => $HEIGHT * (7/8), title => "Inventory"; 921 def_w => $WIDTH * 7/8,
922 def_h => $HEIGHT * 7/8,
923 title => "Inventory",
924 name => "inventory_window",
925 on_visibility_change => sub {
926 my ($self, $visible) = @_;
927 $self->center if $visible;
928 },
929 ;
905 930
906 $invwin->add (my $hb = new CFClient::UI::HBox expand => 1); 931 $invwin->add (my $hb = new CFClient::UI::HBox homogeneous => 1);
907 932
908 $hb->add (my $vb1 = new CFClient::UI::VBox expand => 1); 933 $hb->add (my $vb1 = new CFClient::UI::VBox);
909 $vb1->add (my $lbl = new CFClient::UI::Label align => 0); 934 $vb1->add (new CFClient::UI::Label align => 0, text => "Player");
910 $lbl->set_text ("Player");
911 $vb1->add ($INV = new CFClient::UI::Inventory expand => 1); 935 $vb1->add ($INV = new CFClient::UI::Inventory expand => 1);
912 936
913 $hb->add (my $vb2 = new CFClient::UI::VBox expand => 1); 937 $hb->add (my $vb2 = new CFClient::UI::VBox);
938
914 $vb2->add (my $hb2 = new CFClient::UI::HBox); 939 $vb2->add (my $hb2 = new CFClient::UI::HBox);
940 $hb2->add ($INVR_LBL = new CFClient::UI::Label align => 0, expand => 1, text => "Floor");
915 $hb2->add (new CFClient::UI::Button 941 $hb2->add (new CFClient::UI::Button
916 text => "Close", 942 text => "Close",
917 tooltip => "Close the currently open container (if one is open)", 943 tooltip => "Close the currently open container (if one is open)",
918 connect_activate => sub { 944 on_activate => sub {
919 $CONN->send ("apply $CONN->{open_container}") 945 $CONN->send ("apply $CONN->{open_container}")
920 if $CONN->{open_container} != 0; 946 if $CONN->{open_container} != 0;
921 }, 947 },
922 ); 948 );
923 $hb2->add ($INVR_LBL = new CFClient::UI::Label align => 0);
924 949
925 $INVR_LBL->set_text ("Floor");
926 $vb2->add ($INVR = new CFClient::UI::Inventory expand => 1); 950 $vb2->add ($INVR = new CFClient::UI::Inventory expand => 1);
927 951
928 $invwin 952 $invwin
929} 953}
930 954
931sub make_help_window { 955sub make_help_window {
932 my $win = new CFClient::UI::FancyFrame 956 my $win = new CFClient::UI::FancyFrame
933 user_w => $WIDTH * (7/8), user_h => $HEIGHT * (7/8), title => "Documentation"; 957 def_w => int $WIDTH * 7/8,
958 def_h => int $HEIGHT * 7/8,
959 title => "Documentation";
934 960
935 $win->add (my $vbox = new CFClient::UI::VBox); 961 $win->add (my $vbox = new CFClient::UI::VBox);
936 962
937 $vbox->add (my $buttons = new CFClient::UI::HBox); 963 $vbox->add (my $buttons = new CFClient::UI::HBox);
938 $vbox->add (my $viewer = new CFClient::UI::TextView expand => 1, fontsize => 0.8); 964 $vbox->add (my $viewer = new CFClient::UI::TextView expand => 1, fontsize => 0.8);
945 ) { 971 ) {
946 my ($pod, $label) = @$_; 972 my ($pod, $label) = @$_;
947 973
948 $buttons->add (new CFClient::UI::Button 974 $buttons->add (new CFClient::UI::Button
949 text => $label, 975 text => $label,
950 connect_activate => sub { 976 on_activate => sub {
951 my $parser = new Pod::POM; 977 my $parser = new Pod::POM;
952 my $pom = $parser->parse_file (CFClient::find_rcfile "pod/$pod.pod"); 978 my $pom = $parser->parse_file (CFClient::find_rcfile "pod/$pod.pod");
953 979
954 $viewer->clear; 980 $viewer->clear;
955 981
1063 tooltip => "Toggles the inventory window, where you can manage your loot (or treaures :)."); 1089 tooltip => "Toggles the inventory window, where you can manage your loot (or treaures :).");
1064 1090
1065 $BUTTONBAR->add (new CFClient::UI::Button 1091 $BUTTONBAR->add (new CFClient::UI::Button
1066 text => "Save Config", 1092 text => "Save Config",
1067 tooltip => "Saves the options chosen in the client setting, server settings and the window layout to be restored on later runs.", 1093 tooltip => "Saves the options chosen in the client setting, server settings and the window layout to be restored on later runs.",
1068 connect_activate => sub { 1094 on_activate => sub {
1095 $::CFG->{layout} = CFClient::UI::get_layout;
1069 CFClient::write_cfg "$Crossfire::VARDIR/pclientrc"; 1096 CFClient::write_cfg "$Crossfire::VARDIR/pclientrc";
1070 status "Configuration Saved"; 1097 status "Configuration Saved";
1071 }, 1098 },
1072 ); 1099 );
1073 1100
1074 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Help!", other => make_help_window, 1101 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Help!", other => make_help_window,
1075 tooltip => "View Documentation"); 1102 tooltip => "View Documentation");
1076 1103
1077 $BUTTONBAR->add (new CFClient::UI::Button 1104 $BUTTONBAR->add (new CFClient::UI::Button
1078 text => "Quit", 1105 text => "Quit",
1079 tooltip => "Terminates the program", 1106 tooltip => "Terminates the program",
1080 connect_activate => sub { 1107 on_activate => sub {
1081 if ($CONN) { 1108 if ($CONN) {
1082 open_quit_dialog; 1109 open_quit_dialog;
1083 } else { 1110 } else {
1084 exit; 1111 exit;
1085 } 1112 }
1088 1115
1089 $BUTTONBAR->show; 1116 $BUTTONBAR->show;
1090 1117
1091 $STATUSBOX->add ("Set video mode $WIDTH×$HEIGHT", timeout => 10, fg => [1, 1, 1, 0.5]); 1118 $STATUSBOX->add ("Set video mode $WIDTH×$HEIGHT", timeout => 10, fg => [1, 1, 1, 0.5]);
1092 1119
1093 # delay till geometry is constant
1094 $CFClient::UI::ROOT->on_post_alloc (startup => sub {
1095 $BUTTONBAR->{children}[1]->emit ("activate"); # pop up server setup 1120 $BUTTONBAR->{children}[1]->emit ("activate"); # pop up server setup
1096 my $widget = $GAUGES->{win};
1097 $widget->move (0, $HEIGHT - $widget->{h});#d# to in toplevel
1098 });
1099 force_refresh ();
1100 } 1121 }
1101} 1122}
1102 1123
1103sub video_shutdown { 1124sub video_shutdown {
1104 undef $SDL_ACTIVE; 1125 undef $SDL_ACTIVE;
1317 1338
1318{ 1339{
1319 local $SIG{__DIE__} = sub { CFClient::fatal $_[0] }; 1340 local $SIG{__DIE__} = sub { CFClient::fatal $_[0] };
1320 1341
1321 CFClient::read_cfg "$Crossfire::VARDIR/pclientrc"; 1342 CFClient::read_cfg "$Crossfire::VARDIR/pclientrc";
1343 CFClient::UI::set_layout ($::CFG->{layout});
1322 1344
1323 my %DEF_CFG = ( 1345 my %DEF_CFG = (
1324 sdl_mode => 0, 1346 sdl_mode => 0,
1325 width => 640, 1347 width => 640,
1326 height => 480, 1348 height => 480,

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines