--- deliantra/Deliantra-Client/DC/Protocol.pm 2007/06/26 05:06:01 1.110 +++ deliantra/Deliantra-Client/DC/Protocol.pm 2007/07/10 16:25:16 1.112 @@ -23,7 +23,7 @@ setup_req => { extmap => 1, excmd => 1, - xwidget => 1, + ywidget => 1, %{$arg{setup_req} || {}}, }, ); @@ -67,6 +67,12 @@ } }); + $self->{json_coder} + ->convert_blessed + ->filter_json_single_key_object (__widget_ref__ => sub { + $self->{widget}{$_[0]} + }); + $self->connect_ext (ws_n => sub { my ($arg) = @_; @@ -131,16 +137,12 @@ or return; my $m = $arg->{name}; - my @a = map { - "HASH" eq ref && 1 == (scalar keys %$_) && exists $_->{__widget_ref__} - ? $self->{widget}{$_->{__widget_ref__}} - : $_ - } @{ $arg->{args} || [] }; + my $a = $arg->{args} || []; if (exists $arg->{rid}) { - $self->send_exti_msg (w_r => rid => $arg->{rid}, res => [$w->$m (@a)]); + $self->send_exti_msg (w_r => rid => $arg->{rid}, res => [$w->$m (@$a)]); } else { - $w->$m (@a); + $w->$m (@$a); } }); @@ -1132,6 +1134,8 @@ if $self->{npc_dialog}; $self->SUPER::destroy; + + %$self = (); } package CFPlus::NPCDialog;