project_files/frontlib/hwconsts.h
author koda
Wed, 12 Jun 2013 09:49:46 +0200
changeset 9207 16373565692a
parent 9080 9b42757d7e71
child 9127 e350500c4edb
child 9998 736015b847e3
permissions -rw-r--r--
oops, haskell uses gcc to link, correctly pass flags
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7275
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
     1
/*
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
     2
 * Hedgewars, a free turn based strategy game
9080
9b42757d7e71 bump copyright year for Andrey entries
unc0rr
parents: 8262
diff changeset
     3
 * Copyright (c) 2004-2013 Andrey Korotaev <unC0Rr@gmail.com>
7275
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
     4
 * Copyright (c) 2012 Simeon Maxein <smaxein@googlemail.com>
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
     5
 *
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
     7
 * it under the terms of the GNU General Public License as published by
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
     8
 * the Free Software Foundation; version 2 of the License
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
     9
 *
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    13
 * GNU General Public License for more details.
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    14
 *
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    15
 * You should have received a copy of the GNU General Public License
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    16
 * along with this program; if not, write to the Free Software
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    18
 */
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    19
7177
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
    20
/**
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
    21
 * This file contains important constants which might need to be changed to adapt to
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
    22
 * changes in the engine or protocols.
7479
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    23
 *
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    24
 * It also contains getter functions for some constants (in particular for constants
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    25
 * that are important for the layout of data structures), so that client code can
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    26
 * query the constants that the library was built with.
7177
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
    27
 */
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
    28
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
    29
#ifndef HWCONSTS_H_
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
    30
#define HWCONSTS_H_
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
    31
7275
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    32
#include <inttypes.h>
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    33
#include <stddef.h>
7497
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    34
#include <stdbool.h>
7275
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    35
7177
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
    36
#define HEDGEHOGS_PER_TEAM 8
7566
57d343ee382f frontlib: Return more filled-in team objects
Medo <smaxein@googlemail.com>
parents: 7497
diff changeset
    37
#define DEFAULT_HEDGEHOG_COUNT 4
57d343ee382f frontlib: Return more filled-in team objects
Medo <smaxein@googlemail.com>
parents: 7497
diff changeset
    38
#define DEFAULT_COLOR_INDEX 0
57d343ee382f frontlib: Return more filled-in team objects
Medo <smaxein@googlemail.com>
parents: 7497
diff changeset
    39
7177
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
    40
#define NETGAME_DEFAULT_PORT 46631
7275
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    41
#define PROTOCOL_VERSION 42
7234
613998625a3c frontlib: Started work on the server connection code
Medo <smaxein@googlemail.com>
parents: 7230
diff changeset
    42
#define MIN_SERVER_VERSION 1
7177
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
    43
8260
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    44
//! Used for sending scripts to the engine
7275
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    45
#define MULTIPLAYER_SCRIPT_PATH "Scripts/Multiplayer/"
7177
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
    46
8062
abbcdf73327a allow the engine to use physfs on android too
Xeli
parents: 7689
diff changeset
    47
#define WEAPONS_COUNT 56
7177
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
    48
7689
855eeee4166f frontlib: Add/change comments to correspond to recent changes in QtFrontend and server
Medo <smaxein@googlemail.com>
parents: 7566
diff changeset
    49
// TODO allow frontend to override these?
8260
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    50
/*! A merge of mikade/bugq colours w/ a bit of channel feedback */
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    51
#define HW_TEAMCOLOR_ARRAY  { UINT32_C(0xffff0204), /*! red    */ \
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    52
                              UINT32_C(0xff4980c1), /*! blue   */ \
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    53
                              UINT32_C(0xff1de6ba), /*! teal   */ \
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    54
                              UINT32_C(0xffb541ef), /*! purple */ \
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    55
                              UINT32_C(0xffe55bb0), /*! pink   */ \
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    56
                              UINT32_C(0xff20bf00), /*! green  */ \
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    57
                              UINT32_C(0xfffe8b0e), /*! orange */ \
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    58
                              UINT32_C(0xff5f3605), /*! brown  */ \
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    59
                              UINT32_C(0xffffff01), /*! yellow */ \
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    60
                              /*! add new colors here */ \
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    61
                              0 } /*! Keep this 0 at the end */
