--- deliantra/server/ext/widget.ext 2007/06/25 05:43:53 1.1 +++ deliantra/server/ext/widget.ext 2007/06/25 07:40:53 1.2 @@ -20,47 +20,70 @@ }, ); +sub csc_update_stats { + my ($ns) = @_; + + while (my ($k, $v) = each %{ $ns->{csc}{stat} }) { + $v->set_text ($ns->pl->ob->stats->$k); + } +} + +sub csc_start { + my ($ns) = @_; + + my $ws = $ns->{csc} = $ns->new_widgetset; + + my $w = $ws->new (Toplevel => + min_w => 600, + min_h => 400, + x => "center", + y => "center", + title => "Character Creation", + ); + + $w->add (my $ntb = $ws->new (Notebook => expand => 1)); + + $ntb->add (Statistics => (my $stats = $ws->new (Table => expand => 1)), "Basic statistics of your new character"); + + $stats->add (0, 0, (my $statstable = $ws->new ("Table"))); + + for ( + [0, "Str", "Strength"], + [1, "Dex", "Dexterity"], + [2, "Con", "Constitution"], + [3, "Int", "Intelligence"], + [4, "Wis", "Wisdom"], + [5, "Pow", "Power"], + [6, "Cha", "Charisma"], + ) { + my ($x, $label, $description) = @$_; + + $statstable->add ($x, 0, $ws->new (Label => + can_hover => 1, can_events => 1, + align => +1, text => $label, tooltip => "#stat_$label", + )); + $statstable->add ($x, 1, $ws->{stat}{$label} = $ws->new (Label => + can_hover => 1, can_events => 1, + align => +1, template => "88", tooltip => "#stat_$label", + )); + } + + csc_update_stats $ns; + + $w->show; +} + cf::player->attach ( on_login => sub { my ($pl) = @_; - #DEMO CODE - return unless $pl->ob->name eq "schmorp"; + return unless $cf::CFG{devel}; my $ns = $pl->ns; - return unless $ns->{can_widgetx}; - - my $ws = $ns->new_widgetset; - - $ns->async (sub { - Coro::Timer::sleep 20; - warn "undef\n";#d# - undef $ws;# - });#d# - - my $w = $ws->new (Toplevel => - x => "center", - y => "center", - title => "Server Query", - has_close_button => 1, - on_delete => sub { - warn "i was being d-e-l-e-t-e-d\n"; - }, - ); - - $w->add ($ws->new (Entry => - on_changed => sub { - warn "i was changed<@_>\n"; - } - )); - - $ns->async (sub { - warn $w->get ("parent"); - }); - - $w->show; + return unless $ns->{can_widget}; + csc_start $ns; }, );