summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bin/ai/regression/regression.txt2
-rw-r--r--src/script/api/ai/ai_company.hpp.sq2
-rw-r--r--src/script/api/ai/ai_waypoint.hpp.sq6
-rw-r--r--src/script/api/script_airport.hpp28
-rw-r--r--src/script/api/script_bridgelist.hpp4
-rw-r--r--src/script/api/script_cargo.hpp43
-rw-r--r--src/script/api/script_company.hpp15
-rw-r--r--src/script/api/script_group.hpp9
-rw-r--r--src/script/api/script_order.hpp43
-rw-r--r--src/script/api/script_rail.hpp44
-rw-r--r--src/script/api/script_road.hpp9
-rw-r--r--src/script/api/script_station.hpp15
-rw-r--r--src/script/api/script_tile.hpp73
-rw-r--r--src/script/api/script_town.hpp17
-rw-r--r--src/script/api/script_vehicle.hpp1
-rw-r--r--src/script/api/script_waypoint.hpp21
-rw-r--r--src/script/api/template/template_waypoint.hpp.sq4
17 files changed, 181 insertions, 155 deletions
diff --git a/bin/ai/regression/regression.txt b/bin/ai/regression/regression.txt
index e01a4b241..8399d82e9 100644
--- a/bin/ai/regression/regression.txt
+++ b/bin/ai/regression/regression.txt
@@ -791,7 +791,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
IsHangarTile(): false
IsAirportTile(): false
GetHangarOfAirport(): -1
- GetAirportType(): 255
+ GetAirportType(): 254
IsAirportInformationAvailable(-1): false
IsValidAirportType(-1): false
GetAirportWidth(-1): -1
diff --git a/src/script/api/ai/ai_company.hpp.sq b/src/script/api/ai/ai_company.hpp.sq
index a68cf5d7f..76cc18e3a 100644
--- a/src/script/api/ai/ai_company.hpp.sq
+++ b/src/script/api/ai/ai_company.hpp.sq
@@ -25,8 +25,8 @@ void SQAICompany_Register(Squirrel *engine)
SQAICompany.DefSQConst(engine, ScriptCompany::EARLIEST_QUARTER, "EARLIEST_QUARTER");
SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_FIRST, "COMPANY_FIRST");
SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_LAST, "COMPANY_LAST");
- SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_SELF, "COMPANY_SELF");
SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_INVALID, "COMPANY_INVALID");
+ SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_SELF, "COMPANY_SELF");
SQAICompany.DefSQConst(engine, ScriptCompany::GENDER_MALE, "GENDER_MALE");
SQAICompany.DefSQConst(engine, ScriptCompany::GENDER_FEMALE, "GENDER_FEMALE");
SQAICompany.DefSQConst(engine, ScriptCompany::GENDER_INVALID, "GENDER_INVALID");
diff --git a/src/script/api/ai/ai_waypoint.hpp.sq b/src/script/api/ai/ai_waypoint.hpp.sq
index e5b6101c3..b9edc40bf 100644
--- a/src/script/api/ai/ai_waypoint.hpp.sq
+++ b/src/script/api/ai/ai_waypoint.hpp.sq
@@ -21,12 +21,12 @@ void SQAIWaypoint_Register(Squirrel *engine)
SQAIWaypoint.PreRegister(engine, "AIBaseStation");
SQAIWaypoint.AddConstructor<void (ScriptWaypoint::*)(), 1>(engine, "x");
- SQAIWaypoint.DefSQConst(engine, ScriptWaypoint::WAYPOINT_RAIL, "WAYPOINT_RAIL");
- SQAIWaypoint.DefSQConst(engine, ScriptWaypoint::WAYPOINT_BUOY, "WAYPOINT_BUOY");
- SQAIWaypoint.DefSQConst(engine, ScriptWaypoint::WAYPOINT_ANY, "WAYPOINT_ANY");
SQAIWaypoint.DefSQConst(engine, ScriptWaypoint::ERR_WAYPOINT_BASE, "ERR_WAYPOINT_BASE");
SQAIWaypoint.DefSQConst(engine, ScriptWaypoint::ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT, "ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT");
SQAIWaypoint.DefSQConst(engine, ScriptWaypoint::ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS, "ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS");
+ SQAIWaypoint.DefSQConst(engine, ScriptWaypoint::WAYPOINT_RAIL, "WAYPOINT_RAIL");
+ SQAIWaypoint.DefSQConst(engine, ScriptWaypoint::WAYPOINT_BUOY, "WAYPOINT_BUOY");
+ SQAIWaypoint.DefSQConst(engine, ScriptWaypoint::WAYPOINT_ANY, "WAYPOINT_ANY");
ScriptError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT, ScriptWaypoint::ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT);
ScriptError::RegisterErrorMap(STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING, ScriptWaypoint::ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS);
diff --git a/src/script/api/script_airport.hpp b/src/script/api/script_airport.hpp
index 6dc2fca50..42041204c 100644
--- a/src/script/api/script_airport.hpp
+++ b/src/script/api/script_airport.hpp
@@ -13,6 +13,7 @@
#define SCRIPT_AIRPORT_HPP
#include "script_object.hpp"
+#include "../../airport.h"
/**
* Class that handles all airport related functions.
@@ -24,27 +25,24 @@ public:
* The types of airports available in the game.
*/
enum AirportType {
- /* Note: the values _are_ important as they represent an in-game value */
- AT_SMALL = 0, ///< The small airport.
- AT_LARGE = 1, ///< The large airport.
- AT_METROPOLITAN = 3, ///< The metropolitan airport.
- AT_INTERNATIONAL = 4, ///< The international airport.
- AT_COMMUTER = 5, ///< The commuter airport.
- AT_INTERCON = 7, ///< The intercontinental airport.
-
- /* Next are the airports which only have helicopter platforms */
- AT_HELIPORT = 2, ///< The heliport.
- AT_HELISTATION = 8, ///< The helistation.
- AT_HELIDEPOT = 6, ///< The helidepot.
-
- AT_INVALID = 255, ///< Invalid airport.
+ /* Note: these values represent part of the in-game AirportTypes enum */
+ AT_SMALL = ::AT_SMALL, ///< The small airport.
+ AT_LARGE = ::AT_LARGE, ///< The large airport.
+ AT_METROPOLITAN = ::AT_METROPOLITAN, ///< The metropolitan airport.
+ AT_INTERNATIONAL = ::AT_INTERNATIONAL, ///< The international airport.
+ AT_COMMUTER = ::AT_COMMUTER, ///< The commuter airport.
+ AT_INTERCON = ::AT_INTERCON, ///< The intercontinental airport.
+ AT_HELIPORT = ::AT_HELIPORT, ///< The heliport.
+ AT_HELISTATION = ::AT_HELISTATION, ///< The helistation.
+ AT_HELIDEPOT = ::AT_HELIDEPOT, ///< The helidepot.
+ AT_INVALID = ::AT_INVALID, ///< Invalid airport.
};
/**
* All plane types available.
*/
enum PlaneType {
- /* Note: the values _are_ important as they represent an in-game value */
+ /* Note: these values represent part of the in-game values, which are not defined in an enum */
PT_HELICOPTER = 0, ///< A helicopter.
PT_SMALL_PLANE = 1, ///< A small plane.
PT_BIG_PLANE = 3, ///< A big plane.
diff --git a/src/script/api/script_bridgelist.hpp b/src/script/api/script_bridgelist.hpp
index 486974640..596213b12 100644
--- a/src/script/api/script_bridgelist.hpp
+++ b/src/script/api/script_bridgelist.hpp
@@ -15,7 +15,7 @@
#include "script_list.hpp"
/**
- * Create a list of bridges.
+ * Create a list of bridges types.
* @api ai
* @ingroup ScriptList
*/
@@ -25,7 +25,7 @@ public:
};
/**
- * Create a list of bridges that can be built on a specific length.
+ * Create a list of bridges types that can be built on a specific length.
* @api ai
* @ingroup ScriptList
*/
diff --git a/src/script/api/script_cargo.hpp b/src/script/api/script_cargo.hpp
index cd3fd8630..abd1e5fd7 100644
--- a/src/script/api/script_cargo.hpp
+++ b/src/script/api/script_cargo.hpp
@@ -13,6 +13,8 @@
#define SCRIPT_CARGO_HPP
#include "script_object.hpp"
+#include "../../cargotype.h"
+#include "../../cargo_type.h"
/**
* Class that handles all cargo related functions.
@@ -21,39 +23,42 @@
class ScriptCargo : public ScriptObject {
public:
/**
- * The classes of cargo (from newgrf_cargo.h).
+ * The classes of cargo.
*/
enum CargoClass {
- CC_PASSENGERS = 1 << 0, ///< Passengers. Cargos of this class appear at bus stops. Cargos not of this class appear at truck stops.
- CC_MAIL = 1 << 1, ///< Mail
- CC_EXPRESS = 1 << 2, ///< Express cargo (Goods, Food, Candy, but also possible for passengers)
- CC_ARMOURED = 1 << 3, ///< Armoured cargo (Valuables, Gold, Diamonds)
- CC_BULK = 1 << 4, ///< Bulk cargo (Coal, Grain etc., Ores, Fruit)
- CC_PIECE_GOODS = 1 << 5, ///< Piece goods (Livestock, Wood, Steel, Paper)
- CC_LIQUID = 1 << 6, ///< Liquids (Oil, Water, Rubber)
- CC_REFRIGERATED = 1 << 7, ///< Refrigerated cargo (Food, Fruit)
- CC_HAZARDOUS = 1 << 8, ///< Hazardous cargo (Nuclear Fuel, Explosives, etc.)
- CC_COVERED = 1 << 9, ///< Covered/Sheltered Freight (Transporation in Box Vans, Silo Wagons, etc.)
+ /* Note: these values represent part of the in-game CargoClass enum */
+ CC_PASSENGERS = ::CC_PASSENGERS, ///< Passengers. Cargos of this class appear at bus stops. Cargos not of this class appear at truck stops.
+ CC_MAIL = ::CC_MAIL, ///< Mail
+ CC_EXPRESS = ::CC_EXPRESS, ///< Express cargo (Goods, Food, Candy, but also possible for passengers)
+ CC_ARMOURED = ::CC_ARMOURED, ///< Armoured cargo (Valuables, Gold, Diamonds)
+ CC_BULK = ::CC_BULK, ///< Bulk cargo (Coal, Grain etc., Ores, Fruit)
+ CC_PIECE_GOODS = ::CC_PIECE_GOODS, ///< Piece goods (Livestock, Wood, Steel, Paper)
+ CC_LIQUID = ::CC_LIQUID, ///< Liquids (Oil, Water, Rubber)
+ CC_REFRIGERATED = ::CC_REFRIGERATED, ///< Refrigerated cargo (Food, Fruit)
+ CC_HAZARDOUS = ::CC_HAZARDOUS, ///< Hazardous cargo (Nuclear Fuel, Explosives, etc.)
+ CC_COVERED = ::CC_COVERED, ///< Covered/Sheltered Freight (Transporation in Box Vans, Silo Wagons, etc.)
};
/**
* The effects a cargo can have on a town.
*/
enum TownEffect {
- TE_NONE = 0, ///< This cargo has no effect on a town
- TE_PASSENGERS = 1, ///< This cargo supplies passengers to a town
- TE_MAIL = 2, ///< This cargo supplies mail to a town
- TE_GOODS = 3, ///< This cargo supplies goods to a town
- TE_WATER = 4, ///< This cargo supplies water to a town
- TE_FOOD = 5, ///< This cargo supplies food to a town
+ /* Note: these values represent part of the in-game TownEffect enum */
+ TE_NONE = ::TE_NONE, ///< This cargo has no effect on a town
+ TE_PASSENGERS = ::TE_PASSENGERS, ///< This cargo supplies passengers to a town
+ TE_MAIL = ::TE_MAIL, ///< This cargo supplies mail to a town
+ TE_GOODS = ::TE_GOODS, ///< This cargo supplies goods to a town
+ TE_WATER = ::TE_WATER, ///< This cargo supplies water to a town
+ TE_FOOD = ::TE_FOOD, ///< This cargo supplies food to a town
};
/**
* Special cargo types.
*/
enum SpecialCargoID {
- CT_AUTO_REFIT = 0xFD, ///< Automatically choose cargo type when doing auto-refitting.
- CT_NO_REFIT = 0xFE, ///< Do not refit cargo of a vehicle.
+ /* Note: these values represent part of the in-game CargoTypes enum */
+ CT_AUTO_REFIT = ::CT_AUTO_REFIT, ///< Automatically choose cargo type when doing auto-refitting.
+ CT_NO_REFIT = ::CT_NO_REFIT, ///< Do not refit cargo of a vehicle.
};
/**
diff --git a/src/script/api/script_company.hpp b/src/script/api/script_company.hpp
index 051d3126a..428a1855c 100644
--- a/src/script/api/script_company.hpp
+++ b/src/script/api/script_company.hpp
@@ -22,16 +22,19 @@ class ScriptCompany : public ScriptObject {
public:
/** The range of possible quarters to get company information of. */
enum Quarter {
- CURRENT_QUARTER = 0, ///< The current quarter.
- EARLIEST_QUARTER = MAX_HISTORY_QUARTERS, ///< The earliest quarter company information is available for.
+ CURRENT_QUARTER = 0, ///< The current quarter.
+ EARLIEST_QUARTER = ::MAX_HISTORY_QUARTERS, ///< The earliest quarter company information is available for.
};
/** Different constants related to CompanyID. */
enum CompanyID {
- COMPANY_FIRST = 0, ///< The first available company.
- COMPANY_LAST = ::MAX_COMPANIES, ///< The last available company.
- COMPANY_SELF = 254, ///< Constant that gets resolved to the correct company index for your company.
- COMPANY_INVALID = -1, ///< An invalid company.
+ /* Note: these values represent part of the in-game Owner enum */
+ COMPANY_FIRST = ::COMPANY_FIRST, ///< The first available company.
+ COMPANY_LAST = ::MAX_COMPANIES, ///< The last available company.
+
+ /* Custom added value, only valid for this API */
+ COMPANY_INVALID = -1, ///< An invalid company.
+ COMPANY_SELF = 254, ///< Constant that gets resolved to the correct company index for your company.
};
/** Possible genders for company presidents. */
diff --git a/src/script/api/script_group.hpp b/src/script/api/script_group.hpp
index 8688ee328..1a549bf53 100644
--- a/src/script/api/script_group.hpp
+++ b/src/script/api/script_group.hpp
@@ -13,6 +13,7 @@
#define SCRIPT_GROUP_HPP
#include "script_vehicle.hpp"
+#include "../../group_type.h"
/**
* Class that handles all group related functions.
@@ -24,10 +25,10 @@ public:
* The group IDs of some special groups.
*/
enum GroupID {
- /* Values are important, as they represent the internal state of the game (see group_type.h). */
- GROUP_ALL = 0xFFFD, ///< All vehicles are in this group.
- GROUP_DEFAULT = 0xFFFE, ///< Vehicles not put in any other group are in this one.
- GROUP_INVALID = 0xFFFF, ///< An invalid group id.
+ /* Note: these values represent part of the in-game static values */
+ GROUP_ALL = ::ALL_GROUP, ///< All vehicles are in this group.
+ GROUP_DEFAULT = ::DEFAULT_GROUP, ///< Vehicles not put in any other group are in this one.
+ GROUP_INVALID = ::INVALID_GROUP, ///< An invalid group id.
};
/**
diff --git a/src/script/api/script_order.hpp b/src/script/api/script_order.hpp
index 7eac7783a..ba1b2f3e9 100644
--- a/src/script/api/script_order.hpp
+++ b/src/script/api/script_order.hpp
@@ -14,6 +14,7 @@
#include "script_error.hpp"
#include "script_vehicle.hpp"
+#include "../../order_type.h"
/**
* Class that handles all order related functions.
@@ -88,31 +89,35 @@ public:
* All conditions a conditional order can depend on.
*/
enum OrderCondition {
- /* Order _is_ important, as it's based on OrderConditionVariable in order_type.h. */
- OC_LOAD_PERCENTAGE, ///< Skip based on the amount of load, value is in tons.
- OC_RELIABILITY, ///< Skip based on the reliability, value is percent (0..100).
- OC_MAX_SPEED, ///< Skip based on the maximum speed, value is in OpenTTD's internal speed unit, see ScriptEngine::GetMaxSpeed.
- OC_AGE, ///< Skip based on the age, value is in years.
- OC_REQUIRES_SERVICE, ///< Skip when the vehicle requires service, no value.
- OC_UNCONDITIONALLY, ///< Always skip, no compare function, no value.
- OC_REMAINING_LIFETIME, ///< Skip based on the remaining lifetime
- OC_INVALID = -1, ///< An invalid condition, do not use.
+ /* Note: these values represent part of the in-game OrderConditionVariable enum */
+ OC_LOAD_PERCENTAGE = ::OCV_LOAD_PERCENTAGE, ///< Skip based on the amount of load, value is in tons.
+ OC_RELIABILITY = ::OCV_RELIABILITY, ///< Skip based on the reliability, value is percent (0..100).
+ OC_MAX_SPEED = ::OCV_MAX_SPEED, ///< Skip based on the maximum speed, value is in OpenTTD's internal speed unit, see ScriptEngine::GetMaxSpeed.
+ OC_AGE = ::OCV_AGE, ///< Skip based on the age, value is in years.
+ OC_REQUIRES_SERVICE = ::OCV_REQUIRES_SERVICE, ///< Skip when the vehicle requires service, no value.
+ OC_UNCONDITIONALLY = ::OCV_UNCONDITIONALLY, ///< Always skip, no compare function, no value.
+ OC_REMAINING_LIFETIME = ::OCV_REMAINING_LIFETIME, ///< Skip based on the remaining lifetime
+
+ /* Custom added value, only valid for this API */
+ OC_INVALID = -1, ///< An invalid condition, do not use.
};
/**
* Comparators for conditional orders.
*/
enum CompareFunction {
- /* Order _is_ important, as it's based on OrderConditionComparator in order_type.h. */
- CF_EQUALS, ///< Skip if both values are equal
- CF_NOT_EQUALS, ///< Skip if both values are not equal
- CF_LESS_THAN, ///< Skip if the value is less than the limit
- CF_LESS_EQUALS, ///< Skip if the value is less or equal to the limit
- CF_MORE_THAN, ///< Skip if the value is more than the limit
- CF_MORE_EQUALS, ///< Skip if the value is more or equal to the limit
- CF_IS_TRUE, ///< Skip if the variable is true
- CF_IS_FALSE, ///< Skip if the variable is false
- CF_INVALID = -1, ///< Invalid compare function, do not use.
+ /* Note: these values represent part of the in-game OrderConditionComparator enum */
+ CF_EQUALS = ::OCC_EQUALS, ///< Skip if both values are equal
+ CF_NOT_EQUALS = ::OCC_NOT_EQUALS, ///< Skip if both values are not equal
+ CF_LESS_THAN = ::OCC_LESS_THAN, ///< Skip if the value is less than the limit
+ CF_LESS_EQUALS = ::OCC_LESS_EQUALS, ///< Skip if the value is less or equal to the limit
+ CF_MORE_THAN = ::OCC_MORE_THAN, ///< Skip if the value is more than the limit
+ CF_MORE_EQUALS = ::OCC_MORE_EQUALS, ///< Skip if the value is more or equal to the limit
+ CF_IS_TRUE = ::OCC_IS_TRUE, ///< Skip if the variable is true
+ CF_IS_FALSE = ::OCC_IS_FALSE, ///< Skip if the variable is false
+
+ /* Custom added value, only valid for this API */
+ CF_INVALID = -1, ///< Invalid compare function, do not use.
};
/**
diff --git a/src/script/api/script_rail.hpp b/src/script/api/script_rail.hpp
index 96d673af6..c5158fee6 100644
--- a/src/script/api/script_rail.hpp
+++ b/src/script/api/script_rail.hpp
@@ -13,6 +13,8 @@
#define SCRIPT_RAIL_HPP
#include "script_tile.hpp"
+#include "../../signal_type.h"
+#include "../../track_type.h"
/**
* Class that handles all rail related functions.
@@ -41,40 +43,42 @@ public:
* Types of rail known to the game.
*/
enum RailType {
- /* Note: the values _are_ important as they represent an in-game value */
- RAILTYPE_INVALID = 0xFF, ///< Invalid RailType.
+ /* Note: these values represent part of the in-game static values */
+ RAILTYPE_INVALID = ::INVALID_RAILTYPE, ///< Invalid RailType.
};
/**
* A bitmap with all possible rail tracks on a tile.
*/
enum RailTrack {
- /* Note: the values _are_ important as they represent an in-game value */
- RAILTRACK_NE_SW = 1 << 0, ///< Track along the x-axis (north-east to south-west).
- RAILTRACK_NW_SE = 1 << 1, ///< Track along the y-axis (north-west to south-east).
- RAILTRACK_NW_NE = 1 << 2, ///< Track in the upper corner of the tile (north).
- RAILTRACK_SW_SE = 1 << 3, ///< Track in the lower corner of the tile (south).
- RAILTRACK_NW_SW = 1 << 4, ///< Track in the left corner of the tile (west).
- RAILTRACK_NE_SE = 1 << 5, ///< Track in the right corner of the tile (east).
- RAILTRACK_INVALID = 0xFF, ///< Flag for an invalid track.
+ /* Note: these values represent part of the in-game TrackBits enum */
+ RAILTRACK_NE_SW = ::TRACK_BIT_X, ///< Track along the x-axis (north-east to south-west).
+ RAILTRACK_NW_SE = ::TRACK_BIT_Y, ///< Track along the y-axis (north-west to south-east).
+ RAILTRACK_NW_NE = ::TRACK_BIT_UPPER, ///< Track in the upper corner of the tile (north).
+ RAILTRACK_SW_SE = ::TRACK_BIT_LOWER, ///< Track in the lower corner of the tile (south).
+ RAILTRACK_NW_SW = ::TRACK_BIT_LEFT, ///< Track in the left corner of the tile (west).
+ RAILTRACK_NE_SE = ::TRACK_BIT_RIGHT, ///< Track in the right corner of the tile (east).
+ RAILTRACK_INVALID = ::INVALID_TRACK_BIT, ///< Flag for an invalid track.
};
/**
* Types of signal known to the game.
*/
enum SignalType {
- /* Note: the values _are_ important as they represent an in-game value */
- SIGNALTYPE_NORMAL = 0, ///< Normal signal.
- SIGNALTYPE_ENTRY = 1, ///< Entry presignal.
- SIGNALTYPE_EXIT = 2, ///< Exit signal.
- SIGNALTYPE_COMBO = 3, ///< Combo signal.
- SIGNALTYPE_PBS = 4, ///< Normal PBS signal.
- SIGNALTYPE_PBS_ONEWAY = 5, ///< No-entry PBS signal.
+ /* Note: these values represent part of the in-game SignalType enum */
+ SIGNALTYPE_NORMAL = ::SIGTYPE_NORMAL, ///< Normal signal.
+ SIGNALTYPE_ENTRY = ::SIGTYPE_ENTRY, ///< Entry presignal.
+ SIGNALTYPE_EXIT = ::SIGTYPE_EXIT, ///< Exit signal.
+ SIGNALTYPE_COMBO = ::SIGTYPE_COMBO, ///< Combo signal.
+ SIGNALTYPE_PBS = ::SIGTYPE_PBS, ///< Normal PBS signal.
+ SIGNALTYPE_PBS_ONEWAY = ::SIGTYPE_PBS_ONEWAY, ///< No-entry PBS signal.
+
SIGNALTYPE_TWOWAY = 8, ///< Bit mask for twoway signal.
SIGNALTYPE_NORMAL_TWOWAY = SIGNALTYPE_NORMAL | SIGNALTYPE_TWOWAY, ///< Normal twoway signal.
- SIGNALTYPE_ENTRY_TWOWAY = SIGNALTYPE_ENTRY | SIGNALTYPE_TWOWAY, ///< Entry twoway signal.
- SIGNALTYPE_EXIT_TWOWAY = SIGNALTYPE_EXIT | SIGNALTYPE_TWOWAY, ///< Exit twoway signal.
- SIGNALTYPE_COMBO_TWOWAY = SIGNALTYPE_COMBO | SIGNALTYPE_TWOWAY, ///< Combo twoway signal.
+ SIGNALTYPE_ENTRY_TWOWAY = SIGNALTYPE_ENTRY | SIGNALTYPE_TWOWAY, ///< Entry twoway signal.
+ SIGNALTYPE_EXIT_TWOWAY = SIGNALTYPE_EXIT | SIGNALTYPE_TWOWAY, ///< Exit twoway signal.
+ SIGNALTYPE_COMBO_TWOWAY = SIGNALTYPE_COMBO | SIGNALTYPE_TWOWAY, ///< Combo twoway signal.
+
SIGNALTYPE_NONE = 0xFF, ///< No signal.
};
diff --git a/src/script/api/script_road.hpp b/src/script/api/script_road.hpp
index d058b8a7c..b0a64b4b5 100644
--- a/src/script/api/script_road.hpp
+++ b/src/script/api/script_road.hpp
@@ -45,11 +45,12 @@ public:
* Types of road known to the game.
*/
enum RoadType {
- /* Values are important, as they represent the internal state of the game. */
- ROADTYPE_ROAD = 0, ///< Build road objects.
- ROADTYPE_TRAM = 1, ///< Build tram objects.
+ /* Note: these values represent part of the in-game RoadType enum */
+ ROADTYPE_ROAD = ::ROADTYPE_ROAD, ///< Build road objects.
+ ROADTYPE_TRAM = ::ROADTYPE_TRAM, ///< Build tram objects.
- ROADTYPE_INVALID = -1, ///< Invalid RoadType.
+ /* Custom added value, only valid for this API */
+ ROADTYPE_INVALID = -1, ///< Invalid RoadType.
};
/**
diff --git a/src/script/api/script_station.hpp b/src/script/api/script_station.hpp
index 0f7e1dd0a..da986fc71 100644
--- a/src/script/api/script_station.hpp
+++ b/src/script/api/script_station.hpp
@@ -14,6 +14,7 @@
#include "script_road.hpp"
#include "script_basestation.hpp"
+#include "../../station_type.h"
/**
* Class that handles all station related functions.
@@ -42,13 +43,13 @@ public:
* Type of stations known in the game.
*/
enum StationType {
- /* Values are important, as they represent the internal state of the game. */
- STATION_TRAIN = 0x01, ///< Train station
- STATION_TRUCK_STOP = 0x02, ///< Truck station
- STATION_BUS_STOP = 0x04, ///< Bus station
- STATION_AIRPORT = 0x08, ///< Airport
- STATION_DOCK = 0x10, ///< Dock
- STATION_ANY = 0x1F, ///< All station types
+ /* Note: these values represent part of the in-game StationFacility enum */
+ STATION_TRAIN = ::FACIL_TRAIN, ///< Train station
+ STATION_TRUCK_STOP = ::FACIL_TRUCK_STOP, ///< Truck station
+ STATION_BUS_STOP = ::FACIL_BUS_STOP, ///< Bus station
+ STATION_AIRPORT = ::FACIL_AIRPORT, ///< Airport
+ STATION_DOCK = ::FACIL_DOCK, ///< Dock
+ STATION_ANY = STATION_TRAIN | STATION_TRUCK_STOP | STATION_BUS_STOP | STATION_AIRPORT | STATION_DOCK, ///< All station types
};
/**
diff --git a/src/script/api/script_tile.hpp b/src/script/api/script_tile.hpp
index f1d40529a..f560b2a1c 100644
--- a/src/script/api/script_tile.hpp
+++ b/src/script/api/script_tile.hpp
@@ -14,6 +14,8 @@
#include "script_error.hpp"
#include "script_company.hpp"
+#include "../../slope_type.h"
+#include "../../transport_type.h"
/**
* Class that handles all tile related functions.
@@ -46,12 +48,13 @@ public:
* Enumeration for corners of tiles.
*/
enum Corner {
- CORNER_W = 0, ///< West corner
- CORNER_S = 1, ///< South corner
- CORNER_E = 2, ///< East corner
- CORNER_N = 3, ///< North corner
+ /* Note: these values represent part of the in-game Corner enum */
+ CORNER_W = ::CORNER_W, ///< West corner
+ CORNER_S = ::CORNER_S, ///< South corner
+ CORNER_E = ::CORNER_E, ///< East corner
+ CORNER_N = ::CORNER_N, ///< North corner
- CORNER_INVALID = 0xFF,
+ CORNER_INVALID = ::CORNER_INVALID, ///< An invalid corner
};
/**
@@ -62,42 +65,44 @@ public:
* is the north-part of the tile.
*/
enum Slope {
- /* Values are important, as they represent the internal state of the game. */
- SLOPE_FLAT = 0x00, ///< A flat tile
- SLOPE_W = 1 << CORNER_W, ///< The west corner of the tile is raised
- SLOPE_S = 1 << CORNER_S, ///< The south corner of the tile is raised
- SLOPE_E = 1 << CORNER_E, ///< The east corner of the tile is raised
- SLOPE_N = 1 << CORNER_N, ///< The north corner of the tile is raised
- SLOPE_STEEP = 0x10, ///< Indicates the slope is steep (The corner opposite of the not-raised corner is raised two times)
- SLOPE_NW = SLOPE_N | SLOPE_W, ///< North and west corner are raised
- SLOPE_SW = SLOPE_S | SLOPE_W, ///< South and west corner are raised
- SLOPE_SE = SLOPE_S | SLOPE_E, ///< South and east corner are raised
- SLOPE_NE = SLOPE_N | SLOPE_E, ///< North and east corner are raised
- SLOPE_EW = SLOPE_E | SLOPE_W, ///< East and west corner are raised
- SLOPE_NS = SLOPE_N | SLOPE_S, ///< North and south corner are raised
- SLOPE_ELEVATED = SLOPE_N | SLOPE_E | SLOPE_S | SLOPE_W, ///< Bit mask containing all 'simple' slopes. Does not appear as a slope.
- SLOPE_NWS = SLOPE_N | SLOPE_W | SLOPE_S, ///< North, west and south corner are raised
- SLOPE_WSE = SLOPE_W | SLOPE_S | SLOPE_E, ///< West, south and east corner are raised
- SLOPE_SEN = SLOPE_S | SLOPE_E | SLOPE_N, ///< South, east and north corner are raised
- SLOPE_ENW = SLOPE_E | SLOPE_N | SLOPE_W, ///< East, north and west corner are raised
- SLOPE_STEEP_W = SLOPE_STEEP | SLOPE_NWS, ///< A steep slope falling to east (from west)
- SLOPE_STEEP_S = SLOPE_STEEP | SLOPE_WSE, ///< A steep slope falling to north (from south)
- SLOPE_STEEP_E = SLOPE_STEEP | SLOPE_SEN, ///< A steep slope falling to west (from east)
- SLOPE_STEEP_N = SLOPE_STEEP | SLOPE_ENW, ///< A steep slope falling to south (from north)
-
- SLOPE_INVALID = 0xFFFF, ///< An invalid slope
+ /* Note: these values represent part of the in-game Slope enum */
+ SLOPE_FLAT = ::SLOPE_FLAT, ///< A flat tile
+ SLOPE_W = ::SLOPE_W, ///< The west corner of the tile is raised
+ SLOPE_S = ::SLOPE_S, ///< The south corner of the tile is raised
+ SLOPE_E = ::SLOPE_E, ///< The east corner of the tile is raised
+ SLOPE_N = ::SLOPE_N, ///< The north corner of the tile is raised
+ SLOPE_STEEP = ::SLOPE_STEEP, ///< Indicates the slope is steep (The corner opposite of the not-raised corner is raised two times)
+ SLOPE_NW = ::SLOPE_NW, ///< North and west corner are raised
+ SLOPE_SW = ::SLOPE_SW, ///< South and west corner are raised
+ SLOPE_SE = ::SLOPE_SE, ///< South and east corner are raised
+ SLOPE_NE = ::SLOPE_NE, ///< North and east corner are raised
+ SLOPE_EW = ::SLOPE_EW, ///< East and west corner are raised
+ SLOPE_NS = ::SLOPE_NS, ///< North and south corner are raised
+ SLOPE_ELEVATED = ::SLOPE_ELEVATED, ///< Bit mask containing all 'simple' slopes. Does not appear as a slope.
+ SLOPE_NWS = ::SLOPE_NWS, ///< North, west and south corner are raised
+ SLOPE_WSE = ::SLOPE_WSE, ///< West, south and east corner are raised
+ SLOPE_SEN = ::SLOPE_SEN, ///< South, east and north corner are raised
+ SLOPE_ENW = ::SLOPE_ENW, ///< East, north and west corner are raised
+ SLOPE_STEEP_W = ::SLOPE_STEEP_W, ///< A steep slope falling to east (from west)
+ SLOPE_STEEP_S = ::SLOPE_STEEP_S, ///< A steep slope falling to north (from south)
+ SLOPE_STEEP_E = ::SLOPE_STEEP_E, ///< A steep slope falling to west (from east)
+ SLOPE_STEEP_N = ::SLOPE_STEEP_N, ///< A steep slope falling to south (from north)
+
+ /* Custom added value, only valid for this API */
+ SLOPE_INVALID = 0xFFFF, ///< An invalid slope
};
/**
* The different transport types a tile can have.
*/
enum TransportType {
- /* Values are important, as they represent the internal state of the game. */
- TRANSPORT_RAIL = 0, ///< Tile with rail.
- TRANSPORT_ROAD = 1, ///< Tile with road.
- TRANSPORT_WATER = 2, ///< Tile with navigable waterways.
- TRANSPORT_AIR = 3, ///< Tile with airport.
+ /* Note: these values represent part of the in-game TransportType enum */
+ TRANSPORT_RAIL = ::TRANSPORT_RAIL, ///< Tile with rail.
+ TRANSPORT_ROAD = ::TRANSPORT_ROAD, ///< Tile with road.
+ TRANSPORT_WATER = ::TRANSPORT_WATER, ///< Tile with navigable waterways.
+ TRANSPORT_AIR = ::TRANSPORT_AIR, ///< Tile with airport.
+ /* Custom added value, only valid for this API */
TRANSPORT_INVALID = -1, ///< Tile without any transport type.
};
diff --git a/src/script/api/script_town.hpp b/src/script/api/script_town.hpp
index 83da1d796..63f3a173a 100644
--- a/src/script/api/script_town.hpp
+++ b/src/script/api/script_town.hpp
@@ -14,6 +14,7 @@
#include "script_cargo.hpp"
#include "script_company.hpp"
+#include "../../town_type.h"
/**
* Class that handles all town related functions.
@@ -25,7 +26,7 @@ public:
* Actions that one can perform on a town.
*/
enum TownAction {
- /* Values are important, as they represent the internal state of the game. */
+ /* Note: these values represent part of the in-game order of the _town_action_proc array */
/**
* The cargo ratings temporary gains 25% of rating (in
@@ -94,12 +95,14 @@ public:
* Possible layouts for the roads in a town.
*/
enum RoadLayout {
- /* Order IS important, as it matches an in-game value */
- ROAD_LAYOUT_ORIGINAL, ///< Original algorithm (min. 1 distance between roads).
- ROAD_LAYOUT_BETTER_ROADS, ///< Extended original algorithm (min. 2 distance between roads).
- ROAD_LAYOUT_2x2, ///< Geometric 2x2 grid algorithm
- ROAD_LAYOUT_3x3, ///< Geometric 3x3 grid algorithm
- ROAD_LAYOUT_INVALID = -1, ///< The layout for invalid towns.
+ /* Note: these values represent part of the in-game TownLayout enum */
+ ROAD_LAYOUT_ORIGINAL = ::TL_ORIGINAL, ///< Original algorithm (min. 1 distance between roads).
+ ROAD_LAYOUT_BETTER_ROADS = ::TL_BETTER_ROADS, ///< Extended original algorithm (min. 2 distance between roads).
+ ROAD_LAYOUT_2x2 = ::TL_2X2_GRID, ///< Geometric 2x2 grid algorithm
+ ROAD_LAYOUT_3x3 = ::TL_3X3_GRID, ///< Geometric 3x3 grid algorithm
+
+ /* Custom added value, only valid for this API */
+ ROAD_LAYOUT_INVALID = -1, ///< The layout for invalid towns.
};
/**
diff --git a/src/script/api/script_vehicle.hpp b/src/script/api/script_vehicle.hpp
index cbf13f590..18b9e4314 100644
--- a/src/script/api/script_vehicle.hpp
+++ b/src/script/api/script_vehicle.hpp
@@ -72,7 +72,6 @@ public:
* road vehicles, as maglev is a rail vehicle.
*/
enum VehicleType {
- /* Order IS important, as it now matches the internal state of the game for vehicle type */
VT_RAIL, ///< Rail type vehicle.
VT_ROAD, ///< Road type vehicle (bus / truck).
VT_WATER, ///< Water type vehicle.
diff --git a/src/script/api/script_waypoint.hpp b/src/script/api/script_waypoint.hpp
index 645cc2daf..797501e7e 100644
--- a/src/script/api/script_waypoint.hpp
+++ b/src/script/api/script_waypoint.hpp
@@ -13,6 +13,7 @@
#define SCRIPT_WAYPOINT_HPP
#include "script_basestation.hpp"
+#include "../../station_type.h"
/**
* Class that handles all waypoint related functions.
@@ -21,16 +22,6 @@
class ScriptWaypoint : public ScriptBaseStation {
public:
/**
- * 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 {
@@ -45,6 +36,16 @@ public:
};
/**
+ * Type of waypoints known in the game.
+ */
+ enum WaypointType {
+ /* Note: these values represent part of the in-game StationFacility enum */
+ WAYPOINT_RAIL = ::FACIL_TRAIN, ///< Rail waypoint
+ WAYPOINT_BUOY = ::FACIL_DOCK, ///< Buoy
+ WAYPOINT_ANY = WAYPOINT_RAIL | WAYPOINT_BUOY, ///< All waypoint types
+ };
+
+ /**
* 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.
diff --git a/src/script/api/template/template_waypoint.hpp.sq b/src/script/api/template/template_waypoint.hpp.sq
index 048af7e50..88cc495c9 100644
--- a/src/script/api/template/template_waypoint.hpp.sq
+++ b/src/script/api/template/template_waypoint.hpp.sq
@@ -13,10 +13,10 @@
namespace SQConvert {
/* Allow enums to be used as Squirrel parameters */
- template <> inline ScriptWaypoint::WaypointType GetParam(ForceType<ScriptWaypoint::WaypointType>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWaypoint::WaypointType)tmp; }
- template <> inline int Return<ScriptWaypoint::WaypointType>(HSQUIRRELVM vm, ScriptWaypoint::WaypointType res) { sq_pushinteger(vm, (int32)res); return 1; }
template <> inline ScriptWaypoint::ErrorMessages GetParam(ForceType<ScriptWaypoint::ErrorMessages>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWaypoint::ErrorMessages)tmp; }
template <> inline int Return<ScriptWaypoint::ErrorMessages>(HSQUIRRELVM vm, ScriptWaypoint::ErrorMessages res) { sq_pushinteger(vm, (int32)res); return 1; }
+ template <> inline ScriptWaypoint::WaypointType GetParam(ForceType<ScriptWaypoint::WaypointType>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptWaypoint::WaypointType)tmp; }
+ template <> inline int Return<ScriptWaypoint::WaypointType>(HSQUIRRELVM vm, ScriptWaypoint::WaypointType res) { sq_pushinteger(vm, (int32)res); return 1; }
/* Allow ScriptWaypoint to be used as Squirrel parameter */
template <> inline ScriptWaypoint *GetParam(ForceType<ScriptWaypoint *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptWaypoint *)instance; }