7479
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    62
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    63
extern const size_t flib_teamcolor_count;
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    64
extern const uint32_t flib_teamcolors[];
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    65
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    66
/**
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    67
 * Returns the team color (ARGB) corresponding to the color index (0 if index out of bounds)
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    68
 */
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    69
uint32_t flib_get_teamcolor(int colorIndex);
7275
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    70
7479
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    71
/**
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    72
 * Returns the number of team colors (i.e. the length of the flib_teamcolors array)
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    73
 */
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    74
int flib_get_teamcolor_count();
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    75
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    76
/**
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    77
 * Returns the HEDGEHOGS_PER_TEAM constant
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    78
 */
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    79
int flib_get_hedgehogs_per_team();
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    80
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    81
/**
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    82
 * Returns the WEAPONS_COUNT constant
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    83
 */
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    84
int flib_get_weapons_count();
7275
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    85
8260
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
    86
/*!
7497
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    87
 * These structs define the meaning of values in the flib_scheme struct, i.e. their correspondence to
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    88
 * ini settings, engine commands and positions in the network protocol (the last is encoded in the
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    89
 * order of settings/mods).
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    90
 */
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    91
typedef struct {
8262
f01702bfb764 fix some comments and add basic doxygen file
sheepluva
parents: 8260
diff changeset
    92
    const char *name;				//!< A name identifying this setting (used as key in the schemes file)
f01702bfb764 fix some comments and add basic doxygen file
sheepluva
parents: 8260
diff changeset
    93
    const char *engineCommand;		//!< The command needed to send the setting to the engine. May be null if the setting is not sent to the engine (for the "health" setting)
f01702bfb764 fix some comments and add basic doxygen file
sheepluva
parents: 8260
diff changeset
    94
    const bool maxMeansInfinity;	//!< If true, send a very high number to the engine if the setting is equal to its maximum
f01702bfb764 fix some comments and add basic doxygen file
sheepluva
parents: 8260
diff changeset
    95
    const bool times1000;			//!< If true (for time-based settings), multiply the setting by 1000 before sending it to the engine.
f01702bfb764 fix some comments and add basic doxygen file
sheepluva
parents: 8260
diff changeset
    96
    const int min;					//!< The smallest allowed value
f01702bfb764 fix some comments and add basic doxygen file
sheepluva
parents: 8260
diff changeset
    97
    const int max;					//!< The highest allowed value
f01702bfb764 fix some comments and add basic doxygen file
sheepluva
parents: 8260
diff changeset
    98
    const int def;					//!< The default value
7497
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    99
} flib_metascheme_setting;
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   100
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   101
typedef struct {
8262
f01702bfb764 fix some comments and add basic doxygen file
sheepluva
parents: 8260
diff changeset
   102
    const char *name;				//!< A name identifying this mod (used as key in the schemes file)
f01702bfb764 fix some comments and add basic doxygen file
sheepluva
parents: 8260
diff changeset
   103
    const int bitmaskIndex;			//!< Mods are sent to the engine in a single integer, this field describes which bit of that integer is used
8260
83d85e32c713 GCI2012: Corrected headers for generate documentation (doxygen)
Mrowqa
parents: 8062
diff changeset
   104
    								//! for this particular mod.
7497
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   105
} flib_metascheme_mod;
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   106
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   107
typedef struct {
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   108
	const int settingCount;
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   109
	const int modCount;
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   110
	const flib_metascheme_setting *settings;
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   111
	const flib_metascheme_mod *mods;
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   112
} flib_metascheme;
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   113
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   114
extern const flib_metascheme flib_meta;
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   115
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   116
const flib_metascheme *flib_get_metascheme();
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   117
7177
bf6cf4dd847a Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
diff changeset
   118
#endif