int game_init(const char *s) { int i; jump_e = 1; jump_b = 0; idle_t = 1.0f; view_init(); if (!(state = sol_load_full(&file, s, config_get_d(CONFIG_SHADOW)))) return 0; sol_init_sim(&file.vary); for (i = 0; i < file.base.dc; i++) { const char *k = file.base.av + file.base.dv[i].ai; const char *v = file.base.av + file.base.dv[i].aj; if (strcmp(k, "idle") == 0) { sscanf(v, "%f", &idle_t); if (idle_t < 1.0f) idle_t = 1.0f; } } return 1; }
void back_init(const char *name) { if (back_state) back_free(); /* Load the background SOL and modify its material in-place to use the */ /* named gradient texture. */ if (sol_load_full(&back, "geom/back/back.sol", 0)) { struct mtrl *mp = mtrl_get(back.base.mtrls[0]); mp->o = make_image_from_file(name, IF_MIPMAP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); back_state = 1; } }
void geom_init(void) { int i; sol_load_full(&beam, "geom/beam/beam.sol", 0); sol_load_full(&jump, "geom/jump/jump.sol", 0); sol_load_full(&goal, "geom/goal/goal.sol", 0); sol_load_full(&flag, "geom/flag/flag.sol", 0); sol_load_full(&mark, "geom/mark/mark.sol", 0); sol_load_full(&vect, "geom/vect/vect.sol", 0); for (i = 0; i < GEOM_MAX; i++) sol_load_full(&item[i], item_sols[i], 0); }
int game_client_init(const char *file_name) { char *back_name = "", *grad_name = ""; int i; coins = 0; status = GAME_NONE; game_client_free(file_name); /* Load SOL data. */ if (!game_base_load(file_name)) return (gd.state = 0); if (!sol_load_vary(&gd.vary, &game_base)) { game_base_free(NULL); return (gd.state = 0); } if (!sol_load_draw(&gd.draw, &gd.vary, config_get_d(CONFIG_SHADOW))) { sol_free_vary(&gd.vary); game_base_free(NULL); return (gd.state = 0); } gd.state = 1; /* Initialize game state. */ game_tilt_init(&gd.tilt); game_view_init(&gd.view); gd.jump_e = 1; gd.jump_b = 0; gd.jump_dt = 0.0f; gd.goal_e = 0; gd.goal_k = 0.0f; /* Initialize interpolation. */ game_lerp_init(&gl, &gd); /* Initialize fade. */ gd.fade_k = 1.0f; gd.fade_d = -2.0f; /* Load level info. */ version.x = 0; version.y = 0; for (i = 0; i < gd.vary.base->dc; i++) { char *k = gd.vary.base->av + gd.vary.base->dv[i].ai; char *v = gd.vary.base->av + gd.vary.base->dv[i].aj; if (strcmp(k, "back") == 0) back_name = v; if (strcmp(k, "grad") == 0) grad_name = v; if (strcmp(k, "version") == 0) sscanf(v, "%d.%d", &version.x, &version.y); } /* * If the version of the loaded map is 1, assume we have a version * match with the server. In this way 1.5.0 replays don't trigger * bogus map compatibility warnings. Post-1.5.0 replays will have * CMD_MAP override this. */ game_compat_map = version.x == 1; /* Initialize particles. */ part_reset(); /* Initialize command state. */ cmd_state_init(&cs); /* Initialize background. */ back_init(grad_name); sol_load_full(&gd.back, back_name, 0); /* Initialize lighting. */ light_reset(); return gd.state; }