void game_client_fly(float k) { game_view_fly(&gl.view[CURR], &gd.vary, k); gl.view[PREV] = gl.view[CURR]; }
int game_server_init(const char *file_name, int t, int e) { struct { int x, y; } version; int i; timer = (float) t / 100.f; timer_down = (t > 0); coins = 0; status = GAME_NONE; game_server_free(file_name); /* Load SOL data. */ if (!game_base_load(file_name)) return (server_state = 0); if (!sol_load_vary(&vary, &game_base)) { game_base_free(NULL); return (server_state = 0); } server_state = 1; /* Get SOL version. */ version.x = 0; version.y = 0; for (i = 0; i < vary.base->dc; i++) { char *k = vary.base->av + vary.base->dv[i].ai; char *v = vary.base->av + vary.base->dv[i].aj; if (strcmp(k, "version") == 0) sscanf(v, "%d.%d", &version.x, &version.y); } input_init(); game_tilt_init(&tilt); /* Initialize jump and goal states. */ jump_e = 1; jump_b = 0; goal_e = e ? 1 : 0; /* Initialize the view (and put it at the ball). */ game_view_fly(&view, &vary, 0.0f); view_k = 1.0f; view_time = 0.0f; view_fade = 0.0f; /* Initialize ball size tracking. */ got_orig = 0; grow = 0; /* Initialize simulation. */ sol_init_sim(&vary); sol_cmd_enq_func(game_proxy_enq); /* Send initial update. */ game_cmd_map(file_name, version.x, version.y); game_cmd_ups(); game_cmd_timer(); if (goal_e) game_cmd_goalopen(); game_cmd_init_balls(); game_cmd_init_items(); game_cmd_updview(); game_cmd_eou(); /* Reset lockstep state. */ lockstep_clr(&server_step); return server_state; }