--- deliantra/server/ext/widget.ext 2007/06/25 07:40:53 1.2 +++ deliantra/server/ext/widget.ext 2007/07/16 09:07:12 1.6 @@ -16,7 +16,13 @@ on_connect => sub { my ($ns) = @_; + Scalar::Util::weaken (my $weakns = $ns); + $ns->{id} = "a"; + $ns->{json_coder}->filter_json_single_key_object (__widget_ref__ => sub { + # cannot deserialise ATM + undef + }); }, ); @@ -28,6 +34,36 @@ } } +sub demo_map { + my ($ns) = @_; + + my $ws = $ns->{csc} = $ns->new_widgetset; + + my $w = $ws->new (Toplevel => + w => 200, + h => 200, + x => "center", + y => "center", + title => "Worldmap", + has_close_button => 1, + on_delete => sub { + $ws->destroy; + }, + ); + + my $face = cf::face::find "res/worldmap.jpg"; + $ns->send_face ($face); + + $w->add (my $sw = $ws->new (ScrolledWindow => scroll_x => 1, scroll_y => 1)); + $sw->add (my $vb = $ws->new (VBox => expand => 1)); + #$vb->add ($ws->new (Label => text => "lb1")); + $vb->add ($ws->new (Face => expand => 1, size_w => undef, size_h => undef, face => $face)); + $sw->show; + $vb->show; + + $w->show; +} + sub csc_start { my ($ns) = @_; @@ -39,6 +75,10 @@ x => "center", y => "center", title => "Character Creation", + has_close_button => 1, + on_delete => sub { + $ws->destroy; + }, ); $w->add (my $ntb = $ws->new (Notebook => expand => 1)); @@ -48,15 +88,15 @@ $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"], + [0, "Str"], + [1, "Dex"], + [2, "Con"], + [3, "Int"], + [4, "Wis"], + [5, "Pow"], + [6, "Cha"], ) { - my ($x, $label, $description) = @$_; + my ($x, $label) = @$_; $statstable->add ($x, 0, $ws->new (Label => can_hover => 1, can_events => 1, @@ -77,13 +117,14 @@ on_login => sub { my ($pl) = @_; - return unless $cf::CFG{devel}; + #return unless $cf::CFG{devel}; my $ns = $pl->ns; return unless $ns->{can_widget}; - csc_start $ns; + demo_map $ns; + #csc_start $ns; }, ); @@ -148,7 +189,7 @@ if (my $ns = shift->{ns}) { $msg{msgtype} = $type; - $ns->send_packet ("ext " . cf::to_json \%msg); + $ns->send_packet ("ext " . $ns->{json_coder}->encode (\%msg)); } }