mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-16 00:12:51 +00:00
(svn r4818) - NewGRF: add support for reading another GRF file's parameters, and warn if GRF Resource Management is tried.
This commit is contained in:
parent
f513850371
commit
5ebd8be2d6
52
newgrf.c
52
newgrf.c
@ -2300,23 +2300,45 @@ static void ParamSet(byte *buf, int len)
|
|||||||
oper &= 0x7F;
|
oper &= 0x7F;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The source1 and source2 operands refer to the grf parameter number
|
if (src2 == 0xFE) {
|
||||||
* like in action 6 and 7. In addition, they can refer to the special
|
if (GB(data, 0, 8) == 0xFF) {
|
||||||
* variables available in action 7, or they can be FF to use the value
|
if (data == 0x0000FFFF) {
|
||||||
* of <data>. If referring to parameters that are undefined, a value
|
/* Patch variables */
|
||||||
* of 0 is used instead. */
|
grfmsg(GMS_WARN, "ParamSet: Reading Patch variables unsupport.");
|
||||||
if (src1 == 0xFF) {
|
return;
|
||||||
src1 = data;
|
} else {
|
||||||
|
/* GRF Resource Management */
|
||||||
|
grfmsg(GMS_WARN, "ParamSet: GRF Resource Management unsupported.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* Read another GRF File's parameter */
|
||||||
|
const GRFFile *file = GetFileByGRFID(data);
|
||||||
|
if (file == NULL || src1 >= file->param_end) {
|
||||||
|
src1 = 0;
|
||||||
|
} else {
|
||||||
|
src1 = file->param[src1];
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
uint32 temp;
|
/* The source1 and source2 operands refer to the grf parameter number
|
||||||
src1 = GetParamVal(src1, &temp);
|
* like in action 6 and 7. In addition, they can refer to the special
|
||||||
}
|
* variables available in action 7, or they can be FF to use the value
|
||||||
|
* of <data>. If referring to parameters that are undefined, a value
|
||||||
|
* of 0 is used instead. */
|
||||||
|
if (src1 == 0xFF) {
|
||||||
|
src1 = data;
|
||||||
|
} else {
|
||||||
|
uint32 temp;
|
||||||
|
src1 = GetParamVal(src1, &temp);
|
||||||
|
}
|
||||||
|
|
||||||
if (src2 == 0xFF) {
|
if (src2 == 0xFF) {
|
||||||
src2 = data;
|
src2 = data;
|
||||||
} else {
|
} else {
|
||||||
uint32 temp;
|
uint32 temp;
|
||||||
src2 = GetParamVal(src2, &temp);
|
src2 = GetParamVal(src2, &temp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: You can access the parameters of another GRF file by using
|
/* TODO: You can access the parameters of another GRF file by using
|
||||||
|
Loading…
Reference in New Issue
Block a user