Files @ r15577:a61e44bed2f3
Branch filter:

Location: cpp/openttd-patchpack/source/src/ai/api/ai_waypoint.hpp - annotation

rubidium
(svn r20247) -Fix: when it is known the loading an old savegame is going to fail, bail out immediately (using an exception) instead of going on until e.g. the expected number of byte is read
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r12768:980ae0491352
r12768:980ae0491352
r12768:980ae0491352
r12768:980ae0491352
r12768:980ae0491352
r12768:980ae0491352
r12768:980ae0491352
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r12561:9dd086b8fc21
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r12561:9dd086b8fc21
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r12094:b6fd573b163f
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r14134:cdf3a9d02f8d
r14134:cdf3a9d02f8d
r14134:cdf3a9d02f8d
r14134:cdf3a9d02f8d
r14134:cdf3a9d02f8d
r14134:cdf3a9d02f8d
r14134:cdf3a9d02f8d
r14134:cdf3a9d02f8d
r14134:cdf3a9d02f8d
r15136:a3e22ac5b38a
r14134:cdf3a9d02f8d
r14134:cdf3a9d02f8d
r14134:cdf3a9d02f8d
r14134:cdf3a9d02f8d
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r12561:9dd086b8fc21
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r12561:9dd086b8fc21
r12561:9dd086b8fc21
r12561:9dd086b8fc21
r12561:9dd086b8fc21
r11169:8ceeaab16ab6
r12561:9dd086b8fc21
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r14167:e663f87c45ea
r11169:8ceeaab16ab6
r11169:8ceeaab16ab6
r14900:c679fdaeebe6
r14167:e663f87c45ea
r11169:8ceeaab16ab6
/* $Id$ */

/*
 * 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 <http://www.gnu.org/licenses/>.
 */

/** @file ai_waypoint.hpp Everything to query and build waypoints. */

#ifndef AI_WAYPOINT_HPP
#define AI_WAYPOINT_HPP

#include "ai_object.hpp"
#include "ai_error.hpp"
#include "ai_basestation.hpp"

/**
 * Class that handles all waypoint related functions.
 */
class AIWaypoint : public AIBaseStation {
public:
	static const char *GetClassName() { return "AIWaypoint"; }

	/**
	 * Type of waypoints known in the game.
	 */
	enum WaypointType {
		/* Values are important, as they represent the internal state of the game. */
		WAYPOINT_RAIL      = 0x01, //!< Rail waypoint
		WAYPOINT_BUOY      = 0x10, //!< Buoy
		WAYPOINT_ANY       = 0x11, //!< All waypoint types
	};

	/**
	 * All waypoint related error messages.
	 */
	enum ErrorMessages {
		/** Base for waypoint related errors */
		ERR_WAYPOINT_BASE = AIError::ERR_CAT_WAYPOINT << AIError::ERR_CAT_BIT_SIZE,

		/** The waypoint is build too close to another waypoint */
		ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT, // [STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT]

		/** The waypoint would join more than one existing waypoint together. */
		ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS,    // [STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING]
	};

	/**
	 * Checks whether the given waypoint is valid and owned by you.
	 * @param waypoint_id The waypoint to check.
	 * @return True if and only if the waypoint is valid.
	 */
	static bool IsValidWaypoint(StationID waypoint_id);

	/**
	 * Get the StationID of a tile.
	 * @param tile The tile to find the StationID of.
	 * @pre AIRail::IsRailWaypointTile(tile).
	 * @return StationID of the waypoint.
	 */
	static StationID GetWaypointID(TileIndex tile);

	/**
	 * Check if any part of the waypoint contains a waypoint of the type waypoint_type
	 * @param waypoint_id The waypoint to look at.
	 * @param waypoint_type The WaypointType to look for.
	 * @return True if the waypoint has a waypoint part of the type waypoint_type.
	 */
	static bool HasWaypointType(StationID waypoint_id, WaypointType waypoint_type);
};

DECLARE_ENUM_AS_BIT_SET(AIWaypoint::WaypointType)

#endif /* AI_WAYPOINT_HPP */