diff options
author | truebrain <truebrain@openttd.org> | 2011-11-29 23:07:38 +0000 |
---|---|---|
committer | truebrain <truebrain@openttd.org> | 2011-11-29 23:07:38 +0000 |
commit | afdb67a3534f85b4efbd3327ece8137211042d7b (patch) | |
tree | b62375a3846c2089e1c6904331e8f5a3d44851ba /src/ai/api/ai_error.hpp | |
parent | 5f6dc2466318b1275e8b654a260a6c565a0ecc5c (diff) | |
download | openttd-afdb67a3534f85b4efbd3327ece8137211042d7b.tar.xz |
(svn r23354) -Codechange: move all src/ai/api/ai_*.[hc]pp files to src/script/api/script_* (Rubidium)
Diffstat (limited to 'src/ai/api/ai_error.hpp')
-rw-r--r-- | src/ai/api/ai_error.hpp | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/src/ai/api/ai_error.hpp b/src/ai/api/ai_error.hpp deleted file mode 100644 index 77f0a5ea4..000000000 --- a/src/ai/api/ai_error.hpp +++ /dev/null @@ -1,179 +0,0 @@ -/* $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_error.hpp Everything to query errors. */ - -#ifndef AI_ERROR_HPP -#define AI_ERROR_HPP - -#include "ai_object.hpp" -#include <map> - -/** - * Helper to write precondition enforcers for the AI API in an abbreviated manner. - * @param returnval The value to return on failure. - * @param condition The condition that must be obeyed. - */ -#define EnforcePrecondition(returnval, condition) \ - if (!(condition)) { \ - AIObject::SetLastError(AIError::ERR_PRECONDITION_FAILED); \ - return returnval; \ - } - -/** - * Helper to write precondition enforcers for the AI API in an abbreviated manner. - * @param returnval The value to return on failure. - * @param condition The condition that must be obeyed. - * @param error_code The error code passed to AIObject::SetLastError. - */ -#define EnforcePreconditionCustomError(returnval, condition, error_code) \ - if (!(condition)) { \ - AIObject::SetLastError(error_code); \ - return returnval; \ - } - -/** - * Class that handles all error related functions. - */ -class AIError : public AIObject { -public: - /** - * All categories errors can be divided in. - */ - enum ErrorCategories { - ERR_CAT_NONE = 0, ///< Error messages not related to any category. - ERR_CAT_GENERAL, ///< Error messages related to general things. - ERR_CAT_VEHICLE, ///< Error messages related to building / maintaining vehicles. - ERR_CAT_STATION, ///< Error messages related to building / maintaining stations. - ERR_CAT_BRIDGE, ///< Error messages related to building / removing bridges. - ERR_CAT_TUNNEL, ///< Error messages related to building / removing tunnels. - ERR_CAT_TILE, ///< Error messages related to raising / lowering and demolishing tiles. - ERR_CAT_SIGN, ///< Error messages related to building / removing signs. - ERR_CAT_RAIL, ///< Error messages related to building / maintaining rails. - ERR_CAT_ROAD, ///< Error messages related to building / maintaining roads. - ERR_CAT_ORDER, ///< Error messages related to managing orders. - ERR_CAT_MARINE, ///< Error messages related to building / removing ships, docks and channels. - ERR_CAT_WAYPOINT, ///< Error messages related to building / maintaining waypoints. - - /** - * DO NOT USE! The error bitsize determines how many errors can be stored in - * a category and what the offsets are of all categories. - */ - ERR_CAT_BIT_SIZE = 8, - }; - - /** - * All general related error messages. - */ - enum ErrorMessages { - /** Initial error value */ - ERR_NONE = ERR_CAT_NONE << ERR_CAT_BIT_SIZE, // [] - /** If an error occurred and the error wasn't mapped */ - ERR_UNKNOWN, // [] - /** If a precondition is not met */ - ERR_PRECONDITION_FAILED, // [] - /** A string supplied was too long */ - ERR_PRECONDITION_STRING_TOO_LONG, // [] - /** An error returned by a NewGRF. No possibility to get the exact error in an AI readable format */ - ERR_NEWGRF_SUPPLIED_ERROR, // [] - - /** Base for general errors */ - ERR_GENERAL_BASE = ERR_CAT_GENERAL << ERR_CAT_BIT_SIZE, - - /** Not enough cash to perform the previous action */ - ERR_NOT_ENOUGH_CASH, // [STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY] - - /** Local authority won't allow the previous action */ - ERR_LOCAL_AUTHORITY_REFUSES, // [STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS] - - /** The piece of infrastructure you tried to build is already in place */ - ERR_ALREADY_BUILT, // [STR_ERROR_ALREADY_BUILT, STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST] - - /** Area isn't clear, try to demolish the building on it */ - ERR_AREA_NOT_CLEAR, // [STR_ERROR_BUILDING_MUST_BE_DEMOLISHED, STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST, STR_ERROR_MUST_DEMOLISH_RAILROAD, STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST, STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST, STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST, STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST, STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST, STR_ERROR_BUOY_IN_THE_WAY, STR_ERROR_MUST_DEMOLISH_DOCK_FIRST, STR_ERROR_GENERIC_OBJECT_IN_THE_WAY, STR_ERROR_COMPANY_HEADQUARTERS_IN, STR_ERROR_OBJECT_IN_THE_WAY, STR_ERROR_MUST_REMOVE_ROAD_FIRST, STR_ERROR_MUST_REMOVE_RAILROAD_TRACK, STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST, STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST, STR_ERROR_EXCAVATION_WOULD_DAMAGE] - - /** Area / property is owned by another company */ - ERR_OWNED_BY_ANOTHER_COMPANY, // [STR_ERROR_AREA_IS_OWNED_BY_ANOTHER, STR_ERROR_OWNED_BY] - - /** The name given is not unique for the object type */ - ERR_NAME_IS_NOT_UNIQUE, // [STR_ERROR_NAME_MUST_BE_UNIQUE] - - /** The building you want to build requires flat land */ - ERR_FLAT_LAND_REQUIRED, // [STR_ERROR_FLAT_LAND_REQUIRED] - - /** Land is sloped in the wrong direction for this build action */ - ERR_LAND_SLOPED_WRONG, // [STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION] - - /** A vehicle is in the way */ - ERR_VEHICLE_IN_THE_WAY, // [STR_ERROR_TRAIN_IN_THE_WAY, STR_ERROR_ROAD_VEHICLE_IN_THE_WAY, STR_ERROR_SHIP_IN_THE_WAY, STR_ERROR_AIRCRAFT_IN_THE_WAY] - - /** Site is unsuitable */ - ERR_SITE_UNSUITABLE, // [STR_ERROR_SITE_UNSUITABLE] - - /** Too close to the edge of the map */ - ERR_TOO_CLOSE_TO_EDGE, // [STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP] - - /** Station is too spread out */ - ERR_STATION_TOO_SPREAD_OUT, // [STR_ERROR_STATION_TOO_SPREAD_OUT] - }; - - /** - * Check the membership of the last thrown error. - * @return The category the error belongs to. - * @note The last throw error can be aquired by calling GetLastError(). - */ - static ErrorCategories GetErrorCategory(); - - /** - * Get the last error. - * @return An ErrorMessages enum value. - */ - static AIErrorType GetLastError(); - - /** - * Get the last error in string format (for human readability). - * @return An ErrorMessage enum item, as string. - */ - static char *GetLastErrorString(); - -#ifndef EXPORT_SKIP - /** - * Get the error based on the OpenTTD StringID. - * @note DO NOT INVOKE THIS METHOD YOURSELF! - * @param internal_string_id The string to convert. - * @return The NoAI equivalent error message. - */ - static AIErrorType StringToError(StringID internal_string_id); - - /** - * Map an internal OpenTTD error message to its NoAI equivalent. - * @note DO NOT INVOKE THIS METHOD YOURSELF! The calls are autogenerated. - * @param internal_string_id The OpenTTD StringID used for an error. - * @param ai_error_msg The NoAI equivalent error message. - */ - static void RegisterErrorMap(StringID internal_string_id, AIErrorType ai_error_msg); - - /** - * Map an internal OpenTTD error message to its NoAI equivalent. - * @note DO NOT INVOKE THIS METHOD YOURSELF! The calls are autogenerated. - * @param ai_error_msg The NoAI error message representation. - * @param message The string representation of this error message, used for debug purposes. - */ - static void RegisterErrorMapString(AIErrorType ai_error_msg, const char *message); -#endif /* EXPORT_SKIP */ - -private: - typedef std::map<StringID, AIErrorType> AIErrorMap; ///< The type for mapping between error (internal OpenTTD) StringID to the AI error type. - typedef std::map<AIErrorType, const char *> AIErrorMapString; ///< The type for mapping between error type and textual representation. - - static AIErrorMap error_map; ///< The mapping between error (internal OpenTTD) StringID to the AI error type. - static AIErrorMapString error_map_string; ///< The mapping between error type and textual representation. -}; - -#endif /* AI_ERROR_HPP */ |