Changeset - r20795:183b78f738d1
[Not reviewed]
master
0 2 0
frosch - 11 years ago 2013-10-12 16:34:04
frosch@openttd.org
(svn r25839) -Codechange: Use NUM_HOUSES_PER_GRF instead of NUM_HOUSES to properly distinguish limits per NewGRF and limits of the pool.
-Change: [NewGRF] Lower the limit of house types per NewGRF from 256 to 255 to prevent usage of ID 0xFF in Action3, and thus allowing it to become an extended byte somewhen.
2 files changed with 12 insertions and 10 deletions:
0 comments (0 inline, 0 general)
src/house.h
Show inline comments
 
@@ -24,9 +24,11 @@
 
 */
 
static const byte TOWN_HOUSE_COMPLETED = 3;
 

	
 
static const HouseID NUM_HOUSES_PER_GRF = 255;    ///< Number of supported houses per NewGRF; limited to 255 to allow extending Action3 with an extended byte later on.
 

	
 
static const uint HOUSE_NO_CLASS      = 0;
 
static const HouseID NEW_HOUSE_OFFSET = 110;
 
static const HouseID NUM_HOUSES       = 512;
 
static const HouseID NEW_HOUSE_OFFSET = 110;    ///< Offset for new houses.
 
static const HouseID NUM_HOUSES       = 512;    ///< Total number of houses.
 
static const HouseID INVALID_HOUSE_ID = 0xFFFF;
 

	
 
/**
src/newgrf.cpp
Show inline comments
 
@@ -2183,14 +2183,14 @@ static ChangeInfoResult TownHouseChangeI
 
{
 
	ChangeInfoResult ret = CIR_SUCCESS;
 

	
 
	if (hid + numinfo > NUM_HOUSES) {
 
		grfmsg(1, "TownHouseChangeInfo: Too many houses loaded (%u), max (%u). Ignoring.", hid + numinfo, NUM_HOUSES);
 
	if (hid + numinfo > NUM_HOUSES_PER_GRF) {
 
		grfmsg(1, "TownHouseChangeInfo: Too many houses loaded (%u), max (%u). Ignoring.", hid + numinfo, NUM_HOUSES_PER_GRF);
 
		return CIR_INVALID_ID;
 
	}
 

	
 
	/* Allocate house specs if they haven't been allocated already. */
 
	if (_cur.grffile->housespec == NULL) {
 
		_cur.grffile->housespec = CallocT<HouseSpec*>(NUM_HOUSES);
 
		_cur.grffile->housespec = CallocT<HouseSpec*>(NUM_HOUSES_PER_GRF);
 
	}
 

	
 
	for (int i = 0; i < numinfo; i++) {
 
@@ -7789,7 +7789,7 @@ static void ResetCustomHouses()
 
	for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
 
		HouseSpec **&housespec = (*file)->housespec;
 
		if (housespec == NULL) continue;
 
		for (uint i = 0; i < NUM_HOUSES; i++) {
 
		for (uint i = 0; i < NUM_HOUSES_PER_GRF; i++) {
 
			free(housespec[i]);
 
		}
 

	
 
@@ -8419,14 +8419,14 @@ static void FinaliseHouseArray()
 
		HouseSpec **&housespec = (*file)->housespec;
 
		if (housespec == NULL) continue;
 

	
 
		for (int i = 0; i < NUM_HOUSES; i++) {
 
		for (int i = 0; i < NUM_HOUSES_PER_GRF; i++) {
 
			HouseSpec *hs = housespec[i];
 

	
 
			if (hs == NULL) continue;
 

	
 
			const HouseSpec *next1 = (i + 1 < NUM_HOUSES ? housespec[i + 1] : NULL);
 
			const HouseSpec *next2 = (i + 2 < NUM_HOUSES ? housespec[i + 2] : NULL);
 
			const HouseSpec *next3 = (i + 3 < NUM_HOUSES ? housespec[i + 3] : NULL);
 
			const HouseSpec *next1 = (i + 1 < NUM_HOUSES_PER_GRF ? housespec[i + 1] : NULL);
 
			const HouseSpec *next2 = (i + 2 < NUM_HOUSES_PER_GRF ? housespec[i + 2] : NULL);
 
			const HouseSpec *next3 = (i + 3 < NUM_HOUSES_PER_GRF ? housespec[i + 3] : NULL);
 

	
 
			if (!IsHouseSpecValid(hs, next1, next2, next3, (*file)->filename)) continue;
 

	
0 comments (0 inline, 0 general)