mirror of https://github.com/OpenTTD/OpenTTD
(svn r25834) -Codechange: Use NUM_OBJECTS_PER_GRF instead of NUM_OBJECTS to properly distinguish limits per NewGRF and limits of the pool.
-Change: [NewGRF] Lower the limit of object 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.release/1.4
parent
35d7e8bca4
commit
60f483822f
|
@ -3773,14 +3773,14 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, ByteRea
|
|||
{
|
||||
ChangeInfoResult ret = CIR_SUCCESS;
|
||||
|
||||
if (id + numinfo > NUM_OBJECTS) {
|
||||
grfmsg(1, "ObjectChangeInfo: Too many objects loaded (%u), max (%u). Ignoring.", id + numinfo, NUM_OBJECTS);
|
||||
if (id + numinfo > NUM_OBJECTS_PER_GRF) {
|
||||
grfmsg(1, "ObjectChangeInfo: Too many objects loaded (%u), max (%u). Ignoring.", id + numinfo, NUM_OBJECTS_PER_GRF);
|
||||
return CIR_INVALID_ID;
|
||||
}
|
||||
|
||||
/* Allocate object specs if they haven't been allocated already. */
|
||||
if (_cur.grffile->objectspec == NULL) {
|
||||
_cur.grffile->objectspec = CallocT<ObjectSpec*>(NUM_OBJECTS);
|
||||
_cur.grffile->objectspec = CallocT<ObjectSpec*>(NUM_OBJECTS_PER_GRF);
|
||||
}
|
||||
|
||||
for (int i = 0; i < numinfo; i++) {
|
||||
|
@ -7882,7 +7882,7 @@ static void ResetCustomObjects()
|
|||
for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
|
||||
ObjectSpec **&objectspec = (*file)->objectspec;
|
||||
if (objectspec == NULL) continue;
|
||||
for (uint i = 0; i < NUM_OBJECTS; i++) {
|
||||
for (uint i = 0; i < NUM_OBJECTS_PER_GRF; i++) {
|
||||
free(objectspec[i]);
|
||||
}
|
||||
|
||||
|
@ -8552,7 +8552,7 @@ static void FinaliseObjectsArray()
|
|||
for (GRFFile **file = _grf_files.Begin(); file != end; file++) {
|
||||
ObjectSpec **&objectspec = (*file)->objectspec;
|
||||
if (objectspec != NULL) {
|
||||
for (int i = 0; i < NUM_OBJECTS; i++) {
|
||||
for (int i = 0; i < NUM_OBJECTS_PER_GRF; i++) {
|
||||
if (objectspec[i] != NULL && objectspec[i]->grf_prop.grffile != NULL && objectspec[i]->enabled) {
|
||||
_object_mngr.SetEntitySpec(objectspec[i]);
|
||||
}
|
||||
|
|
|
@ -21,8 +21,10 @@ static const ObjectType OBJECT_STATUE = 2; ///< Statue in towns
|
|||
static const ObjectType OBJECT_OWNED_LAND = 3; ///< Owned land 'flag'
|
||||
static const ObjectType OBJECT_HQ = 4; ///< HeadQuarter of a player
|
||||
|
||||
static const ObjectType NUM_OBJECTS_PER_GRF = 255; ///< Number of supported objects per NewGRF; limited to 255 to allow extending Action3 with an extended byte later on.
|
||||
|
||||
static const ObjectType NEW_OBJECT_OFFSET = 5; ///< Offset for new objects
|
||||
static const ObjectType NUM_OBJECTS = 256; ///< Number of supported objects
|
||||
static const ObjectType NUM_OBJECTS = 256; ///< Number of supported objects overall
|
||||
static const ObjectType INVALID_OBJECT_TYPE = 0xFFFF; ///< An invalid object
|
||||
|
||||
/** Unique identifier for an object. */
|
||||
|
|
Loading…
Reference in New Issue