mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-17 21:25:40 +00:00
(svn r14939) -Codechange: Follow standard *ChangeInfo() pattern for global variables during reservation. Whilst not strictly necessary for global variables, following the same pattern makes it easier to follow. This also solves the long standing ChangeInfoResult/bool warning for MSVC.
This commit is contained in:
parent
b26cee21f6
commit
5c666fac14
144
src/newgrf.cpp
144
src/newgrf.cpp
@ -1771,6 +1771,68 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, by
|
||||
return ret;
|
||||
}
|
||||
|
||||
static ChangeInfoResult GlobalVarReserveInfo(uint gvid, int numinfo, int prop, byte **bufp, int len)
|
||||
{
|
||||
byte *buf = *bufp;
|
||||
ChangeInfoResult ret = CIR_SUCCESS;
|
||||
|
||||
for (int i = 0; i < numinfo; i++) {
|
||||
switch (prop) {
|
||||
case 0x08: // Cost base factor
|
||||
grf_load_byte(&buf);
|
||||
break;
|
||||
|
||||
case 0x09: { // Cargo Translation Table
|
||||
if (i == 0) {
|
||||
if (gvid != 0) {
|
||||
grfmsg(1, "ReserveChangeInfo: Cargo translation table must start at zero");
|
||||
return CIR_INVALID_ID;
|
||||
}
|
||||
|
||||
free(_cur_grffile->cargo_list);
|
||||
_cur_grffile->cargo_max = numinfo;
|
||||
_cur_grffile->cargo_list = MallocT<CargoLabel>(numinfo);
|
||||
}
|
||||
|
||||
CargoLabel cl = grf_load_dword(&buf);
|
||||
_cur_grffile->cargo_list[i] = BSWAP32(cl);
|
||||
break;
|
||||
}
|
||||
|
||||
case 0x0A: // Currency display names
|
||||
case 0x0C: // Currency options
|
||||
case 0x0F: // Euro introduction dates
|
||||
grf_load_word(&buf);
|
||||
break;
|
||||
|
||||
case 0x0B: // Currency multipliers
|
||||
case 0x0D: // Currency prefix symbol
|
||||
case 0x0E: // Currency suffix symbol
|
||||
grf_load_dword(&buf);
|
||||
break;
|
||||
|
||||
case 0x10: // Snow line height table
|
||||
buf += SNOW_LINE_MONTHS * SNOW_LINE_DAYS;
|
||||
break;
|
||||
|
||||
case 0x11: { // GRF match for engine allocation
|
||||
uint32 s = grf_load_dword(&buf);
|
||||
uint32 t = grf_load_dword(&buf);
|
||||
SetNewGRFOverride(s, t);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
ret = CIR_UNKNOWN;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
*bufp = buf;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, byte **bufp, int len)
|
||||
{
|
||||
byte *buf = *bufp;
|
||||
@ -2319,6 +2381,33 @@ static ChangeInfoResult IndustriesChangeInfo(uint indid, int numinfo, int prop,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static bool HandleChangeInfoResult(const char *caller, ChangeInfoResult cir, uint8 feature, uint8 property)
|
||||
{
|
||||
switch (cir) {
|
||||
default: NOT_REACHED();
|
||||
|
||||
case CIR_SUCCESS:
|
||||
return false;
|
||||
|
||||
case CIR_UNHANDLED:
|
||||
grfmsg(1, "%s: Ignoring property 0x%02X of feature 0x%02X (not implemented)", caller, property, feature);
|
||||
return false;
|
||||
|
||||
case CIR_UNKNOWN:
|
||||
grfmsg(0, "%s: Unknown property 0x%02X of feature 0x%02X, disabling", caller, property, feature);
|
||||
/* Fall through */
|
||||
|
||||
case CIR_INVALID_ID:
|
||||
/* No debug message for an invalid ID, as it has already been output */
|
||||
_skip_sprites = -1;
|
||||
_cur_grfconfig->status = GCS_DISABLED;
|
||||
_cur_grfconfig->error = CallocT<GRFError>(1);
|
||||
_cur_grfconfig->error->severity = STR_NEWGRF_ERROR_MSG_FATAL;
|
||||
_cur_grfconfig->error->message = (cir == CIR_INVALID_ID) ? STR_NEWGRF_ERROR_INVALID_ID : STR_NEWGRF_ERROR_UNKNOWN_PROPERTY;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/* Action 0x00 */
|
||||
static void FeatureChangeInfo(byte *buf, size_t len)
|
||||
{
|
||||
@ -2372,27 +2461,7 @@ static void FeatureChangeInfo(byte *buf, size_t len)
|
||||
uint8 prop = grf_load_byte(&buf);
|
||||
|
||||
ChangeInfoResult cir = handler[feature](engine, numinfo, prop, &buf, bufend - buf);
|
||||
switch (cir) {
|
||||
case CIR_SUCCESS:
|
||||
break;
|
||||
|
||||
case CIR_UNHANDLED:
|
||||
grfmsg(1, "FeatureChangeInfo: Ignoring property 0x%02X of feature 0x%02X (not implemented)", prop, feature);
|
||||
break;
|
||||
|
||||
case CIR_UNKNOWN:
|
||||
grfmsg(0, "FeatureChangeInfo: Unknown property 0x%02X of feature 0x%02X, disabling", prop, feature);
|
||||
/* Fall through */
|
||||
|
||||
case CIR_INVALID_ID:
|
||||
/* No debug message for an invalid ID, as it has already been output */
|
||||
_skip_sprites = -1;
|
||||
_cur_grfconfig->status = GCS_DISABLED;
|
||||
_cur_grfconfig->error = CallocT<GRFError>(1);
|
||||
_cur_grfconfig->error->severity = STR_NEWGRF_ERROR_MSG_FATAL;
|
||||
_cur_grfconfig->error->message = (cir == CIR_INVALID_ID) ? STR_NEWGRF_ERROR_INVALID_ID : STR_NEWGRF_ERROR_UNKNOWN_PROPERTY;
|
||||
return;
|
||||
}
|
||||
if (HandleChangeInfoResult("FeatureChangeInfo", cir, feature, prop)) return;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2436,43 +2505,20 @@ static void ReserveChangeInfo(byte *buf, size_t len)
|
||||
|
||||
while (numprops-- && buf < bufend) {
|
||||
uint8 prop = grf_load_byte(&buf);
|
||||
bool ignoring = false;
|
||||
ChangeInfoResult cir = CIR_SUCCESS;
|
||||
|
||||
switch (feature) {
|
||||
default: NOT_REACHED();
|
||||
case GSF_CARGOS:
|
||||
ignoring = CargoChangeInfo(index, numinfo, prop, &buf, bufend - buf);
|
||||
cir = CargoChangeInfo(index, numinfo, prop, &buf, bufend - buf);
|
||||
break;
|
||||
|
||||
case GSF_GLOBALVAR:
|
||||
switch (prop) {
|
||||
case 0x09: // Cargo Translation Table
|
||||
if (index != 0) {
|
||||
grfmsg(1, "ReserveChangeInfo: Cargo translation table must start at zero");
|
||||
return;
|
||||
}
|
||||
|
||||
free(_cur_grffile->cargo_list);
|
||||
_cur_grffile->cargo_max = numinfo;
|
||||
_cur_grffile->cargo_list = MallocT<CargoLabel>(numinfo);
|
||||
|
||||
for (uint i = 0; i < numinfo; i++) {
|
||||
CargoLabel cl = grf_load_dword(&buf);
|
||||
_cur_grffile->cargo_list[i] = BSWAP32(cl);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x11: // GRF match for engine allocation
|
||||
for (uint i = 0; i < numinfo; i++) {
|
||||
uint32 s = grf_load_dword(&buf);
|
||||
uint32 t = grf_load_dword(&buf);
|
||||
SetNewGRFOverride(s, t);
|
||||
}
|
||||
break;
|
||||
}
|
||||
cir = GlobalVarReserveInfo(index, numinfo, prop, &buf, bufend - buf);
|
||||
break;
|
||||
}
|
||||
|
||||
if (ignoring) grfmsg(2, "ReserveChangeInfo: Ignoring property 0x%02X (not implemented)", prop);
|
||||
if (HandleChangeInfoResult("ReserveChangeInfo", cir, feature, prop)) return;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user