test/snake/snake.c

changeset 99
ac143db979dc
parent 98
83bec26453a8
equal deleted inserted replaced
98:83bec26453a8 99:ac143db979dc
106 asc_scene_add_node(MAIN_SCENE, sprite); 106 asc_scene_add_node(MAIN_SCENE, sprite);
107 107
108 // TODO: return something 108 // TODO: return something
109 } 109 }
110 110
111 static asc_recti update_viewport_for_window_resize(asc_vec2i window_size) {
112 // Compute scaling and offsets
113 int viewport_size, offset_x = 0, offset_y = 0;
114 if (window_size.width > window_size.height) {
115 // Wider window: letterbox (black bars on top/bottom)
116 offset_x = (window_size.width - window_size.height) / 2;
117 viewport_size = window_size.height;
118 } else {
119 // Taller window: pillarbox (black bars on sides)
120 offset_y = (window_size.height - window_size.width) / 2;
121 viewport_size = window_size.width;
122 }
123
124 // Set the viewport to the scaled and centered region
125 return (asc_recti){
126 offset_x,
127 offset_y,
128 viewport_size,
129 viewport_size
130 };
131 }
132
111 int main(int argc, char** argv) { 133 int main(int argc, char** argv) {
112 asc_context_initialize(); 134 asc_context_initialize();
113 if (asc_has_error()) { 135 if (asc_has_error()) {
114 SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, 136 SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR,
115 "Fatal Error",asc_get_error(), NULL); 137 "Fatal Error",asc_get_error(), NULL);
127 settings.title = "Snake"; 149 settings.title = "Snake";
128 asc_window_initialize(0, &settings); 150 asc_window_initialize(0, &settings);
129 151
130 // initialize the main scene (a 500x500 game field) 152 // initialize the main scene (a 500x500 game field)
131 asc_scene_init(MAIN_SCENE); 153 asc_scene_init(MAIN_SCENE);
132 // TODO: this is intentionally bullshit at the moment to force me to care about aspect ratio
133 asc_camera_ortho(&MAIN_SCENE->camera, (asc_recti){0, 0, 500, 500}); 154 asc_camera_ortho(&MAIN_SCENE->camera, (asc_recti){0, 0, 500, 500});
155 MAIN_SCENE->camera.viewport_update_func = update_viewport_for_window_resize;
134 156
135 // load textures 157 // load textures
136 init_textures(); 158 init_textures();
137 159
138 // create UI elements 160 // create UI elements

mercurial