colobot/src/common/global.h

240 lines
12 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* This file is part of the Colobot: Gold Edition source code
* Copyright (C) 2001-2014, Daniel Roux, EPSITEC SA & TerranovaTeam
* http://epsiteс.ch; http://colobot.info; http://github.com/colobot
*
* 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 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://gnu.org/licenses
*/
/**
* \file common/global.h
* \brief Some common, global definitions
*/
#pragma once
/**
* \enum Error
* \brief Type of error or info message
*/
enum Error
{
ERR_OK = 0, //! < ok
ERR_GENERIC = 1, //! < any error
ERR_CONTINUE = 2, //! < continues
ERR_STOP = 3, //! < stops
ERR_CMD = 4, //! < unknown command
ERR_MANIP_VEH = 100, //! < inappropriate vehicle
ERR_MANIP_FLY = 101, //! < impossible in flight
ERR_MANIP_BUSY = 102, //! < taking: hands already occupied
ERR_MANIP_NIL = 103, //! < taking: nothing has to take
ERR_MANIP_MOTOR = 105, //! < busy: impossible to move
ERR_MANIP_OCC = 106, //! < busy: location already occupied
ERR_MANIP_FRIEND = 107, //! < no other vehicle
ERR_MANIP_RADIO = 108, //! < impossible because radioactive
ERR_MANIP_WATER = 109, //! < not possible under water
ERR_MANIP_EMPTY = 110, //! < nothing to deposit
ERR_BUILD_FLY = 120, //! < not possible in flight
ERR_BUILD_WATER = 121, //! < not possible under water
ERR_BUILD_ENERGY = 122, //! < not enough energy
ERR_BUILD_METALAWAY = 123, //! < lack of metal (too far)
ERR_BUILD_METALNEAR = 124, //! < lack of metal (too close)
ERR_BUILD_METALINEX = 125, //! < lack of metal
ERR_BUILD_FLAT = 126, //! < not enough flat ground
ERR_BUILD_FLATLIT = 127, //! < not enough flat ground space
ERR_BUILD_BUSY = 128, //! < location occupied
ERR_BUILD_BASE = 129, //! < too close to the rocket
ERR_BUILD_NARROW = 130, //! < buildings too close
ERR_BUILD_MOTOR = 131, //! < built: not possible in movement
ERR_BUILD_DISABLED = 132, //! < built: can not produce this object in this mission
ERR_BUILD_RESEARCH = 133, //! < built: can not produce not researched object
ERR_SEARCH_FLY = 140, //! < not possible in flight
ERR_SEARCH_VEH = 141, //! < inappropriate vehicle
ERR_SEARCH_MOTOR = 142, //! < impossible in movement
ERR_TERRA_VEH = 150, //! < inappropriate vehicle
ERR_TERRA_ENERGY = 151, //! < not enough energy
ERR_TERRA_FLOOR = 152, //! < inappropriate ground
ERR_TERRA_BUILDING = 153, //! < building too close
ERR_TERRA_OBJECT = 154, //! < object too close
ERR_FIRE_VEH = 160, //! < inappropriate vehicle
ERR_FIRE_ENERGY = 161, //! < not enough energy
ERR_FIRE_FLY = 162, //! < not possible in flight
ERR_RECOVER_VEH = 170, //! < inappropriate vehicle
ERR_RECOVER_ENERGY = 171, //! < not enough energy
ERR_RECOVER_NULL = 172, //! < lack of ruin
ERR_CONVERT_EMPTY = 180, //! < no stone was transformed
ERR_SHIELD_VEH = 190, //! < inappropriate vehicle
ERR_SHIELD_ENERGY = 191, //! < not enough energy
ERR_MOVE_IMPOSSIBLE = 200, //! < move impossible
ERR_FIND_IMPOSSIBLE = 201, //! < find impossible
ERR_GOTO_IMPOSSIBLE = 210, //! < goto impossible
ERR_GOTO_ITER = 211, //! < goto too complicated
ERR_GOTO_BUSY = 212, //! < goto destination occupied
ERR_DERRICK_NULL = 300, //! < no ore underground
ERR_STATION_NULL = 301, //! < no energy underground
ERR_TOWER_POWER = 310, //! < no battery
ERR_TOWER_ENERGY = 311, //! < more energy
ERR_RESEARCH_POWER = 320, //! < no battery
ERR_RESEARCH_ENERGY = 321, //! < more energy
ERR_RESEARCH_TYPE = 322, //! < the wrong type of battery
ERR_RESEARCH_ALREADY = 323, //! < research already done
ERR_ENERGY_NULL = 330, //! < no energy underground
ERR_ENERGY_LOW = 331, //! < not enough energy
ERR_ENERGY_EMPTY = 332, //! < lack of metal
ERR_ENERGY_BAD = 333, //! < transforms only the metal
ERR_BASE_DLOCK = 340, //! < doors locked
ERR_BASE_DHUMAN = 341, //! < you must be on spaceship
ERR_LABO_NULL = 350, //! < nothing to analyze
ERR_LABO_BAD = 351, //! < analyzes only organic ball
ERR_LABO_ALREADY = 352, //! < analysis already made
ERR_NUCLEAR_NULL = 360, //! < no energy underground
ERR_NUCLEAR_LOW = 361, //! < not enough energy
ERR_NUCLEAR_EMPTY = 362, //! < lack of uranium
ERR_NUCLEAR_BAD = 363, //! < transforms only uranium
ERR_FACTORY_NULL = 370, //! < no metal
ERR_FACTORY_NEAR = 371, //! < vehicle too close
ERR_RESET_NEAR = 380, //! < vehicle too close
ERR_INFO_NULL = 390, //! < no information terminal
ERR_VEH_VIRUS = 400, //! < vehicle infected by a virus
ERR_BAT_VIRUS = 401, //! < building infected by a virus
ERR_DESTROY_NOTFOUND = 410, //! < not found anything to destroy
ERR_WRONG_OBJ = 420, //! < inappropriate vehicle
ERR_VEH_POWER = 500, //! < no battery
ERR_VEH_ENERGY = 501, //! < more energy
ERR_FLAG_FLY = 510, //! < impossible in flight
ERR_FLAG_WATER = 511, //! < impossible during swimming
ERR_FLAG_MOTOR = 512, //! < impossible in movement
ERR_FLAG_BUSY = 513, //! < taking: already creating flag
ERR_FLAG_CREATE = 514, //! < too many flags
ERR_FLAG_PROXY = 515, //! < too close
ERR_FLAG_DELETE = 516, //! < nothing to remove
ERR_MISSION_NOTERM = 600, //! < Mission not completed
ERR_DELETEMOBILE = 700, //! < vehicle destroyed
ERR_DELETEBUILDING = 701, //! < building destroyed
ERR_TOOMANY = 702, //! < too many objects
ERR_OBLIGATORYTOKEN = 800, //! < compulsory instruction missing
ERR_PROHIBITEDTOKEN = 801, //! < instruction prohibited
ERR_AIM_IMPOSSIBLE = 900, //! < cannot aim at specified angle(s)
INFO_FIRST = 10000, //! < first information
INFO_BUILD = 10001, //! < construction builded
INFO_CONVERT = 10002, //! < metal available
INFO_RESEARCH = 10003, //! < search ended
INFO_FACTORY = 10004, //! < vehicle manufactured
INFO_LABO = 10005, //! < analysis ended
INFO_ENERGY = 10006, //! < battery available
INFO_NUCLEAR = 10007, //! < nuclear battery available
INFO_FINDING = 10008, //! < nuclear battery available
INFO_MARKPOWER = 10020, //! < location for station found
INFO_MARKURANIUM = 10021, //! < location for derrick found
INFO_MARKSTONE = 10022, //! < location for derrick found
INFO_MARKKEYa = 10023, //! < location for derrick found
INFO_MARKKEYb = 10024, //! < location for derrick found
INFO_MARKKEYc = 10025, //! < location for derrick found
INFO_MARKKEYd = 10026, //! < location for derrick found
INFO_RESEARCHTANK = 10030, //! < research ended
INFO_RESEARCHFLY = 10031, //! < research ended
INFO_RESEARCHTHUMP = 10032, //! < research ended
INFO_RESEARCHCANON = 10033, //! < research ended
INFO_RESEARCHTOWER = 10034, //! < research ended
INFO_RESEARCHPHAZER = 10035, //! < research ended
INFO_RESEARCHSHIELD = 10036, //! < research ended
INFO_RESEARCHATOMIC = 10037, //! < research ended
INFO_WIN = 10040, //! < win
INFO_LOST = 10041, //! < lost
INFO_LOSTq = 10042, //! < lost immediately
INFO_WRITEOK = 10043, //! < record done
INFO_DELETEPATH = 10050, //! < way mark deleted
INFO_DELETEMOTHER = 10100, //! < insect killed
INFO_DELETEANT = 10101, //! < insect killed
INFO_DELETEBEE = 10102, //! < insect killed
INFO_DELETEWORM = 10103, //! < insect killed
INFO_DELETESPIDER = 10104, //! < insect killed
INFO_BEGINSATCOM = 10105, //! < use your SatCom
ERR_MAX //! < number of values
};
/**
* \enum Language
* \brief Application language
*/
enum Language
{
LANGUAGE_ENV = -1,
LANGUAGE_ENGLISH = 0,
LANGUAGE_FRENCH = 1,
LANGUAGE_GERMAN = 2,
LANGUAGE_POLISH = 3,
LANGUAGE_RUSSIAN = 4
};
/**
* \enum BuildType
* \brief Construction actions (buildings, etc.) available to user
*
* TODO: refactor
*/
enum BuildType
{
BUILD_FACTORY = (1<<0), //! < factory
BUILD_DERRICK = (1<<1), //! < derrick
BUILD_CONVERT = (1<<2), //! < converter
BUILD_RADAR = (1<<3), //! < radar
BUILD_ENERGY = (1<<4), //! < factory of cells
BUILD_NUCLEAR = (1<<5), //! < nuclear power plant
BUILD_STATION = (1<<6), //! < base station
BUILD_REPAIR = (1<<7), //! < repair center
BUILD_TOWER = (1<<8), //! < defense tower
BUILD_RESEARCH = (1<<9), //! < research center
BUILD_LABO = (1<<10), //! < laboratory
BUILD_PARA = (1<<11), //! < lightning protection
BUILD_INFO = (1<<12), //! < information terminal
BUILD_DESTROYER = (1<<13), //! < Destroyer
BUILD_GFLAT = (1<<16), //! < flat floor
BUILD_FLAG = (1<<17) //! < puts / removes colored flag
};
/**
* \enum ResearchType
* \brief Research actions available to user
*/
enum ResearchType
{
RESEARCH_TANK = (1<<0), //! < caterpillars
RESEARCH_FLY = (1<<1), //! < wings
RESEARCH_CANON = (1<<2), //! < cannon
RESEARCH_TOWER = (1<<3), //! < defense tower
RESEARCH_ATOMIC = (1<<4), //! < nuclear
RESEARCH_THUMP = (1<<5), //! < thumper
RESEARCH_SHIELD = (1<<6), //! < shield
RESEARCH_PHAZER = (1<<7), //! < phazer gun
RESEARCH_iPAW = (1<<8), //! < legs of insects
RESEARCH_iGUN = (1<<9), //! < cannon of insects
RESEARCH_RECYCLER = (1<<10), //! < recycler
RESEARCH_SUBM = (1<<11), //! < submarine
RESEARCH_SNIFFER = (1<<12) //! < sniffer
};
// TODO: move to CRobotMain
extern long g_id; // unique identifier
extern int g_build; // constructible buildings
extern int g_researchDone; // research done
extern long g_researchEnable; // research available
extern float g_unit; // conversion factor