summaryrefslogtreecommitdiffstats
path: root/src/common/global.h
blob: b41ea5374cb0f547e2e29f20eb5e4a79df6671ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
/*
 * 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
};

/**
 * \enum InputSlot
 * \brief Available slots for input bindings
 */
enum InputSlot
{
    INPUT_SLOT_LEFT    = 0,
    INPUT_SLOT_RIGHT   = 1,
    INPUT_SLOT_UP      = 2,
    INPUT_SLOT_DOWN    = 3,
    INPUT_SLOT_GUP     = 4,
    INPUT_SLOT_GDOWN   = 5,
    INPUT_SLOT_CAMERA  = 6,
    INPUT_SLOT_DESEL   = 7,
    INPUT_SLOT_ACTION  = 8,
    INPUT_SLOT_NEAR    = 9,
    INPUT_SLOT_AWAY    = 10,
    INPUT_SLOT_NEXT    = 11,
    INPUT_SLOT_HUMAN   = 12,
    INPUT_SLOT_QUIT    = 13,
    INPUT_SLOT_HELP    = 14,
    INPUT_SLOT_PROG    = 15,
    INPUT_SLOT_VISIT   = 16,
    INPUT_SLOT_SPEED10 = 17,
    INPUT_SLOT_SPEED15 = 18,
    INPUT_SLOT_SPEED20 = 19,
    INPUT_SLOT_SPEED30 = 20,
    INPUT_SLOT_AIMUP   = 21,
    INPUT_SLOT_AIMDOWN = 22,
    INPUT_SLOT_CBOT    = 23,

    INPUT_SLOT_MAX
};

/**
 * \enum JoyAxisSlot
 * \brief Slots for joystick axes inputs
 */
enum JoyAxisSlot
{
    JOY_AXIS_SLOT_X,
    JOY_AXIS_SLOT_Y,
    JOY_AXIS_SLOT_Z,

    JOY_AXIS_SLOT_MAX
};


// 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