(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:
peter1138 2006-05-10 21:55:44 +00:00
parent f513850371
commit 5ebd8be2d6

View File

@ -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