240 lines
12 KiB
C
240 lines
12 KiB
C
/*
|
||
* 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
|
||
|