Changeset - r3811:a211ec68b9d5
[Not reviewed]
master
0 1 0
peter1138 - 18 years ago 2006-05-11 09:54:11
peter1138@openttd.org
(svn r4821) - NewGRF: simplify parameter retrieval in Action 0x0D
1 file changed with 12 insertions and 20 deletions:
newgrf.c
12
20
0 comments (0 inline, 0 general)
newgrf.c
Show inline comments
 
@@ -1940,11 +1940,15 @@ static uint32 GetParamVal(byte param, ui
 
		case 0x84: /* .grf loading stage, 0=initialization, 1=activation */
 
			return _cur_stage;
 

	
 
		case 0x85: { /* TTDPatch flags, only for bit tests */
 
			uint32 param_val = _ttdpatch_flags[*cond_val / 0x20];
 
			*cond_val %= 0x20;
 
			return param_val;
 
		}
 
		case 0x85: /* TTDPatch flags, only for bit tests */
 
			if (cond_val == NULL) {
 
				/* Supported in Action 0x07 and 0x09, not 0x0D */
 
				return 0;
 
			} else {
 
				uint32 param_val = _ttdpatch_flags[*cond_val / 0x20];
 
				*cond_val %= 0x20;
 
				return param_val;
 
			}
 

	
 
		case 0x86: /* road traffic side, bit 4 clear=left, set=right */
 
			return _opt.road_side << 4;
 
@@ -1980,7 +1984,6 @@ static uint32 GetParamVal(byte param, ui
 
			grfmsg(GMS_WARN, "Unsupported in-game variable 0x%02X.", param);
 
			return -1;
 
	}
 

	
 
}
 

	
 
/* Action 0x07 */
 
@@ -2304,7 +2307,7 @@ static void ParamSet(byte *buf, int len)
 
		if (GB(data, 0, 8) == 0xFF) {
 
			if (data == 0x0000FFFF) {
 
				/* Patch variables */
 
				grfmsg(GMS_WARN, "ParamSet: Reading Patch variables unsupport.");
 
				grfmsg(GMS_WARN, "ParamSet: Reading Patch variables unsupported.");
 
				return;
 
			} else {
 
				/* GRF Resource Management */
 
@@ -2326,19 +2329,8 @@ static void ParamSet(byte *buf, int len)
 
		 * 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) {
 
			src2 = data;
 
		} else {
 
			uint32 temp;
 
			src2 = GetParamVal(src2, &temp);
 
		}
 
		src1 = (src1 == 0xFF) ? data : GetParamVal(src1, NULL);
 
		src2 = (src2 == 0xFF) ? data : GetParamVal(src2, NULL);
 
	}
 

	
 
	/* TODO: You can access the parameters of another GRF file by using
0 comments (0 inline, 0 general)