project_files/frontlib/hwconsts.h
author unc0rr
Tue, 20 Nov 2012 00:10:12 +0400
changeset 8070 66bc20d089fc
parent 8062 abbcdf73327a
child 8132 f68b43cf510f
child 8260 83d85e32c713
permissions -rw-r--r--
Okay, remove previous request only if it has same parent as this one. Fixes the last note of previous commit (which was nearly impossible to hit, but whatever, just cleaning implementation)
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
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
     3
 * Copyright (c) 2004-2012 Andrey Korotaev <unC0Rr@gmail.com>
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
7275
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    44
// Used for sending scripts to the engine
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?
7275
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    50
/* A merge of mikade/bugq colours w/ a bit of channel feedback */
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    51
#define HW_TEAMCOLOR_ARRAY  { UINT32_C(0xffff0204), /* red    */ \
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    52
                              UINT32_C(0xff4980c1), /* blue   */ \
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    53
                              UINT32_C(0xff1de6ba), /* teal   */ \
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    54
                              UINT32_C(0xffb541ef), /* purple */ \
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    55
                              UINT32_C(0xffe55bb0), /* pink   */ \
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    56
                              UINT32_C(0xff20bf00), /* green  */ \
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    57
                              UINT32_C(0xfffe8b0e), /* orange */ \
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    58
                              UINT32_C(0xff5f3605), /* brown  */ \
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    59
                              UINT32_C(0xffffff01), /* yellow */ \
15f722e0b96f frontlib: Getting there :) Added commandline client for testing
Medo <smaxein@googlemail.com>
parents: 7269
diff changeset
    60
                              /* add new colors here */ \
7479
c8c552ee3acb frontlib: Added functions to query important constants from the library
Medo <smaxein@googlemail.com>
parents: 7275
diff changeset
    61
                              0 } /* Keep this 0 at the end */
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
7497
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    86
/*
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 {
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    92
    const char *name;				// A name identifying this setting (used as key in the schemes file)
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
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)
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    94
    const bool maxMeansInfinity;	// If true, send a very high number to the engine if the setting is equal to its maximum
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    95
    const bool times1000;			// If true (for time-based settings), multiply the setting by 1000 before sending it to the engine.
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    96
    const int min;					// The smallest allowed value
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    97
    const int max;					// The highest allowed value
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
    98
    const int def;					// The default value
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 {
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   102
    const char *name;				// A name identifying this mod (used as key in the schemes file)
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
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
7e1d72fc03c7 frontlib:
Medo <smaxein@googlemail.com>
parents: 7479
diff changeset
   104
    								// for this particular mod.
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