project_files/frontlib/hwconsts.h
author koda
Tue, 04 Jun 2013 23:48:44 +0200
branchwebgl
changeset 9133 a269fe7090a0
parent 9127 e350500c4edb
child 10015 4feced261c68
permissions -rw-r--r--
actually everything is CLANG'd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8330
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
     1
/*
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
     2
 * Hedgewars, a free turn based strategy game
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
     3
 * Copyright (c) 2004-2012 Andrey Korotaev <unC0Rr@gmail.com>
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
     4
 * Copyright (c) 2012 Simeon Maxein <smaxein@googlemail.com>
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
     5
 *
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
     7
 * it under the terms of the GNU General Public License as published by
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
     8
 * the Free Software Foundation; version 2 of the License
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
     9
 *
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    13
 * GNU General Public License for more details.
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    14
 *
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    15
 * You should have received a copy of the GNU General Public License
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    16
 * along with this program; if not, write to the Free Software
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    18
 */
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    19
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    20
/**
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    21
 * This file contains important constants which might need to be changed to adapt to
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    22
 * changes in the engine or protocols.
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    23
 *
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    24
 * It also contains getter functions for some constants (in particular for constants
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    25
 * that are important for the layout of data structures), so that client code can
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    26
 * query the constants that the library was built with.
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    27
 */
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    28
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    29
#ifndef HWCONSTS_H_
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    30
#define HWCONSTS_H_
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    31
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    32
#include <inttypes.h>
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    33
#include <stddef.h>
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    34
#include <stdbool.h>
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    35
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    36
#define HEDGEHOGS_PER_TEAM 8
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    37
#define DEFAULT_HEDGEHOG_COUNT 4
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    38
#define DEFAULT_COLOR_INDEX 0
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    39
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    40
#define NETGAME_DEFAULT_PORT 46631
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    41
#define PROTOCOL_VERSION 42
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    42
#define MIN_SERVER_VERSION 1
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    43
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    44
//! Used for sending scripts to the engine
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    45
#define MULTIPLAYER_SCRIPT_PATH "Scripts/Multiplayer/"
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    46
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    47
#define WEAPONS_COUNT 56
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    48
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    49
// TODO allow frontend to override these?
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    50
/*! A merge of mikade/bugq colours w/ a bit of channel feedback */
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    51
#define HW_TEAMCOLOR_ARRAY  { UINT32_C(0xffff0204), /*! red    */ \
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    52
                              UINT32_C(0xff4980c1), /*! blue   */ \
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    53
                              UINT32_C(0xff1de6ba), /*! teal   */ \
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    54
                              UINT32_C(0xffb541ef), /*! purple */ \
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    55
                              UINT32_C(0xffe55bb0), /*! pink   */ \
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    56
                              UINT32_C(0xff20bf00), /*! green  */ \
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    57
                              UINT32_C(0xfffe8b0e), /*! orange */ \
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    58
                              UINT32_C(0xff5f3605), /*! brown  */ \
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    59
                              UINT32_C(0xffffff01), /*! yellow */ \
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    60
                              /*! add new colors here */ \
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    61
                              0 } /*! Keep this 0 at the end */
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    62
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    63
extern const size_t flib_teamcolor_count;
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    64
extern const uint32_t flib_teamcolors[];
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    65
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    66
/**
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    67
 * Returns the team color (ARGB) corresponding to the color index (0 if index out of bounds)
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    68
 */
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    69
uint32_t flib_get_teamcolor(int colorIndex);
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    70
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    71
/**
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    72
 * Returns the number of team colors (i.e. the length of the flib_teamcolors array)
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    73
 */
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    74
int flib_get_teamcolor_count();
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    75
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    76
/**
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    77
 * Returns the HEDGEHOGS_PER_TEAM constant
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    78
 */
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    79
int flib_get_hedgehogs_per_team();
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    80
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    81
/**
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    82
 * Returns the WEAPONS_COUNT constant
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    83
 */
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    84
int flib_get_weapons_count();
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    85
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    86
/*!
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    87
 * These structs define the meaning of values in the flib_scheme struct, i.e. their correspondence to
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    88
 * ini settings, engine commands and positions in the network protocol (the last is encoded in the
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    89
 * order of settings/mods).
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    90
 */
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    91
typedef struct {
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    92
    const char *name;               //!< A name identifying this setting (used as key in the schemes file)
aaefa587e277 update branch with default
koda
parents: 8262
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)
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    94
    const bool maxMeansInfinity;    //!< If true, send a very high number to the engine if the setting is equal to its maximum
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    95
    const bool times1000;           //!< If true (for time-based settings), multiply the setting by 1000 before sending it to the engine.
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    96
    const int min;                  //!< The smallest allowed value
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    97
    const int max;                  //!< The highest allowed value
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    98
    const int def;                  //!< The default value
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
    99
} flib_metascheme_setting;
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   100
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   101
typedef struct {
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   102
    const char *name;               //!< A name identifying this mod (used as key in the schemes file)
aaefa587e277 update branch with default
koda
parents: 8262
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
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   104
                                    //! for this particular mod.
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   105
} flib_metascheme_mod;
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   106
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   107
typedef struct {
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   108
    const int settingCount;
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   109
    const int modCount;
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   110
    const flib_metascheme_setting *settings;
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   111
    const flib_metascheme_mod *mods;
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   112
} flib_metascheme;
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   113
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   114
extern const flib_metascheme flib_meta;
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   115
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   116
const flib_metascheme *flib_get_metascheme();
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   117
aaefa587e277 update branch with default
koda
parents: 8262
diff changeset
   118
#endif