Changeset - r18291:faa18f9ceb25
[Not reviewed]
master
0 2 0
frosch - 13 years ago 2011-11-08 17:22:49
frosch@openttd.org
(svn r23137) -Change: [NewGRF v8] New result format for callback 16.
2 files changed with 19 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/articulated_vehicles.cpp
Show inline comments
 
@@ -15,6 +15,7 @@
 
#include "vehicle_func.h"
 
#include "engine_func.h"
 
#include "company_func.h"
 
#include "newgrf.h"
 

	
 
#include "table/strings.h"
 
#include "table/sprites.h"
 
@@ -33,12 +34,25 @@ static EngineID GetNextArticulatedPart(u
 
{
 
	assert(front == NULL || front->engine_type == front_type);
 

	
 
	const Engine *front_engine = Engine::Get(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 (callback == CALLBACK_FAILED) return INVALID_ENGINE;
 

	
 
	if (mirrored != NULL) *mirrored = HasBit(callback, 7);
 
	const Engine *front_engine = Engine::Get(front_type);
 
	return GetNewEngineID(front_engine->GetGRF(), front_engine->type, GB(callback, 0, 7));
 
	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);
 
}
 

	
 
/**
src/newgrf_callbacks.h
Show inline comments
 
@@ -50,7 +50,7 @@ enum CallbackID {
 
	CBID_VEHICLE_REFIT_CAPACITY          = 0x15, // 15 bit callback
 

	
 
	/** 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. */
 
	CBID_HOUSE_ALLOW_CONSTRUCTION        = 0x17, // 8 bit callback
0 comments (0 inline, 0 general)