(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.
This commit is contained in:
frosch
2013-10-12 16:34:04 +00:00
parent 6a0439a789
commit cfaa9457a6
2 changed files with 12 additions and 10 deletions

View File

@@ -2183,14 +2183,14 @@ static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, Byt
{
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;