ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/DC/Protocol.pm
(Generate patch)

Comparing deliantra/Deliantra-Client/DC/Protocol.pm (file contents):
Revision 1.109 by root, Mon Jun 25 05:43:37 2007 UTC vs.
Revision 1.111 by root, Mon Jul 2 02:58:51 2007 UTC

65 $self->setup_req (mapsize => "${w}x${h}"); 65 $self->setup_req (mapsize => "${w}x${h}");
66 } 66 }
67 } 67 }
68 }); 68 });
69 69
70 $self->{json_coder}
71 ->convert_blessed
72 ->filter_json_single_key_object (__widget_ref__ => sub {
73 $self->{widget}{$_[0]}
74 });
75
70 $self->connect_ext (ws_n => sub { 76 $self->connect_ext (ws_n => sub {
71 my ($arg) = @_; 77 my ($arg) = @_;
72 78
73 $self->{widgetset}{$arg{id}} = { 79 $self->{widgetset}{$arg{id}} = {
74 w => {}, 80 w => {},
98 1 104 1
99 }; 105 };
100 } 106 }
101 107
102 if (my $widget = eval { 108 if (my $widget = eval {
109 local $SIG{__DIE__};
103 "CFPlus::UI::$arg->{class}"->new ( 110 "CFPlus::UI::$arg->{class}"->new (
104 %$args, 111 %$args,
105 s_ws => $arg->{ws}, 112 s_ws => $arg->{ws},
106 s_id => $arg->{id}, 113 s_id => $arg->{id},
107 ) 114 )
128 135
129 my $w = $self->{widget}{$arg->{id}} 136 my $w = $self->{widget}{$arg->{id}}
130 or return; 137 or return;
131 my $m = $arg->{name}; 138 my $m = $arg->{name};
132 139
133 my @a = map {
134 "HASH" eq ref && 1 == (scalar keys %$_) && exists $_->{__widget_ref__}
135 ? $self->{widget}{$_->{__widget_ref__}}
136 : $_
137 } @{ $arg->{args} || [] }; 140 my $a = $arg->{args} || [];
138 141
139 if (exists $arg->{rid}) { 142 if (exists $arg->{rid}) {
140 $self->send_exti_msg (w_r => rid => $arg->{rid}, res => [$w->$m (@a)]); 143 $self->send_exti_msg (w_r => rid => $arg->{rid}, res => [$w->$m (@$a)]);
141 } else { 144 } else {
142 $w->$m (@a); 145 $w->$m (@$a);
143 } 146 }
144 }); 147 });
145 148
146 $self->connect_ext (w_s => sub { 149 $self->connect_ext (w_s => sub {
147 my ($arg) = @_; 150 my ($arg) = @_;
1129 1132
1130 (delete $self->{npc_dialog})->destroy 1133 (delete $self->{npc_dialog})->destroy
1131 if $self->{npc_dialog}; 1134 if $self->{npc_dialog};
1132 1135
1133 $self->SUPER::destroy; 1136 $self->SUPER::destroy;
1137
1138 %$self = ();
1134} 1139}
1135 1140
1136package CFPlus::NPCDialog; 1141package CFPlus::NPCDialog;
1137 1142
1138our @ISA = 'CFPlus::UI::Toplevel'; 1143our @ISA = 'CFPlus::UI::Toplevel';

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines