… | |
… | |
81 | |
81 | |
82 | $last_refresh = SDL::GetTicks; |
82 | $last_refresh = SDL::GetTicks; |
83 | |
83 | |
84 | CFClient::gl_init; |
84 | CFClient::gl_init; |
85 | |
85 | |
86 | $FONTSIZE = int $HEIGHT / 50; |
86 | $FONTSIZE = int $HEIGHT / 40; |
87 | |
87 | |
88 | ############################################################################# |
88 | ############################################################################# |
89 | |
89 | |
90 | glClearColor 0.45, 0.45, 0.45, 1; |
90 | glClearColor 0.45, 0.45, 0.45, 1; |
91 | |
91 | |
… | |
… | |
95 | glDisable GL_DEPTH_TEST; |
95 | glDisable GL_DEPTH_TEST; |
96 | glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA; |
96 | glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA; |
97 | |
97 | |
98 | ############################################################################# |
98 | ############################################################################# |
99 | |
99 | |
100 | $DEBUG_STATUS = new CFClient::UI::Label; |
100 | $DEBUG_STATUS = new CFClient::UI::Label padding => 0; |
101 | $CFClient::UI::TOPLEVEL->add ($DEBUG_STATUS); |
101 | $CFClient::UI::TOPLEVEL->add ($DEBUG_STATUS); |
102 | |
102 | |
103 | $STATUS_LINE = new CFClient::UI::Label |
103 | $STATUS_LINE = new CFClient::UI::Label |
|
|
104 | padding => 0, |
104 | y => $HEIGHT * 59 / 60 - $FONTSIZE; |
105 | y => $HEIGHT * 49 / 50 - $FONTSIZE; |
105 | $CFClient::UI::TOPLEVEL->add ($STATUS_LINE); |
106 | $CFClient::UI::TOPLEVEL->add ($STATUS_LINE); |
106 | |
107 | |
107 | $ALT_ENTER_MESSAGE = new CFClient::UI::Label |
108 | $ALT_ENTER_MESSAGE = new CFClient::UI::Label |
|
|
109 | padding => 0, |
108 | y => $HEIGHT * 59 / 60, |
110 | y => $HEIGHT * 49 / 50, |
109 | height => $HEIGHT / 60, |
111 | height => $HEIGHT / 50, |
110 | text => "Use <b>Alt-Enter</b> to toggle fullscreen mode"; |
112 | text => "Use <b>Alt-Enter</b> to toggle fullscreen mode"; |
111 | $CFClient::UI::TOPLEVEL->add ($ALT_ENTER_MESSAGE); |
113 | $CFClient::UI::TOPLEVEL->add ($ALT_ENTER_MESSAGE); |
112 | |
114 | |
113 | $MAPWIDGET = new CFClient::UI::MapWidget; |
115 | $MAPWIDGET = new CFClient::UI::MapWidget; |
114 | $CFClient::UI::TOPLEVEL->add ($MAPWIDGET); |
116 | $CFClient::UI::TOPLEVEL->add ($MAPWIDGET); |
… | |
… | |
124 | |
126 | |
125 | sub config_dialog { |
127 | sub config_dialog { |
126 | my $dialog = new CFClient::UI::FancyFrame x => 300, y => 100, |
128 | my $dialog = new CFClient::UI::FancyFrame x => 300, y => 100, |
127 | child => (my $vbox = new CFClient::UI::VBox); |
129 | child => (my $vbox = new CFClient::UI::VBox); |
128 | $vbox->add (new CFClient::UI::Label align => 0, text => "Setup"); |
130 | $vbox->add (new CFClient::UI::Label align => 0, text => "Setup"); |
129 | $vbox->add (my $table = new CFClient::UI::Table expand => 1); |
131 | $vbox->add (my $table = new CFClient::UI::Table expand => 1, col_expand => [0, 1]); |
130 | |
132 | |
131 | $table->add (0, 0, new CFClient::UI::Label align => 1, text => "Video Mode"); |
133 | $table->add (0, 0, new CFClient::UI::Label align => 1, text => "Video Mode"); |
132 | $table->add (1, 0, my $hbox = new CFClient::UI::HBox); |
134 | $table->add (1, 0, my $hbox = new CFClient::UI::HBox); |
133 | |
135 | |
134 | $hbox->add (my $mode_slider = new CFClient::UI::Slider req_w => 100, range => [$CFG->{sdl_mode}, 0, scalar @SDL_MODES, 1]); |
136 | $hbox->add (my $mode_slider = new CFClient::UI::Slider req_w => 100, range => [$CFG->{sdl_mode}, 0, scalar @SDL_MODES, 1]); |
… | |
… | |
228 | my $interval = ($NOW - $last_refresh) * 0.001; |
230 | my $interval = ($NOW - $last_refresh) * 0.001; |
229 | $last_refresh = $NOW; |
231 | $last_refresh = $NOW; |
230 | |
232 | |
231 | if ($interval) { |
233 | if ($interval) { |
232 | $FPS ||= 1 / $interval; |
234 | $FPS ||= 1 / $interval; |
233 | $FPS = $FPS * 0.96 + (1 / $interval) * 0.04; |
235 | $FPS = $FPS * 0.9 + (1 / $interval) * 0.1; |
234 | debug sprintf "%5.02f", $FPS; |
236 | debug sprintf "%5.02f", $FPS; |
235 | } |
237 | } |
236 | |
238 | |
237 | force_refresh; |
239 | force_refresh; |
238 | $_->animate ($interval) for grep $_, values %ANIMATE; |
240 | $_->animate ($interval) for grep $_, values %ANIMATE; |