#! perl # depends=widget sub settings_page { my ($ns) = @_; my $pl = $ns->pl; my $ws = $ns->{ws_settings} = $ns->new_widgetset; cf::weaken $ws; # I hope not doing range checking is ok here... $ws->template (face => (cf::face::find "res/ui/pl_settings_page"), [ page => { }, title => { text => $pl->ob->is_dragon ? $pl->title : $pl->own_title, can_events => !$pl->ob->is_dragon, }, info => { text => $pl->{user_info} }, info_save => { on_activate => sub { $ws->{title}->get (text => sub { return if $pl->ob->is_dragon; $pl->statusmsg ("new title has been saved"); $pl->own_title ($_[0]); }); $ws->{info}->get (text => sub { $pl->statusmsg ("new character info text has been saved"); $pl->{user_info} = $_[0]; }); }, }, applymode => { value => $pl->unapply , on_changed => sub { $pl->unapply ($_[1]) } }, bowmode => { value => $pl->bowtype , on_changed => sub { $pl->bowtype ($_[1]) } }, petmode => { value => $pl->petmode , on_changed => sub { $pl->petmode ($_[1]) } }, hintmode => { value => $pl->hintmode , on_changed => sub { $pl->hintmode ($_[1]) } }, usekeys => { value => $pl->usekeys , on_changed => sub { $pl->usekeys ($_[1]) } }, ], sub { $ws->find ("pl_notebook")->add ($ws->{page}); }, ); } cf::player->attach ( on_login => sub { my ($pl) = @_; my $ns = $pl->ns; return unless $ns->{can_widget}; settings_page $ns; }, );