… | |
… | |
58 | use Compress::LZF; |
58 | use Compress::LZF; |
59 | |
59 | |
60 | use CFPlus; |
60 | use CFPlus; |
61 | use CFPlus::OpenGL (); |
61 | use CFPlus::OpenGL (); |
62 | use CFPlus::Protocol; |
62 | use CFPlus::Protocol; |
|
|
63 | use CFPlus::DB; |
63 | use CFPlus::UI; |
64 | use CFPlus::UI; |
64 | use CFPlus::UI::Inventory; |
65 | use CFPlus::UI::Inventory; |
65 | use CFPlus::UI::SpellList; |
66 | use CFPlus::UI::SpellList; |
66 | use CFPlus::Pod; |
67 | use CFPlus::Pod; |
67 | use CFPlus::MapWidget; |
68 | use CFPlus::MapWidget; |
… | |
… | |
1573 | |
1574 | |
1574 | sub show_tip_of_the_day { |
1575 | sub show_tip_of_the_day { |
1575 | # find all tips |
1576 | # find all tips |
1576 | my @tod = CFPlus::Pod::find tip_of_the_day => "*"; |
1577 | my @tod = CFPlus::Pod::find tip_of_the_day => "*"; |
1577 | |
1578 | |
1578 | my $todindex = $CFPlus::DB_STATE->get ("tip_of_the_day"); |
1579 | CFPlus::DB::get state => "tip_of_the_day", sub { |
|
|
1580 | my ($todindex) = @_; |
1579 | $todindex = 0 if $todindex >= @tod; |
1581 | $todindex = 0 if $todindex >= @tod; |
1580 | $CFPlus::DB_STATE->put (tip_of_the_day => $todindex + 1); |
1582 | CFPlus::DB::put state => tip_of_the_day => $todindex + 1, sub { }; |
1581 | |
1583 | |
1582 | # create dialog |
1584 | # create dialog |
1583 | my $dialog; |
1585 | my $dialog; |
1584 | |
1586 | |
1585 | my $close = sub { |
1587 | my $close = sub { |
1586 | $dialog->destroy; |
1588 | $dialog->destroy; |
|
|
1589 | }; |
|
|
1590 | |
|
|
1591 | $dialog = new CFPlus::UI::Toplevel |
|
|
1592 | x => "center", |
|
|
1593 | y => "center", |
|
|
1594 | z => 3, |
|
|
1595 | name => 'tip_of_the_day', |
|
|
1596 | force_w => int $WIDTH * 4/9, |
|
|
1597 | force_h => int $WIDTH * 2/9, |
|
|
1598 | title => "Tip of the day #" . (1 + $todindex), |
|
|
1599 | child => my $vbox = new CFPlus::UI::VBox, |
|
|
1600 | has_close_button => 1, |
|
|
1601 | on_delete => $close, |
|
|
1602 | ; |
|
|
1603 | |
|
|
1604 | $vbox->add (my $viewer = new CFPlus::UI::TextScroller |
|
|
1605 | expand => 1, fontsize => 0.8, padding_x => 4, padding_y => 4); |
|
|
1606 | $viewer->add_paragraph (CFPlus::Pod::as_paragraphs CFPlus::Pod::section_of $tod[$todindex]); |
|
|
1607 | |
|
|
1608 | $vbox->add (my $table = new CFPlus::UI::Table col_expand => [0, 1]); |
|
|
1609 | |
|
|
1610 | $table->add (0, 0, new CFPlus::UI::Button |
|
|
1611 | text => "Close", |
|
|
1612 | tooltip => "Close the tip of the day window. To never see it again, disable the tip of the day in the <b>Server Setup</b>.", |
|
|
1613 | on_activate => $close, |
|
|
1614 | ); |
|
|
1615 | |
|
|
1616 | $table->add (2, 0, new CFPlus::UI::Button |
|
|
1617 | text => "Next", |
|
|
1618 | tooltip => "Show the next <b>Tip of the day</b>.", |
|
|
1619 | on_activate => sub { |
|
|
1620 | $close->(); |
|
|
1621 | &show_tip_of_the_day; |
|
|
1622 | }, |
|
|
1623 | ); |
|
|
1624 | |
|
|
1625 | $dialog->show; |
1587 | }; |
1626 | }; |
1588 | |
|
|
1589 | $dialog = new CFPlus::UI::Toplevel |
|
|
1590 | x => "center", |
|
|
1591 | y => "center", |
|
|
1592 | z => 3, |
|
|
1593 | name => 'tip_of_the_day', |
|
|
1594 | force_w => int $WIDTH * 4/9, |
|
|
1595 | force_h => int $WIDTH * 2/9, |
|
|
1596 | title => "Tip of the day #" . (1 + $todindex), |
|
|
1597 | child => my $vbox = new CFPlus::UI::VBox, |
|
|
1598 | has_close_button => 1, |
|
|
1599 | on_delete => $close, |
|
|
1600 | ; |
|
|
1601 | |
|
|
1602 | $vbox->add (my $viewer = new CFPlus::UI::TextScroller |
|
|
1603 | expand => 1, fontsize => 0.8, padding_x => 4, padding_y => 4); |
|
|
1604 | $viewer->add_paragraph (CFPlus::Pod::as_paragraphs CFPlus::Pod::section_of $tod[$todindex]); |
|
|
1605 | |
|
|
1606 | $vbox->add (my $table = new CFPlus::UI::Table col_expand => [0, 1]); |
|
|
1607 | |
|
|
1608 | $table->add (0, 0, new CFPlus::UI::Button |
|
|
1609 | text => "Close", |
|
|
1610 | tooltip => "Close the tip of the day window. To never see it again, disable the tip of the day in the <b>Server Setup</b>.", |
|
|
1611 | on_activate => $close, |
|
|
1612 | ); |
|
|
1613 | |
|
|
1614 | $table->add (2, 0, new CFPlus::UI::Button |
|
|
1615 | text => "Next", |
|
|
1616 | tooltip => "Show the next <b>Tip of the day</b>.", |
|
|
1617 | on_activate => sub { |
|
|
1618 | $close->(); |
|
|
1619 | &show_tip_of_the_day; |
|
|
1620 | }, |
|
|
1621 | ); |
|
|
1622 | |
|
|
1623 | $dialog->show; |
|
|
1624 | } |
1627 | } |
1625 | |
1628 | |
1626 | sub sdl_init { |
1629 | sub sdl_init { |
1627 | CFPlus::SDL_Init |
1630 | CFPlus::SDL_Init |
1628 | and die "SDL::Init failed!\n"; |
1631 | and die "SDL::Init failed!\n"; |
… | |
… | |
2082 | |
2085 | |
2083 | $SIG{INT} = $SIG{TERM} = sub { exit }; |
2086 | $SIG{INT} = $SIG{TERM} = sub { exit }; |
2084 | |
2087 | |
2085 | { |
2088 | { |
2086 | CFPlus::read_cfg "$Crossfire::VARDIR/cfplusrc"; |
2089 | CFPlus::read_cfg "$Crossfire::VARDIR/cfplusrc"; |
|
|
2090 | CFPlus::DB::Server::run; |
|
|
2091 | |
2087 | CFPlus::UI::set_layout ($::CFG->{layout}); |
2092 | CFPlus::UI::set_layout ($::CFG->{layout}); |
2088 | |
2093 | |
2089 | my %DEF_CFG = ( |
2094 | my %DEF_CFG = ( |
2090 | sdl_mode => 0, |
2095 | sdl_mode => 0, |
2091 | width => 640, |
2096 | width => 640, |