Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef SIGNAL_TYPE_H
00013 #define SIGNAL_TYPE_H
00014
00015 #include "core/enum_type.hpp"
00016 #include "track_type.h"
00017 #include "tile_type.h"
00018
00020 enum SignalVariant {
00021 SIG_ELECTRIC = 0,
00022 SIG_SEMAPHORE = 1
00023 };
00024
00026 enum SignalType {
00027 SIGTYPE_NORMAL = 0,
00028 SIGTYPE_ENTRY = 1,
00029 SIGTYPE_EXIT = 2,
00030 SIGTYPE_COMBO = 3,
00031 SIGTYPE_PBS = 4,
00032 SIGTYPE_PBS_ONEWAY = 5,
00033 SIGTYPE_PROG = 6,
00034 SIGTYPE_SPEED = 7,
00035
00036 SIGTYPE_END,
00037 SIGTYPE_LAST = SIGTYPE_SPEED,
00038 SIGTYPE_FIRST_PBS_SPRITE = SIGTYPE_PBS
00039 };
00041 template <> struct EnumPropsT<SignalType> : MakeEnumPropsT<SignalType, byte, SIGTYPE_NORMAL, SIGTYPE_END, SIGTYPE_END, 3> {};
00042
00048 struct SignalReference {
00049 inline SignalReference(TileIndex t, Track tr) : tile(t), track(tr) {}
00050 inline bool operator<(const SignalReference& o) const { return tile < o.tile || (tile == o.tile && track < o.track); }
00051 inline bool operator==(const SignalReference& o) const { return tile == o.tile && track == o.track; }
00052 inline bool operator!=(const SignalReference& o) const { return tile != o.tile || track != o.track; }
00053
00054 TileIndex tile;
00055 Track track;
00056 };
00057
00058 #endif