mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r20108) -Change: [NewGRF] Report substitute industry type in AI railstation selection callback.
This commit is contained in:
parent
969c059fea
commit
9060a7ac00
|
@ -13,6 +13,7 @@
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "newgrf.h"
|
#include "newgrf.h"
|
||||||
#include "newgrf_spritegroup.h"
|
#include "newgrf_spritegroup.h"
|
||||||
|
#include "industrytype.h"
|
||||||
#include "core/bitmath_func.hpp"
|
#include "core/bitmath_func.hpp"
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
|
@ -170,6 +171,18 @@ uint16 GetAiPurchaseCallbackResult(uint8 feature, CargoID cargo_type, uint8 defa
|
||||||
|
|
||||||
NewGenericResolver(&object, *file);
|
NewGenericResolver(&object, *file);
|
||||||
|
|
||||||
|
if (src_industry != IT_AI_UNKNOWN && src_industry != IT_AI_TOWN) {
|
||||||
|
const IndustrySpec *is = GetIndustrySpec(src_industry);
|
||||||
|
/* If this is no original industry, use the substitute type */
|
||||||
|
if (is->grf_prop.subst_id != INVALID_INDUSTRYTYPE) src_industry = is->grf_prop.subst_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dst_industry != IT_AI_UNKNOWN && dst_industry != IT_AI_TOWN) {
|
||||||
|
const IndustrySpec *is = GetIndustrySpec(dst_industry);
|
||||||
|
/* If this is no original industry, use the substitute type */
|
||||||
|
if (is->grf_prop.subst_id != INVALID_INDUSTRYTYPE) dst_industry = is->grf_prop.subst_id;
|
||||||
|
}
|
||||||
|
|
||||||
object.callback = CBID_GENERIC_AI_PURCHASE_SELECTION;
|
object.callback = CBID_GENERIC_AI_PURCHASE_SELECTION;
|
||||||
object.u.generic.cargo_type = cargo_type;
|
object.u.generic.cargo_type = cargo_type;
|
||||||
object.u.generic.default_selection = default_selection;
|
object.u.generic.default_selection = default_selection;
|
||||||
|
|
|
@ -39,6 +39,9 @@ enum AIConstructionEvent {
|
||||||
AICE_STATION_GET_STATION_ID = 0x00, ///< Get a station ID to build
|
AICE_STATION_GET_STATION_ID = 0x00, ///< Get a station ID to build
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const IndustryType IT_AI_UNKNOWN = 0xFE; ///< The AI has no specific industry in mind.
|
||||||
|
static const IndustryType IT_AI_TOWN = 0xFF; ///< The AI actually wants to transport to/from a town, not an industry.
|
||||||
|
|
||||||
void ResetGenericCallbacks();
|
void ResetGenericCallbacks();
|
||||||
void AddGenericCallback(uint8 feature, const struct GRFFile *file, const struct SpriteGroup *group);
|
void AddGenericCallback(uint8 feature, const struct GRFFile *file, const struct SpriteGroup *group);
|
||||||
|
|
||||||
|
|
|
@ -334,8 +334,8 @@ struct ResolverObject {
|
||||||
struct {
|
struct {
|
||||||
CargoID cargo_type;
|
CargoID cargo_type;
|
||||||
uint8 default_selection;
|
uint8 default_selection;
|
||||||
IndustryType src_industry;
|
uint8 src_industry; ///< Source industry substitute type. 0xFF for "town", 0xFE for "unknown".
|
||||||
IndustryType dst_industry;
|
uint8 dst_industry; ///< Destination industry substitute type. 0xFF for "town", 0xFE for "unknown".
|
||||||
uint8 distance;
|
uint8 distance;
|
||||||
AIConstructionEvent event;
|
AIConstructionEvent event;
|
||||||
uint8 count;
|
uint8 count;
|
||||||
|
|
Loading…
Reference in New Issue