src/Config.hh
author Tero Marttila <terom@fixme.fi>
Tue, 20 Jan 2009 23:30:18 +0200
changeset 408 e6cfc44266af
parent 398 306825786fba
child 412 721c60072091
permissions -rw-r--r--
reorganize Terrain/PhysicsWorld/GameState/Engine to use NetworkClientConnect, and hence handle the connection process asynchronously, and finally properly implement receiving the terrain data from the server
#ifndef CONFIG_HH
#define CONFIG_HH

// XXX: merge this as Config.hh.in?
#include "config.h"

#include "Types.hh"

#include <ClanLib/display.h>

// This is a temporary way to declare different constants. Maybe we
// should do somekind of resource manager? Do we have time?

/**
 * The value of pi used in physics/graphics calculations
 */
const float KG_PI = 3.14159265;

/**
 * Random generator seed to use for terrain generator
 */
const int TERRAIN_RANDOM_SEED = 1337;

/**
 * Terrain size, equal to physics simulation size
 */
const PixelDimension TERRAIN_WIDTH = 1000;
const PixelDimension TERRAIN_HEIGHT = 800;

/** Engine timeout, this determines our minimum tick rate */
const TimeMS ENGINE_TIMEOUT_MS = 10;

/** Physics tick interval */
const TimeMS PHYSICS_TICK_MS = 10;

/** Input handling keyboard poll interval */
const TimeMS INPUT_POLL_INTERVAL = 10;

/** How long to block INPUT_FLAG_NOREPEAT for */
const TimeMS INPUT_REPEAT_DELAY = 250;

/**
 * The force of gravity on objects, exerted on the Y axis
 */
const float MAP_GRAVITY = 1500.0;

// Player properties
const float PLAYER_MASS = 10.0;
const float PLAYER_MOVE_FORCE = 1100.0;
const float PLAYER_MIN_SPEED = 10.0;
const float PLAYER_JUMP_MIN_DISTANCE = 5.0;
const float PLAYER_AIM_MIN = -3*KG_PI/8; 
const float PLAYER_AIM_MAX = KG_PI/2;
const float PLAYER_INITIAL_X = 400.0;
const float PLAYER_INITIAL_Y = 300.0;
const float PLAYER_CROSSHAIR_DISTANCE = 20.0;
const float PLAYER_CROSSHAIR_WIDTH = 4;
const float CROSSHAIR_ANGLE_SPEED = PI/2000;

const float PLAYER_MAX_SPEED = 43;
const float PLAYER_WALK_SPEED = 33;

const float PLAYER_COLLISION_ELASTICITY = 0.25; // TODO: This could be
                                        // different for different
                                        // objects
const float PLAYER_RADIUS = 10;

/** What size of hole to dig */
const float PLAYER_DIG_RADIUS = 15;

/** Player's initial health */
const Health PLAYER_HEALTH = 100;

/** How long to wait after dying to respawn */
const TimeMS PLAYER_RESPAWN_DELAY = 2500;

/*
 * Projectiles
 */

// object mass...
const float PROJECTILE_MASS = 10.0;

// how far away from the player the projectile spawns
const float PROJECTILE_START_DISTANCE = 10.0;

/*
 * @name Rope
 * @{
 */

/** How much to grow the rope length by on every ROPE_UP/DOWN */
const float ROPE_GROWTH_RATE = 5;

/** The force that the rope exerts on the player when the length is too long */
const float ROPE_FORCE = 3500;

/** Same as player mass...? */
const float ROPE_MASS = 10.0;

/** Initial rope length... this should probably be a bit more dynamic? */
const float ROPE_LENGTH = 100.0;

/** Initial velocity of the rope when thrown */
const float ROPE_VELOCITY = 500;

/**
 * Rope colors, it should alternate between these two
 */
const CL_Color ROPE_COLOR_LIGHT = CL_Color(198, 100, 2);
const CL_Color ROPE_COLOR_DARK = CL_Color(159, 79, 1);

// @}

// Graphical properties
const CL_Color COLOR_EMPTY(86, 41, 0);
const CL_Color COLOR_DIRT(144, 82, 23);
const CL_Color COLOR_ROCK(132, 136, 135);

// graphics params
const std::string GRAPHICS_WINDOW_TITLE = (std::string() + PROJECT_LONG_NAME + " : Version " + PROJECT_VERSION);
const uint32_t GRAPHICS_RESOLUTION_WIDTH = 800;
const uint32_t GRAPHICS_RESOLUTION_HEIGHT = 600;
const uint16_t GRAPHICS_UPDATE_INTERVAL_MS = 20;
const bool GRAPHICS_FULLSCREEN = false;

/**
 * Number of pixels between lines
 */
const PixelDimension GRAPHICS_INFO_TEXT_LINE_OFFSET = 5;

// Filesystem paths
const std::string PLAYER_SKIN_PATH = (PROJECT_DATA_DIR "/skin.png");
const std::string RESOURCE_XML_PATH = (PROJECT_DATA_DIR "/resources.xml");

#endif