/***************************************************************************
                          config.h  -  description
                             -------------------
    begin                : Tue Feb 13 2001
    copyright            : (C) 2001 by Michael Speck
    email                : kulkanie@gmx.net
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef __CONFIG_H
#define __CONFIG_H

/* configure struct */
enum { BALL_BELOW_BONUS = 0, BALL_ABOVE_BONUS };
enum { DEBRIS_BELOW_BALL = 0, DEBRIS_ABOVE_BALL };
typedef struct {
    /* directory to save config and saved games */
    char dir_name[512];
    /* levels */
    int levelset_id_home;
    int levelset_count_home; /* save number of levelsets for safety 
                                (to reset id if count changed) */
    /* players */
    int player_count;
    char player_names[4][32];
    /* game */
    int diff; /* diffculty */
    int startlevel;
    int rel_warp_limit; /* percentage of bricks required to be destroyed 
                           before player may proceed to next level */
    int addBonusLevels; /* add some bonus levels */
    /* controls */
    int k_left;
    int k_right;
    int k_lfire;
    int k_rfire;
    int k_return; /* return ball on click on this key */
    int k_turbo; /* double paddle speed while this key is pressed */
    int k_warp; /* warp to next level */
    int k_maxballspeed; /* go to maximum ball speed (while pressed) */
    int rel_motion; /* use relative mouse motion; motion_mod and invert need this enabled */
    int grab; /* keep mouse in window */
    int i_motion_mod; /* motion_mod * 100 used to modify in the menu */
    double motion_mod; /* multiplied with relative motion */
    int convex;
    int invert;
    double key_speed; /* move with key_speed pix per sec when keys are used */
    int linear_corner; /* assume a 45° line for corner? */
    int random_angle;
    int maxballspeed_int1000; /* max ball speed in pixels/second */
    float maxballspeed_float; /* per millisecond */
    /* sound */
    int sound;
    int volume; /* 1 - 8 */
    int speech; /* enable speech? */
    int badspeech; /* if speech allowed, allow swearing? */
    int audio_buffer_size;
    /* graphics */
    int anim;
    int fullscreen;
    int fade;
    int bonus_info;
    int fps; /* frames per second: 0 - no limit, 1 - 50, 2 - 100, 3 - 200 */
	int ball_level;
	int debris_level;
    int i_key_speed; /* integer value that is devided by 100 to get real key_speed */
    /* various */
    int use_hints;
    int return_on_click; /* autoreturn on click if true else automatically */
    int theme_id; /* 0 == default theme */
    int theme_count; /* to check and properly reset id if number of themes changed */
    /* multiplayer */
    char server[64]; /* ip:port */
    char local_port[8]; /* where to bind local UDP socket */
    char username[16]; /* username at server */
    int  mp_diff;   /* difficulty */
    int  mp_rounds; /* rounds per level in a levelset */
    int  mp_frags; /* points a player needs to win a round */
    int  mp_balls; /* maximum number of balls a player may fire */
    int  recv_limit; /* number of packets parsed in one go */
} Config;

/* set config to default */
void config_reset();

/* load config */
void config_load( );

/* save config */
void config_save( );

#endif
