src/rail_type.h
author peter1138
Tue, 22 Jan 2008 07:27:06 +0000
changeset 8374 7a1b6c89cb89
parent 8263 2b3e64c5e680
permissions -rw-r--r--
(svn r11940) -Codechange: Store short filename once per open file instead of once per sprite cache entry. Not all file types need this, but most of the time no sprite cache entry needed it either.
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 */