/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see .
*/
/** @file track_type.h All types related to tracks */
#ifndef TRACK_TYPE_H
#define TRACK_TYPE_H
#include "core/enum_type.hpp"
/**
* These are used to specify a single track.
* Can be translated to a trackbit with TrackToTrackbit
*/
enum Track : byte {
TRACK_BEGIN = 0, ///< Used for iterations
TRACK_X = 0, ///< Track along the x-axis (north-east to south-west)
TRACK_Y = 1, ///< Track along the y-axis (north-west to south-east)
TRACK_UPPER = 2, ///< Track in the upper corner of the tile (north)
TRACK_LOWER = 3, ///< Track in the lower corner of the tile (south)
TRACK_LEFT = 4, ///< Track in the left corner of the tile (west)
TRACK_RIGHT = 5, ///< Track in the right corner of the tile (east)
TRACK_END, ///< Used for iterations
INVALID_TRACK = 0xFF, ///< Flag for an invalid track
};
/** Allow incrementing of Track variables */
DECLARE_POSTFIX_INCREMENT(Track)
/** Define basic enum properties */
template <> struct EnumPropsT