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.199 by root, Wed Aug 1 14:27:21 2007 UTC vs.
Revision 1.200 by root, Thu Aug 2 14:35:21 2007 UTC

144our $SETUP_KEYBOARD; 144our $SETUP_KEYBOARD;
145 145
146our $PL_NOTEBOOK; 146our $PL_NOTEBOOK;
147our $PL_WINDOW; 147our $PL_WINDOW;
148 148
149our $MUSIC_PLAYING_WIDGET;
150our $LICENSE_WIDGET;
151
149our $INVENTORY_PAGE; 152our $INVENTORY_PAGE;
150our $STATS_PAGE; 153our $STATS_PAGE;
151our $SKILL_PAGE; 154our $SKILL_PAGE;
152our $SPELL_PAGE; 155our $SPELL_PAGE;
153our $SPELL_LIST; 156our $SPELL_LIST;
267 push @$queue, [Event::time + 0.2, $dx, $dy, $vol]; # delay sound by max. 0.2s 270 push @$queue, [Event::time + 0.2, $dx, $dy, $vol]; # delay sound by max. 0.2s
268 audio_sound_push $face 271 audio_sound_push $face
269 unless @$queue > 1; 272 unless @$queue > 1;
270} 273}
271 274
275sub audio_music_set_meta {
276 my ($meta) = @_;
277
278 $MUSIC_PLAYING_META = $meta;
279 $MUSIC_PLAYING_WIDGET->set_markup (
280 "<b>Name</b>: " . (CFPlus::asxml $meta->{meta}{name}) . "\n"
281 . "<b>Author</b>: " . (CFPlus::asxml $meta->{meta}{author}) . "\n"
282 . "<b>Source</b>: " . (CFPlus::asxml $meta->{meta}{source}) . "\n"
283 . "<b>License</b>: " . (CFPlus::asxml $meta->{meta}{license})
284 );
285}
286
272sub audio_music_update_volume { 287sub audio_music_update_volume {
273 return unless $MUSIC_PLAYING_META; 288 return unless $MUSIC_PLAYING_META;
274 my $volume = $MUSIC_PLAYING_META->{meta}{volume} || 1; 289 my $volume = $MUSIC_PLAYING_META->{meta}{volume} || 1;
275 my $base = $MUSIC_PLAYING_META->{meta}{jingle} ? 1 : $CFG->{bgm_volume}; 290 my $base = $MUSIC_PLAYING_META->{meta}{jingle} ? 1 : $CFG->{bgm_volume};
276 CFPlus::MixMusic::volume $base * $volume * 128; 291 CFPlus::MixMusic::volume $base * $volume * 128;
306 } else { 321 } else {
307 $MUSIC_PLAYER->play (0); 322 $MUSIC_PLAYER->play (0);
308 $MUSIC_START = time; 323 $MUSIC_START = time;
309 } 324 }
310 325
311 delete $MUSIC_PLAYING_META->{stop_time}; 326 delete $meta->{stop_time};
312 delete $MUSIC_PLAYING_META->{stop_pos}; 327 delete $meta->{stop_pos};
313 } 328 }
314} 329}
315 330
316sub audio_music_push { 331sub audio_music_push {
317 return unless $SDL_MIXER; 332 return unless $SDL_MIXER;
351 # sort by stop time, oldest first 366 # sort by stop time, oldest first
352 @MUSIC_HAVE = sort { $a->{stop_time} <=> $b->{stop_time} } @MUSIC_HAVE; 367 @MUSIC_HAVE = sort { $a->{stop_time} <=> $b->{stop_time} } @MUSIC_HAVE;
353 368
354 # if the most recently-played piece played very recently, 369 # if the most recently-played piece played very recently,
355 # resume it, else choose the oldest piece for rotation. 370 # resume it, else choose the oldest piece for rotation.
356 $MUSIC_PLAYING_META = 371 audio_music_set_meta
357 $MUSIC_HAVE[-1]{stop_time} > $NOW - $MUSIC_RESUME 372 $MUSIC_HAVE[-1]{stop_time} > $NOW - $MUSIC_RESUME
358 ? $MUSIC_HAVE[-1] 373 ? $MUSIC_HAVE[-1]
359 : $MUSIC_HAVE[0]; 374 : $MUSIC_HAVE[0];
360 375
361 audio_music_start; 376 audio_music_start;
372sub audio_music_finished { 387sub audio_music_finished {
373 # we compress multiple jingles of the same type 388 # we compress multiple jingles of the same type
374 shift @MUSIC_JINGLE 389 shift @MUSIC_JINGLE
375 while @MUSIC_JINGLE && $MUSIC_PLAYING_META == $MUSIC_JINGLE[0]; 390 while @MUSIC_JINGLE && $MUSIC_PLAYING_META == $MUSIC_JINGLE[0];
376 391
392 $MUSIC_PLAYING_WIDGET->clear;
393
377 undef $MUSIC_PLAYER; 394 undef $MUSIC_PLAYER;
378 undef $MUSIC_PLAYING_META; 395 undef $MUSIC_PLAYING_META;
379 undef $MUSIC_PLAYING_DATA; 396 undef $MUSIC_PLAYING_DATA;
380 397
381 audio_music_push; 398 audio_music_push;
401 418
402sub audio_shutdown { 419sub audio_shutdown {
403 undef $MUSIC_PLAYER; 420 undef $MUSIC_PLAYER;
404 undef $MUSIC_PLAYING_META; 421 undef $MUSIC_PLAYING_META;
405 undef $MUSIC_PLAYING_DATA; 422 undef $MUSIC_PLAYING_DATA;
423
424 audio_music_set_meta { };
406 425
407 $MUSIC_WANT = []; 426 $MUSIC_WANT = [];
408 @MUSIC_JINGLE = (); 427 @MUSIC_JINGLE = ();
409 %AUDIO_PLAY = (); 428 %AUDIO_PLAY = ();
410 %AUDIO_CHUNK = (); 429 %AUDIO_CHUNK = ();
1586 CFPlus::Protocol::set_opencont ($::CONN, 0, "Floor"); 1605 CFPlus::Protocol::set_opencont ($::CONN, 0, "Floor");
1587 1606
1588 $hb 1607 $hb
1589} 1608}
1590 1609
1610sub media_window {
1611 my $vb = new CFPlus::UI::VBox;
1612
1613 $vb->add (new CFPlus::UI::FancyFrame
1614 label => "Currently playing music",
1615 child => ($MUSIC_PLAYING_WIDGET = new CFPlus::UI::Label ellipsise => 0),
1616 );
1617
1618 $vb->add (new CFPlus::UI::FancyFrame
1619 label => "Other media used in this session",
1620 child => ($LICENSE_WIDGET = new CFPlus::UI::TextScroller
1621 expand => 1, fontsize => 0.8, padding_x => 4, padding_y => 4),
1622 );
1623
1624 $vb
1625}
1626
1591sub toggle_player_page { 1627sub toggle_player_page {
1592 my ($widget) = @_; 1628 my ($widget) = @_;
1593 1629
1594 if ($PL_WINDOW->{visible} && $PL_NOTEBOOK->get_current_page == $widget) { 1630 if ($PL_WINDOW->{visible} && $PL_NOTEBOOK->get_current_page == $widget) {
1595 $PL_WINDOW->hide; 1631 $PL_WINDOW->hide;
1632 $ntb->add_tab ( 1668 $ntb->add_tab (
1633 "Inventory (F5)" => $INVENTORY_PAGE = inventory_widget, 1669 "Inventory (F5)" => $INVENTORY_PAGE = inventory_widget,
1634 "Toggles the inventory window, where you can manage your loot (or treasures :). " 1670 "Toggles the inventory window, where you can manage your loot (or treasures :). "
1635 . "You can also hit the <b>Tab</b>-key to show/hide the Inventory." 1671 . "You can also hit the <b>Tab</b>-key to show/hide the Inventory."
1636 ); 1672 );
1637 $ntb->add_tab (Pickup => autopickup_setup, 1673 $ntb->add_tab (Pickup => autopickup_setup,
1638 "Configure autopickup settings, i.e. which items you will pick up automatically when walking (or running) over them."); 1674 "Configure autopickup settings, i.e. which items you will pick up automatically when walking (or running) over them.");
1675
1676 $ntb->add_tab (Media => media_window,
1677 "License, Author and Source info for media sent by the server.");
1639 1678
1640 $ntb->set_current_page ($INVENTORY_PAGE); 1679 $ntb->set_current_page ($INVENTORY_PAGE);
1641 1680
1642 $plwin->add ($ntb); 1681 $plwin->add ($ntb);
1643 $plwin 1682 $plwin

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines