Rev 18 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 18 | Rev 20 | ||
|---|---|---|---|
| Line 162... | Line 162... | ||
| 162 | harness_game_config.enable_diagnostics = 0; |
162 | harness_game_config.enable_diagnostics = 0; |
| 163 | // no volume multiplier |
163 | // no volume multiplier |
| 164 | harness_game_config.volume_multiplier = 1.0f; |
164 | harness_game_config.volume_multiplier = 1.0f; |
| 165 | // start window in windowed mode |
165 | // start window in windowed mode |
| 166 | harness_game_config.start_full_screen = 0; |
166 | harness_game_config.start_full_screen = 0; |
| 167 | // |
167 | // Emulate gore check |
| 168 | harness_game_config.gore_check = 0; |
168 | harness_game_config.gore_check = 0; |
| 169 | // Enable Sound Options menu |
169 | // Enable Sound Options menu |
| 170 | harness_game_config.sound_options = 1; // Pierre-Marie Baty -- invert option default value |
170 | harness_game_config.sound_options = 1; // Pierre-Marie Baty -- invert option default value |
| 171 | // Skip binding socket to allow local network testing |
171 | // Skip binding socket to allow local network testing |
| 172 | harness_game_config.no_bind = 0; |
172 | harness_game_config.no_bind = 0; |
| 173 | // Disable verbose logging |
- | |
| 174 | harness_game_config.verbose = 0; |
- | |
| 175 | 173 | ||
| 176 | // install signal handler by default |
174 | // install signal handler by default |
| 177 | harness_game_config.install_signalhandler = 1; |
175 | harness_game_config.install_signalhandler = 1; |
| 178 | 176 | ||
| 179 | Harness_ProcessCommandLine(argc, argv); |
177 | Harness_ProcessCommandLine(argc, argv); |
| Line 217... | Line 215... | ||
| 217 | } |
215 | } |
| 218 | #endif /* __APPLE__ */ |
216 | #endif /* __APPLE__ */ |
| 219 | if (root_dir[0] == 0) |
217 | if (root_dir[0] == 0) |
| 220 | strcpy(root_dir, "."); // Pierre-Marie Baty -- consistency check |
218 | strcpy(root_dir, "."); // Pierre-Marie Baty -- consistency check |
| 221 | } |
219 | } |
| 222 |
|
220 | printf("Using root directory: %s\n", root_dir); |
| 223 |
|
221 | result = chdir(root_dir); |
| 224 |
|
222 | if (result != 0) { |
| 225 |
|
223 | LOG_PANIC("Failed to chdir. Error is %s", strerror(errno)); |
| 226 | } |
224 | } |
| 227 | 225 | ||
| 228 | if (harness_game_info.mode == eGame_none) { |
226 | if (harness_game_info.mode == eGame_none) { |
| 229 | Harness_DetectGameMode(); |
227 | Harness_DetectGameMode(); |
| 230 | } |
228 | } |
| Line 253... | Line 251... | ||
| 253 | harness_debug_level = atoi(s + 1); |
251 | harness_debug_level = atoi(s + 1); |
| 254 | LOG_INFO("debug level set to %d", harness_debug_level); |
252 | LOG_INFO("debug level set to %d", harness_debug_level); |
| 255 | handled = 1; |
253 | handled = 1; |
| 256 | } else if (strstr(argv[i], "--physics-step-time=") != NULL) { |
254 | } else if (strstr(argv[i], "--physics-step-time=") != NULL) { |
| 257 | char* s = strstr(argv[i], "="); |
255 | char* s = strstr(argv[i], "="); |
| 258 | harness_game_config.physics_step_time = |
256 | harness_game_config.physics_step_time = atof(s + 1); |
| 259 | LOG_INFO("Physics step time set to |
257 | LOG_INFO("Physics step time set to %f", harness_game_config.physics_step_time); |
| 260 | handled = 1; |
258 | handled = 1; |
| 261 | } else if (strstr(argv[i], "--fps=") != NULL) { |
259 | } else if (strstr(argv[i], "--fps=") != NULL) { |
| 262 | char* s = strstr(argv[i], "="); |
260 | char* s = strstr(argv[i], "="); |
| 263 | harness_game_config.fps = atoi(s + 1); |
261 | harness_game_config.fps = atoi(s + 1); |
| 264 | LOG_INFO("FPS limiter set to %f", harness_game_config.fps); |
262 | LOG_INFO("FPS limiter set to %f", harness_game_config.fps); |
| Line 310... | Line 308... | ||
| 310 | i--; |
308 | i--; |
| 311 | } |
309 | } |
| 312 | } |
310 | } |
| 313 | 311 | ||
| 314 | return 0; |
312 | return 0; |
| - | 313 | } |
|
| - | 314 | ||
| - | 315 | // Render 2d back buffer |
|
| - | 316 | void Harness_RenderScreen(br_pixelmap* dst, br_pixelmap* src) { |
|
| - | 317 | gHarness_platform.Renderer_FullScreenQuad((uint8_t*)src->pixels); |
|
| - | 318 | ||
| - | 319 | last_dst = dst; |
|
| - | 320 | last_src = src; |
|
| - | 321 | } |
|
| - | 322 | ||
| - | 323 | void Harness_Hook_BrV1dbRendererBegin(br_v1db_state* v1db) { |
|
| - | 324 | renderer_state = NewHarnessBrRenderer(); |
|
| - | 325 | v1db->renderer = (br_renderer*)renderer_state; |
|
| - | 326 | } |
|
| - | 327 | ||
| - | 328 | static int Harness_CalculateFrameDelay(void) { |
|
| - | 329 | if (harness_game_config.fps == 0) { |
|
| - | 330 | return 0; |
|
| - | 331 | } |
|
| - | 332 | ||
| - | 333 | unsigned int now = GetTotalTime(); |
|
| - | 334 | ||
| - | 335 | if (last_frame_time != 0) { |
|
| - | 336 | unsigned int frame_time = now - last_frame_time; |
|
| - | 337 | last_frame_time = now; |
|
| - | 338 | if (frame_time < 100) { |
|
| - | 339 | int sleep_time = (1000 / harness_game_config.fps) - frame_time; |
|
| - | 340 | if (sleep_time > 5) { |
|
| - | 341 | return sleep_time; |
|
| - | 342 | } |
|
| - | 343 | } |
|
| - | 344 | } |
|
| - | 345 | return 0; |
|
| - | 346 | } |
|
| - | 347 | ||
| - | 348 | void Harness_Hook_renderActor(br_actor* actor, br_model* model, br_material* material, br_token type) { |
|
| - | 349 | gHarness_platform.Renderer_Model(actor, model, material, type, renderer_state->state.matrix.model_to_view); |
|
| - | 350 | } |
|
| - | 351 | ||
| - | 352 | // Called by game to swap buffers at end of frame rendering |
|
| - | 353 | void Harness_Hook_BrPixelmapDoubleBuffer(br_pixelmap* dst, br_pixelmap* src) { |
|
| - | 354 | ||
| - | 355 | // draw the current colour_buffer (2d screen) contents |
|
| - | 356 | Harness_RenderScreen(dst, src); |
|
| - | 357 | ||
| - | 358 | int delay_ms = Harness_CalculateFrameDelay(); |
|
| - | 359 | gHarness_platform.SwapWindow(); |
|
| - | 360 | if (delay_ms > 0) { |
|
| - | 361 | gHarness_platform.Sleep(delay_ms); |
|
| - | 362 | } |
|
| - | 363 | ||
| - | 364 | gHarness_platform.Renderer_ClearBuffers(); |
|
| - | 365 | last_frame_time = GetTotalTime(); |
|
| - | 366 | } |
|
| - | 367 | ||
| - | 368 | void Harness_RenderLastScreen(void) { |
|
| - | 369 | if (last_dst) { |
|
| - | 370 | Harness_RenderScreen(last_dst, last_src); |
|
| - | 371 | gHarness_platform.SwapWindow(); |
|
| - | 372 | } |
|
| 315 | } |
373 | } |
| 316 | 374 | ||
| 317 | // Filesystem hooks |
375 | // Filesystem hooks |
| 318 | FILE* Harness_Hook_fopen(const char* pathname, const char* mode) { |
376 | FILE* Harness_Hook_fopen(const char* pathname, const char* mode) { |
| 319 | return OS_fopen(pathname, mode); |
377 | return OS_fopen(pathname, mode); |