ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/bin/pclient
(Generate patch)

Comparing deliantra/Deliantra-Client/bin/pclient (file contents):
Revision 1.162 by elmex, Sun Apr 23 00:50:51 2006 UTC vs.
Revision 1.169 by root, Mon Apr 24 02:41:48 2006 UTC

36our @SDL_MODES; 36our @SDL_MODES;
37our $WIDTH; 37our $WIDTH;
38our $HEIGHT; 38our $HEIGHT;
39our $FULLSCREEN; 39our $FULLSCREEN;
40our $FONTSIZE; 40our $FONTSIZE;
41
42our $FONT_PROP;
43our $FONT_FIXED;
41 44
42our $MAP; 45our $MAP;
43our $MAPWIDGET; 46our $MAPWIDGET;
44our $BUTTONBAR; 47our $BUTTONBAR;
45our $LOGVIEW; 48our $LOGVIEW;
120 $mode_slider->emit (changed => $mode_slider->{range}[0]); 123 $mode_slider->emit (changed => $mode_slider->{range}[0]);
121 124
122 my $row = 1; 125 my $row = 1;
123 126
124 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fullscreen"); 127 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fullscreen");
125 $table->add (1, $row++, new CFClient::UI::CheckBox state => $CFG->{fullscreen}, connect_changed => sub { 128 $table->add (1, $row++, new CFClient::UI::CheckBox
129 state => $CFG->{fullscreen},
130 tooltip => "Bring the client into fullscreen mode",
131 connect_changed => sub {
126 my ($self, $value) = @_; 132 my ($self, $value) = @_;
127 $CFG->{fullscreen} = $value; 133 $CFG->{fullscreen} = $value;
134 }
128 }); 135 );
129 136
130 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fast & Ugly"); 137 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fast & Ugly");
131 $table->add (1, $row++, new CFClient::UI::CheckBox state => $CFG->{fast}, connect_changed => sub { 138 $table->add (1, $row++, new CFClient::UI::CheckBox
139 state => $CFG->{fast},
140 tooltip => "Lower the visual quality considerably to speed up rendering.",
141 connect_changed => sub {
132 my ($self, $value) = @_; 142 my ($self, $value) = @_;
133 $CFG->{fast} = $value; 143 $CFG->{fast} = $value;
144 }
134 }); 145 );
146
147 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Map Scale");
148 $table->add (1, $row++, new CFClient::UI::Slider
149 range => [$CFG->{map_scale}, 0.25, 2, 0.05],
150 tooltip => "Enlarge or shrink the displayed map",
151 connect_changed => sub {
152 my ($self, $value) = @_;
153 $CFG->{map_scale} = 0.05 * int $value / 0.05;
154 }
155 );
135 156
136 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fog of War"); 157 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fog of War");
137 $table->add (1, $row++, new CFClient::UI::CheckBox state => $CFG->{fow_enable}, connect_changed => sub { 158 $table->add (1, $row++, new CFClient::UI::CheckBox
159 state => $CFG->{fow_enable},
160 tooltip => "Fog-of-War marks areas that cannot be seen by the player",
161 connect_changed => sub {
138 my ($self, $value) = @_; 162 my ($self, $value) = @_;
139 $CFG->{fow_enable} = $value; 163 $CFG->{fow_enable} = $value;
164 }
140 }); 165 );
141 166
142 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "FoW Intensity"); 167 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "FoW Intensity");
143 $table->add (1, $row++, new CFClient::UI::Slider range => [$CFG->{fow_intensity}, 0, 1 + 0.001, 0.001], connect_changed => sub { 168 $table->add (1, $row++, new CFClient::UI::Slider
169 range => [$CFG->{fow_intensity}, 0, 1 + 0.001, 0.001],
170 tooltip => "The higher the intensity, the lighter the Fog-of-War color",
171 connect_changed => sub {
144 my ($self, $value) = @_; 172 my ($self, $value) = @_;
145 $CFG->{fow_intensity} = $value; 173 $CFG->{fow_intensity} = $value;
174 }
146 }); 175 );
147 176
148 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "FoW Smooth"); 177 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "FoW Smooth");
149 $table->add (1, $row++, new CFClient::UI::CheckBox state => $CFG->{fow_smooth}, connect_changed => sub { 178 $table->add (1, $row++, new CFClient::UI::CheckBox
179 state => $CFG->{fow_smooth},
180 tooltip => "Smooth the Fog-of-War a bit to make it more realistic",
181 connect_changed => sub {
150 my ($self, $value) = @_; 182 my ($self, $value) = @_;
151 $CFG->{fow_smooth} = $value; 183 $CFG->{fow_smooth} = $value;
152 status "Fog of War smoothing requires OpenGL 1.2 or higher" if $CFClient::GL_VERSION < 1.2; 184 status "Fog of War smoothing requires OpenGL 1.2 or higher" if $CFClient::GL_VERSION < 1.2;
185 }
153 }); 186 );
154 187
155 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "GUI Fontsize"); 188 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "GUI Fontsize");
156 $table->add (1, $row++, new CFClient::UI::Slider range => [$CFG->{gui_fontsize}, 0.7, 1.7, 0.1], connect_changed => sub { 189 $table->add (1, $row++, new CFClient::UI::Slider
190 range => [$CFG->{gui_fontsize}, 0.5, 2, 0.1],
191 tooltip => "The font size used by most GUI elements",
192 connect_changed => sub {
157 $CFG->{gui_fontsize} = 0.1 * int $_[1] * 10; 193 $CFG->{gui_fontsize} = 0.1 * int $_[1] * 10;
158# $FONTSIZE = int $HEIGHT / 40 * $CFG->{gui_fontsize}; 194# $FONTSIZE = int $HEIGHT / 40 * $CFG->{gui_fontsize};
195 }
159 }); 196 );
160 197
161 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Server Log Fontsize"); 198 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Server Log Fontsize");
162 $table->add (1, $row++, new CFClient::UI::Slider range => [$CFG->{log_fontsize}, 0.7, 1.7, 0.1], connect_changed => sub { 199 $table->add (1, $row++, new CFClient::UI::Slider
200 range => [$CFG->{log_fontsize}, 0.5, 2, 0.1],
201 tooltip => "The font size used by the server log window only",
202 connect_changed => sub {
163 $LOGVIEW->set_fontsize ($CFG->{log_fontsize} = 0.1 * int $_[1] * 10); 203 $LOGVIEW->set_fontsize ($CFG->{log_fontsize} = 0.1 * int $_[1] * 10);
204 }
164 }); 205 );
165 206
166 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Stats Fontsize"); 207 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Stats Fontsize");
167 $table->add (1, $row++, new CFClient::UI::Slider range => [$CFG->{stat_fontsize}, 0.7, 1.7, 0.1], connect_changed => sub { 208
209 $table->add (1, $row++, new CFClient::UI::Slider
210 range => [$CFG->{stat_fontsize}, 0.5, 2, 0.1],
211 tooltip => "The font size used by the statistics window only",
212 connect_changed => sub {
168 $CFG->{stat_fontsize} = 0.1 * int $_[1] * 10; 213 $CFG->{stat_fontsize} = 0.1 * int $_[1] * 10;
169 &set_stats_window_fontsize; 214 &set_stats_window_fontsize;
215 }
170 }); 216 );
171 217
172 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Gaugesize"); 218 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Gauge size");
173 $table->add (1, $row++, new CFClient::UI::Slider range => [$CFG->{gauge_size}, 0.2, 0.8, 0.02], connect_changed => sub { 219 $table->add (1, $row++, new CFClient::UI::Slider
220 range => [$CFG->{gauge_size}, 0.2, 0.8, 0.02],
221 tooltip => "Adjust the size of the stats gauges at the bottom right",
222 connect_changed => sub {
174 $CFG->{gauge_size} = $_[1]; 223 $CFG->{gauge_size} = $_[1];
175 my $h = int ($HEIGHT * $CFG->{gauge_size}); 224 my $h = int $HEIGHT * $CFG->{gauge_size};
176 $GAUGES->{win}->set_size ($WIDTH, $h); 225 $GAUGES->{win}->set_size ($WIDTH, $h);
177 $GAUGES->{win}->{y} = $HEIGHT - $h; 226 $GAUGES->{win}->move (0, $HEIGHT - $h);
178 $GAUGES->{win}->{x} = 0; 227 }
179 $GAUGES->{win}->update;
180 }); 228 );
181
182 229
183 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Gauge fontsize"); 230 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Gauge fontsize");
184 $table->add (1, $row++, new CFClient::UI::Slider range => [$CFG->{gauge_fontsize}, 0.7, 1.7, 0.1], connect_changed => sub { 231 $table->add (1, $row++, new CFClient::UI::Slider
232 range => [$CFG->{gauge_fontsize}, 0.5, 2.0, 0.1],
233 tooltip => "Adjusts the fontsize of the gauges at the bottom right",
234 connect_changed => sub {
185 $CFG->{gauge_fontsize} = 0.1 * int $_[1] * 10; 235 $CFG->{gauge_fontsize} = 0.1 * int $_[1] * 10;
186 &set_gauge_window_fontsize; 236 &set_gauge_window_fontsize;
187 $GAUGES->{win}->check_size; 237 }
188 $GAUGES->{win}->update;
189 }); 238 );
190 239
191 240 $table->add (1, $row++, new CFClient::UI::Button
192 241 expand => 1, align => 0, text => "Apply",
193 $table->add (1, $row++, new CFClient::UI::Button expand => 1, align => 0, text => "Apply", connect_activate => sub { 242 tooltip => "Apply the video settings",
243 connect_activate => sub {
194 video_shutdown (); 244 video_shutdown ();
195 video_init (); 245 video_init ();
246 }
196 }); 247 );
197 248
198 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Audio Enable"); 249 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Audio Enable");
199 $table->add (1, $row++, new CFClient::UI::CheckBox state => $CFG->{audio_enable}, connect_changed => sub { 250 $table->add (1, $row++, new CFClient::UI::CheckBox
251 state => $CFG->{audio_enable},
252 tooltip => "If enabled, sound effects and music will be played. If disabled, no audio will be used and the soundcard will not be opened.",
253 connect_changed => sub {
200 $CFG->{audio_enable} = $_[1]; 254 $CFG->{audio_enable} = $_[1];
255 }
201 }); 256 );
202# $table->add (0, 9, new CFClient::UI::Label valign => 0, align => 1, text => "Effects Volume"); 257# $table->add (0, 9, new CFClient::UI::Label valign => 0, align => 1, text => "Effects Volume");
203# $table->add (1, 8, new CFClient::UI::Slider range => [$CFG->{effects_volume}, 0, 128, 1], connect_changed => sub { 258# $table->add (1, 8, new CFClient::UI::Slider range => [$CFG->{effects_volume}, 0, 128, 1], connect_changed => sub {
204# $CFG->{effects_volume} = $_[1]; 259# $CFG->{effects_volume} = $_[1];
205# }); 260# });
206 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Background Music"); 261 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Background Music");
207 $table->add (1, $row++, my $hbox = new CFClient::UI::HBox); 262 $table->add (1, $row++, my $hbox = new CFClient::UI::HBox);
208 $hbox->add (new CFClient::UI::CheckBox expand => 1, state => $CFG->{bgm_enable}, connect_changed => sub { 263 $hbox->add (new CFClient::UI::CheckBox
264 expand => 1, state => $CFG->{bgm_enable},
265 tooltip => "Enable background music playing",
266 connect_changed => sub {
209 $CFG->{bgm_enable} = $_[1]; 267 $CFG->{bgm_enable} = $_[1];
268 }
210 }); 269 );
211 $hbox->add (new CFClient::UI::Slider expand => 1, range => [$CFG->{bgm_volume}, 0, 1, 0.1], connect_changed => sub { 270 $hbox->add (new CFClient::UI::Slider
271 expand => 1, range => [$CFG->{bgm_volume}, 0, 1, 0.1],
272 tooltip => "The volume of the background music",
273 connect_changed => sub {
212 $CFG->{bgm_volume} = $_[1]; 274 $CFG->{bgm_volume} = $_[1];
213 CFClient::MixMusic::volume $_[1] * 128; 275 CFClient::MixMusic::volume $_[1] * 128;
276 }
214 }); 277 );
215 278
216 $table->add (1, $row++, new CFClient::UI::Button expand => 1, align => 0, text => "Apply", connect_activate => sub { 279 $table->add (1, $row++, new CFClient::UI::Button
280 expand => 1, align => 0, text => "Apply",
281 tooltip => "Apply the audio settings",
282 connect_activate => sub {
217 audio_shutdown (); 283 audio_shutdown ();
218 audio_init (); 284 audio_init ();
285 }
219 }); 286 );
220 287
221 $dialog 288 $dialog
222} 289}
223 290
224sub set_stats_window_fontsize { 291sub set_stats_window_fontsize {
229 296
230sub set_gauge_window_fontsize { 297sub set_gauge_window_fontsize {
231 for (map { $GAUGES->{$_} } grep { $_ ne 'win' } keys %{$GAUGES}) { 298 for (map { $GAUGES->{$_} } grep { $_ ne 'win' } keys %{$GAUGES}) {
232 $_->set_fontsize ($::CFG->{gauge_fontsize}); 299 $_->set_fontsize ($::CFG->{gauge_fontsize});
233 } 300 }
301
302# local $GAUGES->{win}{parent};#d#
303# use PApp::Util; open D, ">:utf8", "d"; print D PApp::Util::dumpval $GAUGES->{win}; close D;
234} 304}
235 305
236sub make_gauge_window { 306sub make_gauge_window {
237 my $gh = int ($HEIGHT * $CFG->{gauge_size}); 307 my $gh = int ($HEIGHT * $CFG->{gauge_size});
238# my $gw = int ($WIDTH * $CFG->{gauge_w_size}); 308# my $gw = int ($WIDTH * $CFG->{gauge_w_size});
239 309
240 my $win = new CFClient::UI::Frame ( 310 my $win = new CFClient::UI::Frame (
241 y => $HEIGHT - $gh, x => 0, req_w => $WIDTH, req_h => $gh 311 y => $HEIGHT - $gh, x => 0, user_w => $WIDTH, user_h => $gh
242 ); 312 );
243 $win->add (my $vb = new CFClient::UI::VBox); 313 $win->add (my $vb = new CFClient::UI::VBox);
244 314
245 $vb->add (my $hbg = new CFClient::UI::HBox expand => 1); 315 $vb->add (my $hbg = new CFClient::UI::HBox expand => 1);
246
247 316
248 $hbg->add (new CFClient::UI::Empty expand => 1); 317 $hbg->add (new CFClient::UI::Empty expand => 1);
249 $hbg->add (my $hb = new CFClient::UI::HBox); 318 $hbg->add (my $hb = new CFClient::UI::HBox);
250 $hb->add (my $hg = new CFClient::UI::Gauge type => 'hp'); 319 $hb->add (my $hg = new CFClient::UI::Gauge type => 'hp', tooltip => "Health points");
251 $hb->add (my $mg = new CFClient::UI::Gauge type => 'mana'); 320 $hb->add (my $mg = new CFClient::UI::Gauge type => 'mana', tooltip => "Spellpoints");
252 $hb->add (my $gg = new CFClient::UI::Gauge type => 'grace'); 321 $hb->add (my $gg = new CFClient::UI::Gauge type => 'grace', tooltip => "Grace");
253 $hb->add (my $fg = new CFClient::UI::Gauge type => 'food'); 322 $hb->add (my $fg = new CFClient::UI::Gauge type => 'food', tooltip => "Food");
254 323
255 $vb->add (my $exp = new CFClient::UI::Label valign => 0, align => 1, text => "XP:"); 324 $vb->add (my $exp = new CFClient::UI::Label valign => 0, align => 1, text => "XP: 0 LVL: 0");
256# $vb->add (my $lvl = new CFClient::UI::Label valign => 0, align => 1, text => "Lvl:");
257 $vb->add (my $rng = new CFClient::UI::Label valign => 0, align => 1, text => "Rng:"); 325 $vb->add (my $rng = new CFClient::UI::Label valign => 0, align => 1, text => "Rng:");
258 326
259
260 $GAUGES = { 327 $GAUGES = {
261 exp => $exp,# lvl => $lvl,
262 win => $win, range => $rng, 328 exp => $exp, win => $win, range => $rng,
263 food => $fg, mana => $mg, hp => $hg, grace => $gg 329 food => $fg, mana => $mg, hp => $hg, grace => $gg
264 }; 330 };
331
332 &set_gauge_window_fontsize;
333
265 $win 334 $win
266} 335}
267 336
268sub make_stats_window { 337sub make_stats_window {
269 my $tgw = new CFClient::UI::FancyFrame (x => $WIDTH * 2/5, y => 0, title => "Stats"); 338 my $tgw = new CFClient::UI::FancyFrame (x => $WIDTH * 2/5, y => 0, title => "Stats");
270 339
271 $tgw->add (my $vb = new CFClient::UI::VBox); 340 $tgw->add (my $vb = new CFClient::UI::VBox);
272 $vb->add (my $uhb = new CFClient::UI::HBox);
273 $uhb->add ($STATWIDS->{title} = new CFClient::UI::Label valign => 0, align => -1, text => "Title:", expand => 1); 341 $vb->add ($STATWIDS->{title} = new CFClient::UI::Label valign => 0, align => -1, text => "Title:", expand => 1);
274 $uhb->add ($STATWIDS->{map} = new CFClient::UI::Label valign => 0, align => -1, text => "Map:", expand => 1); 342 $vb->add ($STATWIDS->{map} = new CFClient::UI::Label valign => 0, align => -1, text => "Map:", expand => 1);
275 343
276 $vb->add (my $hb = new CFClient::UI::HBox expand => 1); 344 $vb->add (my $hb = new CFClient::UI::HBox expand => 1);
277 345
278 $hb->add (my $tbl = new CFClient::UI::Table expand => 1); 346 $hb->add (my $tbl = new CFClient::UI::Table expand => 1);
279 347
348 $tbl->add (0, 0, $STATWIDS->{st_str} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
349 $tbl->add (0, 1, $STATWIDS->{st_dex} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
350 $tbl->add (0, 2, $STATWIDS->{st_con} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
351 $tbl->add (0, 3, $STATWIDS->{st_int} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
352 $tbl->add (0, 4, $STATWIDS->{st_wis} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
353 $tbl->add (0, 5, $STATWIDS->{st_pow} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
354 $tbl->add (0, 6, $STATWIDS->{st_cha} = new CFClient::UI::Label valign => 0, align => +1, template => "30");
355
280 $tbl->add (0, 0, $STATWIDS->{st_str_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Str"); 356 $tbl->add (1, 0, $STATWIDS->{st_str_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Str");
281 $tbl->add (0, 1, $STATWIDS->{st_dex_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Dex"); 357 $tbl->add (1, 1, $STATWIDS->{st_dex_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Dex");
282 $tbl->add (0, 2, $STATWIDS->{st_con_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Con"); 358 $tbl->add (1, 2, $STATWIDS->{st_con_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Con");
283 $tbl->add (0, 3, $STATWIDS->{st_int_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Int"); 359 $tbl->add (1, 3, $STATWIDS->{st_int_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Int");
284 $tbl->add (0, 4, $STATWIDS->{st_wis_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Wis"); 360 $tbl->add (1, 4, $STATWIDS->{st_wis_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Wis");
285 $tbl->add (0, 5, $STATWIDS->{st_pow_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Pow"); 361 $tbl->add (1, 5, $STATWIDS->{st_pow_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Pow");
286 $tbl->add (0, 6, $STATWIDS->{st_cha_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Cha"); 362 $tbl->add (1, 6, $STATWIDS->{st_cha_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Cha");
287 363
288 $tbl->add (1, 0, $STATWIDS->{st_str} = new CFClient::UI::Label valign => 0, align => +1, text => ""); 364 $tbl->add (2, 0, $STATWIDS->{st_wc} = new CFClient::UI::Label valign => 0, align => +1, template => "-120");
365 $tbl->add (2, 1, $STATWIDS->{st_ac} = new CFClient::UI::Label valign => 0, align => +1, template => "-120");
289 $tbl->add (1, 1, $STATWIDS->{st_dex} = new CFClient::UI::Label valign => 0, align => +1, text => ""); 366 $tbl->add (2, 2, $STATWIDS->{st_dam} = new CFClient::UI::Label valign => 0, align => +1, template => "120");
290 $tbl->add (1, 2, $STATWIDS->{st_con} = new CFClient::UI::Label valign => 0, align => +1, text => "");
291 $tbl->add (1, 3, $STATWIDS->{st_int} = new CFClient::UI::Label valign => 0, align => +1, text => ""); 367 $tbl->add (2, 3, $STATWIDS->{st_arm} = new CFClient::UI::Label valign => 0, align => +1, template => "120");
368 $tbl->add (2, 4, $STATWIDS->{st_spd} = new CFClient::UI::Label valign => 0, align => +1, template => "10.54");
292 $tbl->add (1, 4, $STATWIDS->{st_wis} = new CFClient::UI::Label valign => 0, align => +1, text => ""); 369 $tbl->add (2, 5, $STATWIDS->{st_wspd} = new CFClient::UI::Label valign => 0, align => +1, template => "9");
293 $tbl->add (1, 5, $STATWIDS->{st_pow} = new CFClient::UI::Label valign => 0, align => +1, text => "");
294 $tbl->add (1, 6, $STATWIDS->{st_cha} = new CFClient::UI::Label valign => 0, align => +1, text => "");
295 370
296 $tbl->add (2, 0, $STATWIDS->{st_wc_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Wc"); 371 $tbl->add (3, 0, $STATWIDS->{st_wc_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Wc");
297 $tbl->add (2, 1, $STATWIDS->{st_ac_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Ac"); 372 $tbl->add (3, 1, $STATWIDS->{st_ac_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Ac");
298 $tbl->add (2, 2, $STATWIDS->{st_dam_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Dam"); 373 $tbl->add (3, 2, $STATWIDS->{st_dam_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Dam");
299 $tbl->add (2, 3, $STATWIDS->{st_arm_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Arm"); 374 $tbl->add (3, 3, $STATWIDS->{st_arm_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Arm");
300 $tbl->add (2, 4, $STATWIDS->{st_spd_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "Sp"); 375 $tbl->add (3, 4, $STATWIDS->{st_spd_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "Sp");
301 $tbl->add (2, 5, $STATWIDS->{st_wspd_lbl} = new CFClient::UI::Label valign => 0, align => +1, text => "WSp"); 376 $tbl->add (3, 5, $STATWIDS->{st_wspd_lbl} = new CFClient::UI::Label valign => 0, align => -1, text => "WSp");
302
303 $tbl->add (3, 0, $STATWIDS->{st_wc} = new CFClient::UI::Label valign => 0, align => +1, text => "");
304 $tbl->add (3, 1, $STATWIDS->{st_ac} = new CFClient::UI::Label valign => 0, align => +1, text => "");
305 $tbl->add (3, 2, $STATWIDS->{st_dam} = new CFClient::UI::Label valign => 0, align => +1, text => "");
306 $tbl->add (3, 3, $STATWIDS->{st_arm} = new CFClient::UI::Label valign => 0, align => +1, text => "");
307 $tbl->add (3, 4, $STATWIDS->{st_spd} = new CFClient::UI::Label valign => 0, align => +1, text => "");
308 $tbl->add (3, 5, $STATWIDS->{st_wspd} = new CFClient::UI::Label valign => 0, align => +1, text => "");
309 377
310 $hb->add (my $tbl2 = new CFClient::UI::Table expand => 1); 378 $hb->add (my $tbl2 = new CFClient::UI::Table expand => 1);
311 379
312 my $row = 0; 380 my $row = 0;
313 my $col = 0; 381 my $col = 0;
314 382
383 my %resist_names = (
384 slow => "Slow",
385 holyw => "Holy Word",
386 conf => "Confusion",
387 fire => "Fire",
388 depl => "Depletion",
389 magic => "Magic",
390 drain => "Draining",
391 acid => "Acid",
392 pois => "Poison",
393 para => "Paralysation",
394 deat => "Death",
395 phys => "Physical",
396 blind => "Blind",
397 fear => "Fear",
398 tund => "Turn undead",
399 elec => "Electricity",
400 cold => "Cold",
401 ghit => "Ghost hit",
402 );
315 for (qw/slow holyw conf fire depl magic 403 for (qw/slow holyw conf fire depl magic
316 drain acid pois para deat phys 404 drain acid pois para deat phys
317 blind fear tund elec cold ghit/) 405 blind fear tund elec cold ghit/)
318 { 406 {
319 $tbl2->add ($col , $row, 407 $tbl2->add ($col, $row,
320 $STATWIDS->{"res_$_"} = 408 $STATWIDS->{"res_$_"} =
321 new CFClient::UI::Label text => "0", align => +1, valign => 0 409 new CFClient::UI::Label
410 template => "-100%",
411 align => +1,
412 valign => 0,
413 tooltip => $resist_names{$_}
322 ); 414 );
323 $tbl2->add ($col + 1, $row, new CFClient::UI::Image image => "ui/resist/resist_$_.png"); 415 $tbl2->add ($col + 1, $row, new CFClient::UI::Image
416 can_hover => 1,
417 can_events => 1,
418 image => "ui/resist/resist_$_.png",
419 tooltip => $resist_names{$_}
420 );
324 421
325 $row++; 422 $row++;
326 if ($row % 6 == 0) { 423 if ($row % 6 == 0) {
327 $col += 2; 424 $col += 2;
328 $row = 0; 425 $row = 0;
333 update_stats_window ({}); 430 update_stats_window ({});
334 431
335 $tgw 432 $tgw
336} 433}
337 434
435sub formsep {
436 reverse join ",", grep length, split /(...)/, reverse $_[0] * 1
437}
438
338sub update_stats_window { 439sub update_stats_window {
339 my ($stats) = @_; 440 my ($stats) = @_;
340 441
341 # i love text protocols!!! 442 # i love text protocols!!!
342 my $hp = $stats->{1} * 1; 443 my $hp = $stats->{Crossfire::Protocol::CS_STAT_HP} * 1;
343 my $hp_m = $stats->{2} * 1; 444 my $hp_m = $stats->{Crossfire::Protocol::CS_STAT_MAXHP} * 1;
344 my $sp = $stats->{3} * 1; 445 my $sp = $stats->{Crossfire::Protocol::CS_STAT_SP} * 1;
345 my $sp_m = $stats->{4} * 1; 446 my $sp_m = $stats->{Crossfire::Protocol::CS_STAT_MAXSP} * 1;
346 my $fo = $stats->{18} * 1; 447 my $fo = $stats->{Crossfire::Protocol::CS_STAT_FOOD} * 1;
347 my $fo_m = 999; 448 my $fo_m = 999;
348 my $gr = $stats->{23} * 1; 449 my $gr = $stats->{Crossfire::Protocol::CS_STAT_GRACE} * 1;
349 my $gr_m = $stats->{24} * 1; 450 my $gr_m = $stats->{Crossfire::Protocol::CS_STAT_MAXGRACE} * 1;
350 451
351 $GAUGES->{hp} ->set_value ($hp, $hp_m); 452 $GAUGES->{hp} ->set_value ($hp, $hp_m);
352 $GAUGES->{mana} ->set_value ($sp, $sp_m); 453 $GAUGES->{mana} ->set_value ($sp, $sp_m);
353 $GAUGES->{food} ->set_value ($fo, $fo_m); 454 $GAUGES->{food} ->set_value ($fo, $fo_m);
354 $GAUGES->{grace} ->set_value ($gr, $gr_m); 455 $GAUGES->{grace} ->set_value ($gr, $gr_m);
355 $GAUGES->{exp} ->set_text ("XP: " . ($stats->{11} || $stats->{28}) * 1 456 $GAUGES->{exp} ->set_text ("Exp: " . (formsep $stats->{Crossfire::Protocol::CS_STAT_EXP64})
356 ." LVL: " . $stats->{12} * 1); 457 . " (lvl " . ($stats->{Crossfire::Protocol::CS_STAT_LEVEL} * 1) . ")");
357 my $rng = $stats->{20}; 458 my $rng = $stats->{Crossfire::Protocol::CS_STAT_RANGE};
358 $rng =~ s/^Range: //; # thank you so much dear server 459 $rng =~ s/^Range: //; # thank you so much dear server
359 $GAUGES->{range} ->set_text ("Rng: " . $rng); 460 $GAUGES->{range} ->set_text ("Rng: " . $rng);
360# $GAUGES->{lvl} ->set_text ("LVL: " . $stats->{12}); 461 my $title = $stats->{Crossfire::Protocol::CS_STAT_TITLE};
462 $title =~ s/^Player: //;
361 $STATWIDS->{title} ->set_text ("Title: " . $stats->{21}); 463 $STATWIDS->{title} ->set_text ("Title: " . $title);
362 464
363 if (0) { # this code can vanish, just wanted to preserver it for a checkin
364 $STATWIDS->{st_str} ->set_text (sprintf "S%d", $stats->{5});
365 $STATWIDS->{st_dex} ->set_text (sprintf "D%d", $stats->{8});
366 $STATWIDS->{st_con} ->set_text (sprintf "Co%d", $stats->{9});
367 $STATWIDS->{st_int} ->set_text (sprintf "I%d", $stats->{6});
368 $STATWIDS->{st_wis} ->set_text (sprintf "W%d", $stats->{7});
369 $STATWIDS->{st_pow} ->set_text (sprintf "P%d", $stats->{22});
370 $STATWIDS->{st_cha} ->set_text (sprintf "Ch%d", $stats->{10});
371 $STATWIDS->{st_wc} ->set_text (sprintf "Wc%d", $stats->{13});
372 $STATWIDS->{st_ac} ->set_text (sprintf "Ac%d", $stats->{14});
373 $STATWIDS->{st_dam} ->set_text (sprintf "Dam%d", $stats->{15});
374 $STATWIDS->{st_arm} ->set_text (sprintf "Arm%d", $stats->{16});
375 $STATWIDS->{st_spd} ->set_text (sprintf "Sp%.1f", $stats->{17});
376 $STATWIDS->{st_wspd}->set_text (sprintf "WSp%.1f", $stats->{19});
377 } else {
378 $STATWIDS->{st_str} ->set_text (sprintf "%d", $stats->{5}); 465 $STATWIDS->{st_str} ->set_text (sprintf "%d", $stats->{5});
379 $STATWIDS->{st_dex} ->set_text (sprintf "%d", $stats->{8}); 466 $STATWIDS->{st_dex} ->set_text (sprintf "%d", $stats->{8});
380 $STATWIDS->{st_con} ->set_text (sprintf "%d", $stats->{9}); 467 $STATWIDS->{st_con} ->set_text (sprintf "%d", $stats->{9});
381 $STATWIDS->{st_int} ->set_text (sprintf "%d", $stats->{6}); 468 $STATWIDS->{st_int} ->set_text (sprintf "%d", $stats->{6});
382 $STATWIDS->{st_wis} ->set_text (sprintf "%d", $stats->{7}); 469 $STATWIDS->{st_wis} ->set_text (sprintf "%d", $stats->{7});
383 $STATWIDS->{st_pow} ->set_text (sprintf "%d", $stats->{22}); 470 $STATWIDS->{st_pow} ->set_text (sprintf "%d", $stats->{22});
384 $STATWIDS->{st_cha} ->set_text (sprintf "%d", $stats->{10}); 471 $STATWIDS->{st_cha} ->set_text (sprintf "%d", $stats->{10});
385 $STATWIDS->{st_wc} ->set_text (sprintf "%d", $stats->{13}); 472 $STATWIDS->{st_wc} ->set_text (sprintf "%d", $stats->{13});
386 $STATWIDS->{st_ac} ->set_text (sprintf "%d", $stats->{14}); 473 $STATWIDS->{st_ac} ->set_text (sprintf "%d", $stats->{14});
387 $STATWIDS->{st_dam} ->set_text (sprintf "%d", $stats->{15}); 474 $STATWIDS->{st_dam} ->set_text (sprintf "%d", $stats->{15});
388 $STATWIDS->{st_arm} ->set_text (sprintf "%d", $stats->{16}); 475 $STATWIDS->{st_arm} ->set_text (sprintf "%d", $stats->{16});
389 $STATWIDS->{st_spd} ->set_text (sprintf "%.1f", $stats->{17}); 476 $STATWIDS->{st_spd} ->set_text (sprintf "%.1f", $stats->{Crossfire::Protocol::CS_STAT_SPEED});
390 $STATWIDS->{st_wspd}->set_text (sprintf "%.1f", $stats->{19}); 477 $STATWIDS->{st_wspd}->set_text (sprintf "%.1f", $stats->{Crossfire::Protocol::CS_STAT_WEAP_SP});
391 }
392 478
393 my %tbl = ( 479 my %tbl = (
394 phys => 100, 480 phys => 100,
395 magic => 101, 481 magic => 101,
396 fire => 102, 482 fire => 102,
403 pois => 109, 489 pois => 109,
404 slow => 110, 490 slow => 110,
405 para => 111, 491 para => 111,
406 tund => 112, 492 tund => 112,
407 fear => 113, 493 fear => 113,
494 depl => 113,
408 deat => 115, 495 deat => 115,
409 holyw => 116, 496 holyw => 116,
410 blind => 117 497 blind => 117
411 ); 498 );
412 499
501 $table->add (0, 2, new CFClient::UI::Label valign => 0, align => 1, text => "Host:Port"); 588 $table->add (0, 2, new CFClient::UI::Label valign => 0, align => 1, text => "Host:Port");
502 589
503 { 590 {
504 $table->add (1, 2, my $vbox = new CFClient::UI::VBox); 591 $table->add (1, 2, my $vbox = new CFClient::UI::VBox);
505 592
506 $vbox->add (my $HOST = new CFClient::UI::Entry expand => 1, text => $CFG->{host}, connect_changed => sub { 593 $vbox->add (
594 my $HOST = new CFClient::UI::Entry
595 expand => 1,
596 text => $CFG->{host},
597 tooltip => "The hostname or ip address of the Crossfire(+) server to connect to",
598 connect_changed => sub {
599 my ($self, $value) = @_;
600 $CFG->{host} = $value;
601 }
602 );
603
604 $METASERVER = metaserver_dialog;
605
606 $vbox->add (new CFClient::UI::Flopper
607 expand => 1,
608 text => "Metaserver",
609 other => $METASERVER,
610 tooltip => "Show a list of avaible crossfire servers",
611 connect_open => sub {
612 update_metaserver $HOST;
613 }
614 );
615 }
616
617 $table->add (0, 4, new CFClient::UI::Label valign => 0, align => 1, text => "Username");
618 $table->add (1, 4, new CFClient::UI::Entry
619 text => $CFG->{user},
620 tooltip => "The name of your character on the server",
621 connect_changed => sub {
507 my ($self, $value) = @_; 622 my ($self, $value) = @_;
508 $CFG->{host} = $value;
509 });
510
511 $METASERVER = metaserver_dialog;
512
513 $vbox->add (new CFClient::UI::Flopper expand => 1, text => "Metaserver", other => $METASERVER, connect_open => sub {
514 update_metaserver $HOST;
515 });
516 }
517
518 $table->add (0, 4, new CFClient::UI::Label valign => 0, align => 1, text => "Username");
519 $table->add (1, 4, new CFClient::UI::Entry text => $CFG->{user}, connect_changed => sub {
520 my ($self, $value) = @_;
521 $CFG->{user} = $value; 623 $CFG->{user} = $value;
624 }
522 }); 625 );
523 626
524 $table->add (0, 5, new CFClient::UI::Label valign => 0, align => 1, text => "Password"); 627 $table->add (0, 5, new CFClient::UI::Label valign => 0, align => 1, text => "Password");
525 $table->add (1, 5, new CFClient::UI::Entry text => $CFG->{password}, hidden => 1, connect_changed => sub { 628 $table->add (1, 5, new CFClient::UI::Entry
629 text => $CFG->{password},
630 hidden => 1,
631 tooltip => "The password for your character",
632 connect_changed => sub {
526 my ($self, $value) = @_; 633 my ($self, $value) = @_;
527 $CFG->{password} = $value; 634 $CFG->{password} = $value;
635 }
528 }); 636 );
529 637
530 $table->add (0, 6, new CFClient::UI::Label valign => 0, align => 1, text => "Def. say cmd"); 638 $table->add (0, 6, new CFClient::UI::Label valign => 0, align => 1, text => "Def. say cmd");
531 $table->add (1, 6, my $saycmd = new CFClient::UI::Entry text => $CFG->{say_command}, connect_changed => sub { 639 $table->add (1, 6, my $saycmd = new CFClient::UI::Entry
640 text => $CFG->{say_command},
641 tooltip => "This is the command that will be used if you write a line in the message window entry. "
642 ."Usually you want to enter something like 'say' or 'shout' or 'gsay' here. "
643 ."But you could also set it to 'tell <playername>' to only chat with that user.",
644 connect_changed => sub {
532 my ($self, $value) = @_; 645 my ($self, $value) = @_;
533 $CFG->{say_command} = $value; 646 $CFG->{say_command} = $value;
647 }
534 }); 648 );
535 649
536 $table->add (0, 7, new CFClient::UI::Label valign => 0, align => 1, text => "Map Size"); 650 $table->add (0, 7, new CFClient::UI::Label valign => 0, align => 1, text => "Map Size");
537 $table->add (1, 7, new CFClient::UI::Slider 651 $table->add (1, 7, new CFClient::UI::Slider
538 req_w => 100, 652 req_w => 100,
539 range => [$CFG->{mapsize}, 10, 100 + 1, 1], 653 range => [$CFG->{mapsize}, 10, 100 + 1, 1],
654 tooltip => "This is the size of the portion of the map update the server sends you. "
655 ."If you set this to a high value you will be able to see further for example.",
540 connect_changed => sub { 656 connect_changed => sub {
541 my ($self, $value) = @_; 657 my ($self, $value) = @_;
542 658
543 $CFG->{mapsize} = $self->{range}[0] = $value = int $value; 659 $CFG->{mapsize} = $self->{range}[0] = $value = int $value;
544 }, 660 },
560 user_h => int $::HEIGHT / 5, 676 user_h => int $::HEIGHT / 5,
561 child => (my $vbox = new CFClient::UI::VBox); 677 child => (my $vbox = new CFClient::UI::VBox);
562 678
563 $vbox->add ($LOGVIEW = new CFClient::UI::TextView 679 $vbox->add ($LOGVIEW = new CFClient::UI::TextView
564 expand => 1, 680 expand => 1,
681 font => $FONT_FIXED,
565 fontsize => $::CFG->{log_fontsize}, 682 fontsize => $::CFG->{log_fontsize},
566 ); 683 );
567 684
568 $vbox->add (my $input = new CFClient::UI::Entry 685 $vbox->add (my $input = new CFClient::UI::Entry
569 connect_focus_in => sub { 686 connect_focus_in => sub {
663 780
664 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Client Setup", other => client_setup); 781 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Client Setup", other => client_setup);
665 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Server Setup", other => server_setup); 782 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Server Setup", other => server_setup);
666 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Message Window", other => message_window); 783 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Message Window", other => message_window);
667 784
785 $CFClient::UI::ROOT->add (make_gauge_window); # XXX: this has to be set before make_stats_window as make_stats_window calls update_stats_window which updated the gauges also X-D
786 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Stats Window", other => make_stats_window);
787
668 $BUTTONBAR->add (new CFClient::UI::Button text => "Save Config", connect_activate => sub { 788 $BUTTONBAR->add (new CFClient::UI::Button text => "Save Config", connect_activate => sub {
669 CFClient::write_cfg "$Crossfire::VARDIR/pclientrc"; 789 CFClient::write_cfg "$Crossfire::VARDIR/pclientrc";
670 status "Configuration Saved"; 790 status "Configuration Saved";
671 }); 791 });
672 792
673 $CFClient::UI::ROOT->add (make_gauge_window); # XXX: this has to be set before make_stats_window as make_stats_window calls update_stats_window which updated the gauges also X-D
674 $BUTTONBAR->add (new CFClient::UI::Flopper text => "Stats Window", other => make_stats_window);
675
676 $BUTTONBAR->{children}[1]->emit ("activate"); # pop up server setup 793 $BUTTONBAR->{children}[1]->emit ("activate"); # pop up server setup
677
678
679} 794}
680 795
681sub video_shutdown { 796sub video_shutdown {
682 $CFClient::UI::ROOT->{children} = []; 797 $CFClient::UI::ROOT->{children} = [];
683 undef $SDL_ACTIVE; 798 undef $SDL_ACTIVE;
1058 $MAPWIDGET->add_command ("ready_skill $skill", "", sub { 1173 $MAPWIDGET->add_command ("ready_skill $skill", "", sub {
1059 }); 1174 });
1060 $MAPWIDGET->add_command ("use_skill $skill", "", sub { 1175 $MAPWIDGET->add_command ("use_skill $skill", "", sub {
1061 }); 1176 });
1062 } 1177 }
1178}
1179
1180sub conn::container_add {
1181 my ($self, $id, $items) = @_;
1182
1183 # 0 floor
1184 # $self-<{player}{tag} => player inv
1185 #use PApp::Util; warn PApp::Util::dumpval $self->{container}{$self->{player}{tag}};
1186}
1187
1188sub conn::container_clear {
1189 my ($self, $id) = @_;
1190# use PApp::Util; warn PApp::Util::dumpval $self->{container}{0};
1063} 1191}
1064 1192
1065%SDL_CB = ( 1193%SDL_CB = (
1066 CFClient::SDL_QUIT => sub { 1194 CFClient::SDL_QUIT => sub {
1067 Event::unloop -1; 1195 Event::unloop -1;
1102 sdl_mode => 0, 1230 sdl_mode => 0,
1103 width => 640, 1231 width => 640,
1104 height => 480, 1232 height => 480,
1105 fullscreen => 0, 1233 fullscreen => 0,
1106 fast => 0, 1234 fast => 0,
1235 map_scale => 0.5,
1107 fow_enable => 1, 1236 fow_enable => 1,
1108 fow_intensity => 0.45, 1237 fow_intensity => 0.45,
1109 fow_smooth => 0, 1238 fow_smooth => 0,
1110 gui_fontsize => 1, 1239 gui_fontsize => 1,
1111 log_fontsize => 1, 1240 log_fontsize => 1,
1133@SDL_MODES or CFClient::fatal "Unable to find a usable video mode\n(hardware accelerated opengl fullscreen)"; 1262@SDL_MODES or CFClient::fatal "Unable to find a usable video mode\n(hardware accelerated opengl fullscreen)";
1134 1263
1135$CFG->{sdl_mode} = 0 if $CFG->{sdl_mode} > @SDL_MODES; 1264$CFG->{sdl_mode} = 0 if $CFG->{sdl_mode} > @SDL_MODES;
1136 1265
1137{ 1266{
1138 my @fonts = map CFClient::find_rcfile $_, qw(uifont.ttf uifontb.ttf uifonti.ttf uifontbi.ttf); 1267 my @fonts = map CFClient::find_rcfile "fonts/$_", qw(
1268 DejaVuSans.ttf
1269 DejaVuSansMono.ttf
1270 DejaVuSans-Bold.ttf
1271 DejaVuSansMono-Bold.ttf
1272 DejaVuSans-Oblique.ttf
1273 DejaVuSansMono-Oblique.ttf
1274 DejaVuSans-BoldOblique.ttf
1275 DejaVuSansMono-BoldOblique.ttf
1276 );
1139 1277
1140 CFClient::add_font $_ for @fonts; 1278 CFClient::add_font $_ for @fonts;
1141 CFClient::set_font $fonts[0]; 1279
1280 $FONT_PROP = new_from_file CFClient::Font $fonts[0];
1281 $FONT_FIXED = new_from_file CFClient::Font $fonts[1];
1282
1283 $FONT_PROP->make_default;
1142} 1284}
1143 1285
1144video_init; 1286video_init;
1145audio_init; 1287audio_init;
1146 1288

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines