src/rail_type.h
author translators
Mon, 08 Dec 2008 16:29:36 +0000
changeset 10411 4c9d49e5589a
parent 8263 2b3e64c5e680
permissions -rw-r--r--
(svn r14662) -Update: WebTranslator2 update to 2008-12-08 16:28:15
frisian - 216 fixed, 14 changed by Frysl?n Boppe (230)
hebrew - 109 fixed, 2 changed by ybungalobill (111)
hungarian - 1 changed by oklmernok (1)
indonesian - 115 fixed by adjayanto (59), fanioz (56)
lithuanian - 24 fixed by Enternald (24)
malay - 41 fixed by Syed (41)
norwegian_nynorsk - 72 fixed by Thor (72)
turkish - 3 changed by Emin (3)
8101
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
     1
/* $Id$ */
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
     2
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
     3
/** @file rail_type.h The different types of rail */
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
     4
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
     5
#ifndef RAIL_TYPE_H
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
     6
#define RAIL_TYPE_H
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
     7
8263
2b3e64c5e680 (svn r11827) -Codechange: do not include enum_type.hpp unnecessary.
rubidium
parents: 8236
diff changeset
     8
#include "core/enum_type.hpp"
2b3e64c5e680 (svn r11827) -Codechange: do not include enum_type.hpp unnecessary.
rubidium
parents: 8236
diff changeset
     9
8101
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    10
/**
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    11
 * Enumeration for all possible railtypes.
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    12
 *
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    13
 * This enumeration defines all 4 possible railtypes.
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    14
 */
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    15
enum RailType {
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    16
	RAILTYPE_BEGIN    = 0,          ///< Used for iterations
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    17
	RAILTYPE_RAIL     = 0,          ///< Standard non-electric rails
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    18
	RAILTYPE_ELECTRIC = 1,          ///< Electric rails
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    19
	RAILTYPE_MONO     = 2,          ///< Monorail
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    20
	RAILTYPE_MAGLEV   = 3,          ///< Maglev
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    21
	RAILTYPE_END,                   ///< Used for iterations
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    22
	INVALID_RAILTYPE  = 0xFF        ///< Flag for invalid railtype
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    23
};
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    24
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    25
/** Allow incrementing of Track variables */
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    26
DECLARE_POSTFIX_INCREMENT(RailType);
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    27
/** Define basic enum properties */
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    28
template <> struct EnumPropsT<RailType> : MakeEnumPropsT<RailType, byte, RAILTYPE_BEGIN, RAILTYPE_END, INVALID_RAILTYPE> {};
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    29
typedef TinyEnumT<RailType> RailTypeByte;
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    30
8236
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    31
/**
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    32
 * The different roadtypes we support, but then a bitmask of them
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    33
 */
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    34
enum RailTypes {
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    35
	RAILTYPES_NONE     = 0,                      ///< No rail types
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    36
	RAILTYPES_RAIL     = 1 << RAILTYPE_RAIL,     ///< Non-electrified rails
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    37
	RAILTYPES_ELECTRIC = 1 << RAILTYPE_ELECTRIC, ///< Electrified rails
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    38
	RAILTYPES_MONO     = 1 << RAILTYPE_MONO,     ///< Monorail!
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    39
	RAILTYPES_MAGLEV   = 1 << RAILTYPE_MAGLEV,   ///< Ever fast maglev
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    40
	RAILTYPES_ALL      = RAILTYPES_RAIL | RAILTYPES_ELECTRIC | RAILTYPES_MONO | RAILTYPES_MAGLEV, ///< All of them
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    41
	RAILTYPES_END,                               ///< Used for iterations?
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    42
	INVALID_RAILTYPES  = 0xFF                    ///< Invalid railtypes
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    43
};
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    44
DECLARE_ENUM_AS_BIT_SET(RailTypes);
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    45
template <> struct EnumPropsT<RailTypes> : MakeEnumPropsT<RailTypes, byte, RAILTYPES_NONE, RAILTYPES_END, INVALID_RAILTYPES> {};
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    46
typedef TinyEnumT<RailTypes> RailTypesByte;
8a5dd0b42e47 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8101
diff changeset
    47
8101
d5357bde8cab (svn r11662) -Codechange: move some rail types/related functions around.
rubidium
parents:
diff changeset
    48
#endif /* RAIL_TYPE_H */