feat: Add dummy game utility and enhance testing capabilities

- also improve argument handling
This commit is contained in:
2026-05-26 12:05:39 +05:30
parent 1cb0097e68
commit c96c361973
7 changed files with 264 additions and 8 deletions

67
src/dummy_game.c Normal file
View File

@@ -0,0 +1,67 @@
#include <SDL2/SDL.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int delay_seconds = 5;
if (argc > 1) {
int parsed = atoi(argv[1]);
if (parsed > 0) {
delay_seconds = parsed;
}
}
printf("[dummy_game] Simulating engine startup for %d seconds...\n", delay_seconds);
for (int i = 0; i < delay_seconds; i++) {
sleep(1);
printf("[dummy_game] Loading... %d/%d\n", i + 1, delay_seconds);
}
printf("[dummy_game] Creating window to trigger focus-loss on splash screen...\n");
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
fprintf(stderr, "[dummy_game] SDL Init Failed: %s\n", SDL_GetError());
return 1;
}
SDL_Window *window = SDL_CreateWindow(
"Dummy Game Window",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
800, 600,
SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE
);
if (!window) {
fprintf(stderr, "[dummy_game] Window Creation Failed: %s\n", SDL_GetError());
SDL_Quit();
return 1;
}
SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
if (renderer) {
SDL_SetRenderDrawColor(renderer, 0, 120, 255, 255);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
}
printf("[dummy_game] Window created. Waiting 5 seconds before exiting...\n");
SDL_Event event;
int running = 1;
Uint32 start_time = SDL_GetTicks();
while (running && (SDL_GetTicks() - start_time < 5000)) {
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
running = 0;
}
}
SDL_Delay(50);
}
printf("[dummy_game] Exiting normally.\n");
if (renderer) SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}

View File

@@ -317,8 +317,14 @@ int main(int argc, char *argv[])
render_mode = parse_render_mode(argv[1] + 7);
arg_index += 1;
}
else if (argc >= 4 && strcmp(argv[1], "-m") == 0)
else if (argc >= 2 && strcmp(argv[1], "-m") == 0)
{
if (argc < 4)
{
log_error("Usage: %s [--mode=stretch|center|crop] <image_path> <game_executable> [args...]", argv[0]);
log_error(" %s -m stretch|center|crop <image_path> <game_executable> [args...]", argv[0]);
return 1;
}
render_mode = parse_render_mode(argv[2]);
arg_index += 2;
}
@@ -333,7 +339,7 @@ int main(int argc, char *argv[])
const char *image_path = argv[arg_index];
const char *game_path = argv[arg_index + 1];
log_info("Starting splash: image='%s', game='%s'", image_path, game_path);
log_info("Starting splash: image='%s', game='%s', mode=%d", image_path, game_path, render_mode);
// Initialize SDL2 Video subsystems
if (SDL_Init(SDL_INIT_VIDEO) < 0)