mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 06:15:04 +00:00
(svn r17115) -Add [NoAI]: AISubsidy::SubsidyParticipantType, AISubsidy::GetSourceType, AISubsidy::GetSourceIndex, AISubsidy::GetDestinationType, AISubsidy::GetDestinationIndex for better subsidy management
-Change [NoAI]: mark AISubsidy::SourceIsTown, AISubsidy::GetSource, AISubsidy::GetDestinationType, AISubsidy::GetDestination as deprecated
This commit is contained in:
parent
ab9c71f0d9
commit
b43fd7266e
@ -1636,15 +1636,15 @@ function Regression::Vehicle()
|
||||
function Regression::PrintSubsidy(subsidy_id)
|
||||
{
|
||||
print(" --Subsidy (" + subsidy_id + ") --");
|
||||
print(" IsValidSubsidy(): " + AISubsidy.IsValidSubsidy(subsidy_id));
|
||||
print(" IsAwarded(): " + AISubsidy.IsAwarded(subsidy_id));
|
||||
print(" GetAwardedTo(): " + AISubsidy.GetAwardedTo(subsidy_id));
|
||||
print(" GetExpireDate(): " + AISubsidy.GetExpireDate(subsidy_id));
|
||||
print(" SourceIsTown(): " + AISubsidy.SourceIsTown(subsidy_id));
|
||||
print(" GetSource(): " + AISubsidy.GetSource(subsidy_id));
|
||||
print(" DestionationIsTown(): " + AISubsidy.DestinationIsTown(subsidy_id));
|
||||
print(" GetDestionation(): " + AISubsidy.GetDestination(subsidy_id));
|
||||
print(" GetCargoType(): " + AISubsidy.GetCargoType(subsidy_id));
|
||||
print(" IsValidSubsidy(): " + AISubsidy.IsValidSubsidy(subsidy_id));
|
||||
print(" IsAwarded(): " + AISubsidy.IsAwarded(subsidy_id));
|
||||
print(" GetAwardedTo(): " + AISubsidy.GetAwardedTo(subsidy_id));
|
||||
print(" GetExpireDate(): " + AISubsidy.GetExpireDate(subsidy_id));
|
||||
print(" GetSourceType(): " + AISubsidy.GetSourceType(subsidy_id));
|
||||
print(" GetSourceIndex(): " + AISubsidy.GetSourceIndex(subsidy_id));
|
||||
print(" GetDestinationType(): " + AISubsidy.GetDestinationType(subsidy_id));
|
||||
print(" GetDestinationIndex(): " + AISubsidy.GetDestinationIndex(subsidy_id));
|
||||
print(" GetCargoType(): " + AISubsidy.GetCargoType(subsidy_id));
|
||||
}
|
||||
|
||||
|
||||
|
@ -8524,15 +8524,15 @@
|
||||
|
||||
First Subsidy Test
|
||||
--Subsidy (0) --
|
||||
IsValidSubsidy(): true
|
||||
IsAwarded(): false
|
||||
GetAwardedTo(): -1
|
||||
GetExpireDate(): 714080
|
||||
SourceIsTown(): true
|
||||
GetSource(): 15
|
||||
DestionationIsTown(): true
|
||||
GetDestionation(): 7
|
||||
GetCargoType(): 0
|
||||
IsValidSubsidy(): true
|
||||
IsAwarded(): false
|
||||
GetAwardedTo(): -1
|
||||
GetExpireDate(): 714080
|
||||
GetSourceType(): 1
|
||||
GetSourceIndex(): 15
|
||||
GetDestinationType(): 1
|
||||
GetDestinationIndex(): 7
|
||||
GetCargoType(): 0
|
||||
GetNextEvent: instance
|
||||
GetEventType: 6
|
||||
Unknown Event
|
||||
|
@ -12,6 +12,10 @@
|
||||
* \li AISign::GetMaxSignID
|
||||
* \li AITile::GetHeight
|
||||
* \li AIBaseStation::WAYPOINT_INVALID
|
||||
* \li AISubsidy::SourceIsTown
|
||||
* \li AISubsidy::GetSource
|
||||
* \li AISubsidy::DestinationIsTown
|
||||
* \li AISubsidy::GetDestination
|
||||
*
|
||||
* \b 0.8.0
|
||||
*
|
||||
@ -19,6 +23,11 @@
|
||||
* \li AIBaseStation
|
||||
* \li AIBuoyList
|
||||
* \li AIRail::RemoveRailWaypointTileRect
|
||||
* \li AISubsidy::SubsidyParticipantType
|
||||
* \li AISubsidy::GetSourceType
|
||||
* \li AISubsidy::GetSourceIndex
|
||||
* \li AISubsidy::GetDestinationType
|
||||
* \li AISubsidy::GetDestinationIndex
|
||||
*
|
||||
* Other changes:
|
||||
* \li The GetName / SetName / GetLocation functions were moved from AIStation
|
||||
@ -30,7 +39,7 @@
|
||||
* savegames are invalid
|
||||
* \li WAYPOINT_INVALID is now deprecated, use STATION_INVALID instead
|
||||
* \li AISubsidy::GetSource and AISubsidy::GetDestination return STATION_INVALID
|
||||
* for awarded subsidies
|
||||
* for awarded subsidies. They are deprecated as well
|
||||
* \li AIs can create subclasses of API classes and use API constants as part
|
||||
* of their own constants
|
||||
* \li AIVehicleList_Station now also works for waypoints
|
||||
|
@ -52,6 +52,7 @@
|
||||
|
||||
/* static */ bool AISubsidy::SourceIsTown(SubsidyID subsidy_id)
|
||||
{
|
||||
AILog::Warning("AISubsidy::SourceIsTown is deprecated and will be removed soon, please use AISubsidy::GetSourceType instead.");
|
||||
if (!IsValidSubsidy(subsidy_id) || IsAwarded(subsidy_id)) return false;
|
||||
|
||||
return ::Subsidy::Get(subsidy_id)->src_type == ST_TOWN;
|
||||
@ -59,6 +60,7 @@
|
||||
|
||||
/* static */ int32 AISubsidy::GetSource(SubsidyID subsidy_id)
|
||||
{
|
||||
AILog::Warning("AISubsidy::GetSource is deprecated and will be removed soon, please use AISubsidy::GetSourceIndex instead.");
|
||||
if (!IsValidSubsidy(subsidy_id)) return INVALID_STATION;
|
||||
|
||||
if (IsAwarded(subsidy_id)) {
|
||||
@ -69,8 +71,23 @@
|
||||
return ::Subsidy::Get(subsidy_id)->src;
|
||||
}
|
||||
|
||||
/* static */ AISubsidy::SubsidyParticipantType AISubsidy::GetSourceType(SubsidyID subsidy_id)
|
||||
{
|
||||
if (!IsValidSubsidy(subsidy_id)) return SPT_INVALID;
|
||||
|
||||
return (SubsidyParticipantType)(uint)::Subsidy::Get(subsidy_id)->src_type;
|
||||
}
|
||||
|
||||
/* static */ int32 AISubsidy::GetSourceIndex(SubsidyID subsidy_id)
|
||||
{
|
||||
if (!IsValidSubsidy(subsidy_id)) return INVALID_STATION;
|
||||
|
||||
return ::Subsidy::Get(subsidy_id)->src;
|
||||
}
|
||||
|
||||
/* static */ bool AISubsidy::DestinationIsTown(SubsidyID subsidy_id)
|
||||
{
|
||||
AILog::Warning("AISubsidy::DestinationIsTown is deprecated and will be removed soon, please use AISubsidy::GetDestinationType instead.");
|
||||
if (!IsValidSubsidy(subsidy_id) || IsAwarded(subsidy_id)) return false;
|
||||
|
||||
return ::Subsidy::Get(subsidy_id)->dst_type == ST_TOWN;
|
||||
@ -78,6 +95,7 @@
|
||||
|
||||
/* static */ int32 AISubsidy::GetDestination(SubsidyID subsidy_id)
|
||||
{
|
||||
AILog::Warning("AISubsidy::GetDestination is deprecated and will be removed soon, please use AISubsidy::GetDestinationIndex instead.");
|
||||
if (!IsValidSubsidy(subsidy_id)) return INVALID_STATION;
|
||||
|
||||
if (IsAwarded(subsidy_id)) {
|
||||
@ -87,3 +105,17 @@
|
||||
|
||||
return ::Subsidy::Get(subsidy_id)->dst;
|
||||
}
|
||||
|
||||
/* static */ AISubsidy::SubsidyParticipantType AISubsidy::GetDestinationType(SubsidyID subsidy_id)
|
||||
{
|
||||
if (!IsValidSubsidy(subsidy_id)) return SPT_INVALID;
|
||||
|
||||
return (SubsidyParticipantType)(uint)::Subsidy::Get(subsidy_id)->dst_type;
|
||||
}
|
||||
|
||||
/* static */ int32 AISubsidy::GetDestinationIndex(SubsidyID subsidy_id)
|
||||
{
|
||||
if (!IsValidSubsidy(subsidy_id)) return INVALID_STATION;
|
||||
|
||||
return ::Subsidy::Get(subsidy_id)->dst;
|
||||
}
|
||||
|
@ -15,6 +15,16 @@ class AISubsidy : public AIObject {
|
||||
public:
|
||||
static const char *GetClassName() { return "AISubsidy"; }
|
||||
|
||||
/**
|
||||
* Enumeration for source and destination of a subsidy.
|
||||
* @note The list of values may grow in future.
|
||||
*/
|
||||
enum SubsidyParticipantType {
|
||||
SPT_INDUSTRY = 0, //!< Subsidy participant is an industry
|
||||
SPT_TOWN = 1, //!< Subsidy participant is a town
|
||||
SPT_INVALID = 0xFF, //!< Invalid/unknown participant type
|
||||
};
|
||||
|
||||
/**
|
||||
* Check whether this is a valid SubsidyID.
|
||||
* @param subsidy_id The SubsidyID to check.
|
||||
@ -64,6 +74,7 @@ public:
|
||||
* @param subsidy_id The SubsidyID to check.
|
||||
* @pre IsValidSubsidy(subsidy_id) && !IsAwarded(subsidy_id).
|
||||
* @return True if the source is a town, false if it is an industry.
|
||||
* @deprecated Use GetSourceType() instead.
|
||||
*/
|
||||
static bool SourceIsTown(SubsidyID subsidy_id);
|
||||
|
||||
@ -75,14 +86,34 @@ public:
|
||||
* @param subsidy_id The SubsidyID to check.
|
||||
* @pre IsValidSubsidy(subsidy_id).
|
||||
* @return One of TownID/IndustryID/INVALID_STATION.
|
||||
* @deprecated Use GetSourceIndex() instead.
|
||||
*/
|
||||
static int32 GetSource(SubsidyID subsidy_id);
|
||||
|
||||
/**
|
||||
* Returns the type of source of subsidy.
|
||||
* @param subsidy_id The SubsidyID to check.
|
||||
* @pre IsValidSubsidy(subsidy_id).
|
||||
* @return Type of source of subsidy.
|
||||
*/
|
||||
static SubsidyParticipantType GetSourceType(SubsidyID subsidy_id);
|
||||
|
||||
/**
|
||||
* Return the source IndustryID/TownID the subsidy is for.
|
||||
* \li GetSourceType(subsidy_id) == SPT_INDUSTRY -> return the IndustryID.
|
||||
* \li GetSourceType(subsidy_id) == SPT_TOWN -> return the TownID.
|
||||
* @param subsidy_id The SubsidyID to check.
|
||||
* @pre IsValidSubsidy(subsidy_id).
|
||||
* @return One of TownID/IndustryID.
|
||||
*/
|
||||
static int32 GetSourceIndex(SubsidyID subsidy_id);
|
||||
|
||||
/**
|
||||
* Is the destination of the subsidy a town or an industry.
|
||||
* @param subsidy_id The SubsidyID to check.
|
||||
* @pre IsValidSubsidy(subsidy_id) && !IsAwarded(subsidy_id).
|
||||
* @return True if the destination is a town, false if it is an industry.
|
||||
* @deprecated Use GetDestinationType() instead.
|
||||
*/
|
||||
static bool DestinationIsTown(SubsidyID subsidy_id);
|
||||
|
||||
@ -94,8 +125,27 @@ public:
|
||||
* @param subsidy_id the SubsidyID to check.
|
||||
* @pre IsValidSubsidy(subsidy_id).
|
||||
* @return One of TownID/IndustryID/INVALID_STATION.
|
||||
* @deprecated Use GetDestinationIndex() instead.
|
||||
*/
|
||||
static int32 GetDestination(SubsidyID subsidy_id);
|
||||
|
||||
/**
|
||||
* Returns the type of destination of subsidy.
|
||||
* @param subsidy_id The SubsidyID to check.
|
||||
* @pre IsValidSubsidy(subsidy_id).
|
||||
* @return Type of destination of subsidy.
|
||||
*/
|
||||
static SubsidyParticipantType GetDestinationType(SubsidyID subsidy_id);
|
||||
|
||||
/**
|
||||
* Return the destination IndustryID/TownID the subsidy is for.
|
||||
* \li GetDestinationType(subsidy_id) == SPT_INDUSTRY -> return the IndustryID.
|
||||
* \li GetDestinationType(subsidy_id) == SPT_TOWN -> return the TownID.
|
||||
* @param subsidy_id the SubsidyID to check.
|
||||
* @pre IsValidSubsidy(subsidy_id).
|
||||
* @return One of TownID/IndustryID.
|
||||
*/
|
||||
static int32 GetDestinationIndex(SubsidyID subsidy_id);
|
||||
};
|
||||
|
||||
#endif /* AI_SUBSIDY_HPP */
|
||||
|
@ -4,6 +4,10 @@
|
||||
#include "ai_subsidy.hpp"
|
||||
|
||||
namespace SQConvert {
|
||||
/* Allow enums to be used as Squirrel parameters */
|
||||
template <> AISubsidy::SubsidyParticipantType GetParam(ForceType<AISubsidy::SubsidyParticipantType>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AISubsidy::SubsidyParticipantType)tmp; }
|
||||
template <> int Return<AISubsidy::SubsidyParticipantType>(HSQUIRRELVM vm, AISubsidy::SubsidyParticipantType res) { sq_pushinteger(vm, (int32)res); return 1; }
|
||||
|
||||
/* Allow AISubsidy to be used as Squirrel parameter */
|
||||
template <> AISubsidy *GetParam(ForceType<AISubsidy *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AISubsidy *)instance; }
|
||||
template <> AISubsidy &GetParam(ForceType<AISubsidy &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AISubsidy *)instance; }
|
||||
@ -17,15 +21,23 @@ void SQAISubsidy_Register(Squirrel *engine) {
|
||||
SQAISubsidy.PreRegister(engine);
|
||||
SQAISubsidy.AddConstructor<void (AISubsidy::*)(), 1>(engine, "x");
|
||||
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::IsValidSubsidy, "IsValidSubsidy", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::IsAwarded, "IsAwarded", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetAwardedTo, "GetAwardedTo", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetExpireDate, "GetExpireDate", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetCargoType, "GetCargoType", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::SourceIsTown, "SourceIsTown", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetSource, "GetSource", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::DestinationIsTown, "DestinationIsTown", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetDestination, "GetDestination", 2, ".i");
|
||||
SQAISubsidy.DefSQConst(engine, AISubsidy::SPT_INDUSTRY, "SPT_INDUSTRY");
|
||||
SQAISubsidy.DefSQConst(engine, AISubsidy::SPT_TOWN, "SPT_TOWN");
|
||||
SQAISubsidy.DefSQConst(engine, AISubsidy::SPT_INVALID, "SPT_INVALID");
|
||||
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::IsValidSubsidy, "IsValidSubsidy", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::IsAwarded, "IsAwarded", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetAwardedTo, "GetAwardedTo", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetExpireDate, "GetExpireDate", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetCargoType, "GetCargoType", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::SourceIsTown, "SourceIsTown", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetSource, "GetSource", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetSourceType, "GetSourceType", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetSourceIndex, "GetSourceIndex", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::DestinationIsTown, "DestinationIsTown", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetDestination, "GetDestination", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetDestinationType, "GetDestinationType", 2, ".i");
|
||||
SQAISubsidy.DefSQStaticMethod(engine, &AISubsidy::GetDestinationIndex, "GetDestinationIndex", 2, ".i");
|
||||
|
||||
SQAISubsidy.PostRegister(engine);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user