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.50 by root, Sun Apr 9 21:05:50 2006 UTC vs.
Revision 1.56 by root, Sun Apr 9 22:28:05 2006 UTC

31our $WIDTH; 31our $WIDTH;
32our $HEIGHT; 32our $HEIGHT;
33our $FULLSCREEN; 33our $FULLSCREEN;
34 34
35our $FONTSIZE; 35our $FONTSIZE;
36our $FOCUS;
37our $HOVER;
36 38
37our $SDL_TIMER; 39our $SDL_TIMER;
38our $SDL_APP; 40our $SDL_APP;
39our $SDL_EV = new SDL::Event; 41our $SDL_EV = new SDL::Event;
40our %SDL_CB; 42our %SDL_CB;
41 43
42our @GL_INIT; # hooks called on every gl init 44our @GL_INIT; # hooks called on every gl init
43 45
44our $ALT_ENTER_MESSAGE; 46our $ALT_ENTER_MESSAGE;
47our $STATUS_LINE;
45 48
46our $TOPLEVEL; 49our $TOPLEVEL;
47 50
48our $tw; # Test widget #d# 51our $tw; # Test widget #d#
49 52
56 -flags => SDL_ANYFORMAT | SDL_HWSURFACE, 59 -flags => SDL_ANYFORMAT | SDL_HWSURFACE,
57 -title => "Crossfire+ Client", 60 -title => "Crossfire+ Client",
58 -width => $WIDTH, 61 -width => $WIDTH,
59 -height => $HEIGHT, 62 -height => $HEIGHT,
60 -opengl => 1, 63 -opengl => 1,
61 -red_size => 8, 64 -red_size => 5,
62 -green_size => 8, 65 -green_size => 5,
63 -blue_size => 8, 66 -blue_size => 5,
67 -alpha_size => 0,
64 -double_buffer => 1, 68 -double_buffer => 1,
65 -fullscreen => $FULLSCREEN, 69 -fullscreen => $FULLSCREEN,
66 -resizeable => 0; 70 -resizeable => 0;
67 71
68 $last_refresh = SDL::GetTicks; 72 $last_refresh = SDL::GetTicks;
72 $GL_EXT{GL_ARB_texture_non_power_of_two} 76 $GL_EXT{GL_ARB_texture_non_power_of_two}
73 or warn "WARNING: non-power-of-two opengl extension required"; 77 or warn "WARNING: non-power-of-two opengl extension required";
74 78
75 $FONTSIZE = int $HEIGHT / 50; 79 $FONTSIZE = int $HEIGHT / 50;
76 80
81 #############################################################################
82
83 glClearColor 0, 0, 0, 0;
84
85 glEnable GL_TEXTURE_2D;
86 glEnable GL_COLOR_MATERIAL;
87 glShadeModel GL_FLAT;
88 glDisable GL_DEPTH_TEST;
89 glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA;
90
91 $_->() for @GL_INIT;
92
93 #############################################################################
94
95 $STATUS_LINE = new Crossfire::Client::Widget::Label
96 0, $HEIGHT * 59 / 60 - $FONTSIZE, 1, $FONTSIZE,
97 "";
98 $TOPLEVEL->add ($STATUS_LINE);
99
77 $ALT_ENTER_MESSAGE = new Crossfire::Client::Widget::Label 100 $ALT_ENTER_MESSAGE = new Crossfire::Client::Widget::Label
78 0, $FONTSIZE, $HEIGHT - $FONTSIZE, $FONTSIZE, 101 0, $HEIGHT * 59 / 60, 1, $HEIGHT / 60,
79 "Use <b>Alt-Enter</b> to toggle fullscreen mode"; 102 "Use <b>Alt-Enter</b> to toggle fullscreen mode";
80 $ALT_ENTER_MESSAGE->move (0, $HEIGHT - ($ALT_ENTER_MESSAGE->size_request)[1]);
81 $TOPLEVEL->add ($ALT_ENTER_MESSAGE); 103 $TOPLEVEL->add ($ALT_ENTER_MESSAGE);
82 104
83 # Test code #d# 105 # Test code #d#
84 unless ($tw) { # haha... 106 unless ($tw) { # haha...
85 $tw = new Crossfire::Client::Widget::Animator; 107 $tw = new Crossfire::Client::Widget::Animator;
104 $TOPLEVEL->add ($tw); 126 $TOPLEVEL->add ($tw);
105 127
106# $f->move ($WIDTH - 200, 0); 128# $f->move ($WIDTH - 200, 0);
107# $TOPLEVEL->add ($f); 129# $TOPLEVEL->add ($f);
108 } 130 }
109
110 glClearColor 0, 0, 0, 0;
111
112 glEnable GL_TEXTURE_2D;
113 glEnable GL_COLOR_MATERIAL;
114 glShadeModel GL_FLAT;
115 glDisable GL_DEPTH_TEST;
116 glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA;
117
118 $_->() for @GL_INIT;
119} 131}
120 132
121sub start_game { 133sub start_game {
122 $SDL_TIMER = add Glib::Timeout 1000/50, sub { 134 $SDL_TIMER = add Glib::Timeout 1000/50, sub {
123 ($SDL_CB{$SDL_EV->type} || sub { warn "unhandled event ", $SDL_EV->type })->() 135 ($SDL_CB{$SDL_EV->type} || sub { warn "unhandled event ", $SDL_EV->type })->()
146 Crossfire::Client::lowdelay fileno $CONN->{fh}; 158 Crossfire::Client::lowdelay fileno $CONN->{fh};
147} 159}
148 160
149sub stop_game { 161sub stop_game {
150 remove Glib::Source $SDL_TIMER; 162 remove Glib::Source $SDL_TIMER;
151 remove Glib::Source $refresh_handler; 163 remove Glib::Source $refresh_handler if $refresh_handler;
152 undef $refresh_handler; 164 undef $refresh_handler;
153 165
154 undef $SDL_APP; 166 undef $SDL_APP;
155 undef $CONN; 167 undef $CONN;
156 SDL::Quit; 168 SDL::Quit;
225 }, 237 },
226 SDL_KEYUP() => sub { 238 SDL_KEYUP() => sub {
227 Crossfire::Client::Widget::feed_sdl_key_up_event ($SDL_EV); 239 Crossfire::Client::Widget::feed_sdl_key_up_event ($SDL_EV);
228 }, 240 },
229 SDL_MOUSEMOTION() => sub { 241 SDL_MOUSEMOTION() => sub {
230 warn "sdl motion\n";#d# 242 my ($x, $y) = ($SDL_EV->motion_x, $SDL_EV->motion_y);
243 $HOVER = $TOPLEVEL->find_widget ($x, $y);
244 ::refresh;
245
246 warn "mouse $x, $y = $HOVER\n";
231 }, 247 },
232 SDL_MOUSEBUTTONDOWN() => sub { 248 SDL_MOUSEBUTTONDOWN() => sub {
233 Crossfire::Client::Widget::feed_sdl_button_down_event ($SDL_EV); 249 Crossfire::Client::Widget::feed_sdl_button_down_event ($SDL_EV);
234 }, 250 },
235 SDL_MOUSEBUTTONUP() => sub { 251 SDL_MOUSEBUTTONUP() => sub {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines