Ejemplo n.º 1
0
static void
uninit_tile_sprites (void)
{
  while (tile_set_size--)
    XFREE0 (tile_transp[tile_set_size]);
  XFREE0 (tile_transp);
}
Ejemplo n.º 2
0
void
free_preferences (void)
{
  dmsg (D_MISC, "free preferences");

  XFREE0 (name);
  XFREE0 (ignored_lines);
}
Ejemplo n.º 3
0
void
release_explosions (void)
{
  free_htimer (explo_timer);
  XFREE0 (square_explo_state);
  XFREE0 (square_explo_type);
  XFREE0 (explo_list);
}
Ejemplo n.º 4
0
void
uninit_render_data (void)
{
  dmsg (D_SECTION, "Uninitialize rendering data");

  uninit_tile_sprites ();
  XFREE0 (bg_data);
  XFREE0 (fg_data);
}
Ejemplo n.º 5
0
bool
load_preferences (void)
{
  FILE* fs;
  int endline = 0;
  char* buf = 0;
  size_t bufsize = 0;

  firstline = 0;

  reinit_preferences ();

  dmsg (D_FILE, "reading option from %s", preferences_file ());
  fs = fopen (preferences_file (), "rb");

  if (fs == NULL) {
    /* Don't warn, the file doesn't exists the first time.  */
    dmsg (D_FILE, "cannot open preferences file %s", preferences_file ());
    dperror ("fopen");
    return true;
  }

  XFREE0 (ignored_lines);

  while (getshline_numbered
	 (&firstline, &endline, &buf, &bufsize, fs) != -1) {
    char* token;
    char* line = xstrdup (buf);

    token = strtok (buf, " \t.:");
    if (!strcasecmp ("heroes", token)) {
    token = strtok (0, " \t.:");
    if (!strcasecmp ("screen", token)) {
    token = strtok (0, " \t.:");
    if (!strcasecmp ("display_radar", token)) {
    token = strtok (0, "\n");
    opt.radar_map = parse_bool (token, false, true);
    } else 
    if (!strcasecmp ("display_infos", token)) {
    token = strtok (0, "\n");
    opt.display_infos = parse_bool (token, false, true);
    } else 
    if (!strcasecmp ("gamma", token)) {
    token = strtok (0, "\n");
    opt.luminance = parse_unsigned (token, 0, 12);
    } else 
    if (!strcasecmp ("inertia", token)) {
    token = strtok (0, "\n");
    opt.inertia = parse_bool (token, false, true);
    } else { append_ignored (line); }
    } else 
    if (!strcasecmp ("sound", token)) {
    token = strtok (0, " \t.:");
    if (!strcasecmp ("music_enable", token)) {
    token = strtok (0, "\n");
    opt.music = parse_bool (token, false, true);
    } else 
    if (!strcasecmp ("music_volume", token)) {
    token = strtok (0, "\n");
    opt.music_volume = parse_unsigned (token, 0, 12);
    } else 
    if (!strcasecmp ("sfx_enable", token)) {
    token = strtok (0, "\n");
    opt.sfx = parse_bool (token, false, true);
    } else 
    if (!strcasecmp ("sfx_volume", token)) {
    token = strtok (0, "\n");
    opt.sfx_volume = parse_unsigned (token, 0, 12);
    } else { append_ignored (line); }
    } else 
    if (!strcasecmp ("control", token)) {
    token = strtok (0, " \t.:");
    if (!strcasecmp ("player1", token)) {
    token = strtok (0, "\n");
    opt.ctrl_one = parse_unsigned (token, 0, 1);
    } else 
    if (!strcasecmp ("autopilot1", token)) {
    token = strtok (0, "\n");
    opt.autopilot_one = parse_bool (token, false, true);
    } else 
    if (!strcasecmp ("player2", token)) {
    token = strtok (0, "\n");
    opt.ctrl_two = parse_unsigned (token, 0, 1);
    } else 
    if (!strcasecmp ("autopilot2", token)) {
    token = strtok (0, "\n");
    opt.autopilot_two = parse_bool (token, false, true);
    } else { append_ignored (line); }
    } else 
    if (!strcasecmp ("game", token)) {
    token = strtok (0, " \t.:");
    if (!strcasecmp ("speed", token)) {
    token = strtok (0, "\n");
    opt.speed = parse_unsigned (token, 0, 2);
    } else 
    if (!strcasecmp ("gamerounds", token)) {
    token = strtok (0, "\n");
    opt.gamerounds = parse_unsigned (token, 0, 15);
    } else 
    if (!strcasecmp ("player_colors", token)) {
    token = strtok (0, " \t");
    opt.player_color[0] = parse_unsigned (token, 0, 4);
    token = strtok (0, " \t");
    opt.player_color[1] = parse_unsigned (token, 0, 4);
    token = strtok (0, " \t");
    opt.player_color[2] = parse_unsigned (token, 0, 4);
    token = strtok (0, " \t");
    opt.player_color[3] = parse_unsigned (token, 0, 4);
    } else { append_ignored (line); }
    } else 
    if (!strcasecmp ("extras", token)) {
    token = strtok (0, " \t.:");
    if (!strcasecmp ("mode", token)) {
    token = strtok (0, "\n");
    opt.extras = parse_unsigned (token, 0, 2);
    } else { append_ignored (line); }
    } else 
    if (!strcasecmp (keys_pref_group (), token)) {
    token = strtok (0, " \t.:");
    if (!strcasecmp ("player1_keys", token)) {
    token = strtok (0, " \t");
    opt.player_keys[0][0] = parse_unsigned (token, 0, HKEYCODE_MAX);
    token = strtok (0, " \t");
    opt.player_keys[0][1] = parse_unsigned (token, 0, HKEYCODE_MAX);
    token = strtok (0, " \t");
    opt.player_keys[0][2] = parse_unsigned (token, 0, HKEYCODE_MAX);
    token = strtok (0, " \t");
    opt.player_keys[0][3] = parse_unsigned (token, 0, HKEYCODE_MAX);
    token = strtok (0, " \t");
    opt.player_keys[0][4] = parse_unsigned (token, 0, HKEYCODE_MAX);
    token = strtok (0, " \t");
    opt.player_keys[0][5] = parse_unsigned (token, 0, HKEYCODE_MAX);
    } else 
    if (!strcasecmp ("player2_keys", token)) {
    token = strtok (0, " \t");
    opt.player_keys[1][0] = parse_unsigned (token, 0, HKEYCODE_MAX);
    token = strtok (0, " \t");
    opt.player_keys[1][1] = parse_unsigned (token, 0, HKEYCODE_MAX);
    token = strtok (0, " \t");
    opt.player_keys[1][2] = parse_unsigned (token, 0, HKEYCODE_MAX);
    token = strtok (0, " \t");
    opt.player_keys[1][3] = parse_unsigned (token, 0, HKEYCODE_MAX);
    token = strtok (0, " \t");
    opt.player_keys[1][4] = parse_unsigned (token, 0, HKEYCODE_MAX);
    token = strtok (0, " \t");
    opt.player_keys[1][5] = parse_unsigned (token, 0, HKEYCODE_MAX);
    } else { append_ignored (line); }
    } else { append_ignored (line); }
    } else { append_ignored (line); }
    free (line);
  }

  free (buf);
  fclose (fs);
  return false;
}