mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-12 18:40:29 +00:00
(svn r23137) -Change: [NewGRF v8] New result format for callback 16.
This commit is contained in:
parent
e08a227b53
commit
f97fa89f1a
@ -15,6 +15,7 @@
|
|||||||
#include "vehicle_func.h"
|
#include "vehicle_func.h"
|
||||||
#include "engine_func.h"
|
#include "engine_func.h"
|
||||||
#include "company_func.h"
|
#include "company_func.h"
|
||||||
|
#include "newgrf.h"
|
||||||
|
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
#include "table/sprites.h"
|
#include "table/sprites.h"
|
||||||
@ -33,12 +34,25 @@ static EngineID GetNextArticulatedPart(uint index, EngineID front_type, Vehicle
|
|||||||
{
|
{
|
||||||
assert(front == NULL || front->engine_type == front_type);
|
assert(front == NULL || front->engine_type == front_type);
|
||||||
|
|
||||||
uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, index, 0, front_type, front);
|
|
||||||
if (callback == CALLBACK_FAILED || GB(callback, 0, 8) == 0xFF) return INVALID_ENGINE;
|
|
||||||
|
|
||||||
if (mirrored != NULL) *mirrored = HasBit(callback, 7);
|
|
||||||
const Engine *front_engine = Engine::Get(front_type);
|
const Engine *front_engine = Engine::Get(front_type);
|
||||||
return GetNewEngineID(front_engine->GetGRF(), front_engine->type, GB(callback, 0, 7));
|
|
||||||
|
uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, index, 0, front_type, front);
|
||||||
|
if (callback == CALLBACK_FAILED) return INVALID_ENGINE;
|
||||||
|
|
||||||
|
if (front_engine->GetGRF()->grf_version < 8) {
|
||||||
|
/* 8 bits, bit 7 for mirroring */
|
||||||
|
callback = GB(callback, 0, 8);
|
||||||
|
if (callback == 0xFF) return INVALID_ENGINE;
|
||||||
|
if (mirrored != NULL) *mirrored = HasBit(callback, 7);
|
||||||
|
callback = GB(callback, 0, 7);
|
||||||
|
} else {
|
||||||
|
/* 15 bits, bit 14 for mirroring */
|
||||||
|
if (callback == 0x7FFF) return INVALID_ENGINE;
|
||||||
|
if (mirrored != NULL) *mirrored = HasBit(callback, 14);
|
||||||
|
callback = GB(callback, 0, 14);
|
||||||
|
}
|
||||||
|
|
||||||
|
return GetNewEngineID(front_engine->GetGRF(), front_engine->type, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -50,7 +50,7 @@ enum CallbackID {
|
|||||||
CBID_VEHICLE_REFIT_CAPACITY = 0x15, // 15 bit callback
|
CBID_VEHICLE_REFIT_CAPACITY = 0x15, // 15 bit callback
|
||||||
|
|
||||||
/** Builds articulated engines for trains and RVs. */
|
/** Builds articulated engines for trains and RVs. */
|
||||||
CBID_VEHICLE_ARTIC_ENGINE = 0x16, // 8 bit callback
|
CBID_VEHICLE_ARTIC_ENGINE = 0x16, // 8 bit callback for grf version < 8
|
||||||
|
|
||||||
/** Determine whether the house can be built on the specified tile. */
|
/** Determine whether the house can be built on the specified tile. */
|
||||||
CBID_HOUSE_ALLOW_CONSTRUCTION = 0x17, // 8 bit callback
|
CBID_HOUSE_ALLOW_CONSTRUCTION = 0x17, // 8 bit callback
|
||||||
|
Loading…
Reference in New Issue
Block a user