static void game_cmd_init_balls(void) { cmd.type = CMD_CLEAR_BALLS; game_proxy_enq(&cmd); cmd.type = CMD_MAKE_BALL; game_proxy_enq(&cmd); game_cmd_updball(); game_cmd_ballradius(); }
static void game_cmd_updview(void) { cmd.type = CMD_VIEW_POSITION; v_cpy(cmd.viewpos.p, view.p); game_proxy_enq(&cmd); cmd.type = CMD_VIEW_CENTER; v_cpy(cmd.viewcenter.c, view.c); game_proxy_enq(&cmd); cmd.type = CMD_VIEW_BASIS; v_cpy(cmd.viewbasis.e[0], view.e[0]); v_cpy(cmd.viewbasis.e[1], view.e[1]); game_proxy_enq(&cmd); }
void level_snap(int i, const char *path) { char *filename; /* Convert the level name to a PNG filename. */ filename = concat_string(path, "/", base_name_sans(level_v[i].file, ".sol"), ".png", NULL); /* Initialize the game for a snapshot. */ if (game_client_init(level_v[i].file)) { union cmd cmd; cmd.type = CMD_GOAL_OPEN; game_proxy_enq(&cmd); game_client_sync(NULL); /* Render the level and grab the screen. */ video_clear(); game_client_fly(1.0f); game_kill_fade(); game_client_draw(POSE_LEVEL, 0); video_snap(filename); video_swap(); } free(filename); }
static void game_cmd_updball(void) { cmd.type = CMD_BALL_POSITION; v_cpy(cmd.ballpos.p, vary.uv[0].p); game_proxy_enq(&cmd); cmd.type = CMD_BALL_BASIS; v_cpy(cmd.ballbasis.e[0], vary.uv[0].e[0]); v_cpy(cmd.ballbasis.e[1], vary.uv[0].e[1]); game_proxy_enq(&cmd); cmd.type = CMD_BALL_PEND_BASIS; v_cpy(cmd.ballpendbasis.E[0], vary.uv[0].E[0]); v_cpy(cmd.ballpendbasis.E[1], vary.uv[0].E[1]); game_proxy_enq(&cmd); }
static void game_cmd_map(const char *name, int ver_x, int ver_y) { cmd.type = CMD_MAP; cmd.map.name = strdup(name); cmd.map.version.x = ver_x; cmd.map.version.y = ver_y; game_proxy_enq(&cmd); }
static void game_cmd_tiltaxes(void) { cmd.type = CMD_TILT_AXES; v_cpy(cmd.tiltaxes.x, tilt.x); v_cpy(cmd.tiltaxes.z, tilt.z); game_proxy_enq(&cmd); }
static void game_cmd_tiltangles(void) { cmd.type = CMD_TILT_ANGLES; cmd.tiltangles.x = tilt.rx; cmd.tiltangles.z = tilt.rz; game_proxy_enq(&cmd); }
static void game_cmd_sound(const char *filename, float a) { cmd.type = CMD_SOUND; cmd.sound.n = strdup(filename); cmd.sound.a = a; game_proxy_enq(&cmd); }
static void game_cmd_init_items(void) { int i; cmd.type = CMD_CLEAR_ITEMS; game_proxy_enq(&cmd); for (i = 0; i < vary.hc; i++) { cmd.type = CMD_MAKE_ITEM; v_cpy(cmd.mkitem.p, vary.hv[i].p); cmd.mkitem.t = vary.hv[i].t; cmd.mkitem.n = vary.hv[i].n; game_proxy_enq(&cmd); } }
static int init_title_level(void) { if (game_client_init("map-medium/title.sol")) { union cmd cmd; cmd.type = CMD_GOAL_OPEN; game_proxy_enq(&cmd); game_client_sync(NULL); game_client_fly(1.0f); return 1; } return 0; }
static void game_cmd_timer(void) { cmd.type = CMD_TIMER; cmd.timer.t = timer; game_proxy_enq(&cmd); }
static void game_cmd_jump(int e) { cmd.type = e ? CMD_JUMP_ENTER : CMD_JUMP_EXIT; game_proxy_enq(&cmd); }
static void game_cmd_pkitem(int hi) { cmd.type = CMD_PICK_ITEM; cmd.pkitem.hi = hi; game_proxy_enq(&cmd); }
static void game_cmd_coins(void) { cmd.type = CMD_COINS; cmd.coins.n = coins; game_proxy_enq(&cmd); }
static void game_cmd_goalopen(void) { cmd.type = CMD_GOAL_OPEN; game_proxy_enq(&cmd); }
static void game_cmd_ups(void) { cmd.type = CMD_UPDATES_PER_SECOND; cmd.ups.n = UPS; game_proxy_enq(&cmd); }
static void game_cmd_eou(void) { cmd.type = CMD_END_OF_UPDATE; game_proxy_enq(&cmd); }
static void game_cmd_status(void) { cmd.type = CMD_STATUS; cmd.status.t = status; game_proxy_enq(&cmd); }
static void game_cmd_ballradius(void) { cmd.type = CMD_BALL_RADIUS; cmd.ballradius.r = vary.uv[0].r; game_proxy_enq(&cmd); }