Difference between revisions of "NMLTutorial/Parameters"
| Planetmaker (talk | contribs)  (parameters: boolean parameters explained.) | Planetmaker (talk | contribs)   (→Numeric parameter:  numeric parameter examples) | ||
| Line 44: | Line 44: | ||
| === Numeric parameter === | === Numeric parameter === | ||
| + | |||
| + | The numeric parameter allows to directly input an (integer) number. It needs to have a minimum and maximum value given and optionally - and usually a good idea - a default value for the parameter: | ||
| + | <pre> | ||
| + | param 1 { | ||
| + | 	param_depot_year { | ||
| + | 		type: int; | ||
| + | 		name: string(STR_PARAM_DEPOTYEAR); | ||
| + | 		desc: string(STR_PARAM_DEPOTYEAR_DESC); | ||
| + | 		min_value: 0; | ||
| + | 		max_value: 5000000; | ||
| + | 		def_value: 1975; | ||
| + | 	} | ||
| + | } | ||
| + | </pre> | ||
| + | |||
| + | === Enumeration parameter === | ||
| + | |||
| + | The enumeration parameter basically is a numeric parameter where the single values have (additionally) a string attached to describe their meaning. Not all values need a string description, but it usually is a good idea to do this consistently | ||
| + | <pre> | ||
| + | param 0 { | ||
| + | 	economy { | ||
| + | 		name: string(STR_PARAM_NAME_ECONOMIES); | ||
| + | 		desc: string(STR_PARAM_DESC_ECONOMIES); | ||
| + | 		min_value: 0; | ||
| + | 		max_value: 1; | ||
| + | 		def_value: 0; | ||
| + | 		names: { | ||
| + | 			0: string(STR_PARAM_VALUE_ECONOMIES_TEST_ECONOMY); | ||
| + | 			1: string(STR_PARAM_VALUE_ECONOMIES_HARD_ECONOMY); | ||
| + | 		}; | ||
| + | 	} | ||
| + | } | ||
| + | </pre> | ||
Revision as of 09:28, 26 August 2011
Introduction
NewGRF Parameters in NML are part of the grf block
grf {
	grfid: "NML\FF";
	name: string(STR_GRF_NAME);
	desc: string(STR_GRF_DESC);
	version: 1;
	min_compatible_version: 0;
	param <num> {
		<name> {
			name: string(STR_PARAM_NAME_ECONOMIES);
			desc: string(STR_PARAM_DESC_ECONOMIES);
			<specifics>
		}
	}
}
Where name is the name the parameter is referenced further within the grf to read this parameter. <num> is the number of this parameter. The meaning of the <num> parameter should should remain constant throughout versions of the same NewGRF or the NewGRF might become incompatible with previous versions of the same NewGRF (thus you'd need to change min_compatible_version if you change the meaning of the parameters at <num>.
Parameter types
NML knows three different types of parameters, boolean, numeric ones and enumerations:
Boolean parameter
The boolean parameter is the easiest as it requires no further definitions besides the name and description. Optionally a single parameter can contain several boolean parameter values, each using a single bit, thus saving in the number of externally visible NewGRF parameters.
param 3 { // 3rd parameter of the NewGRF
	param_bool_1 { // 1st boolean value
		name: string(STR_PARAM_NAME_DEBUG);
		desc: string(STR_PARAM_DESC_DEBUG);
		type: bool;
		bit:  1; // uses 1st bit
	}
	param_bool_2 { // 2nd boolean value
		name: string(STR_PARAM_NAME_DEBUG);
		desc: string(STR_PARAM_DESC_DEBUG);
		type: bool;
		bit:  2; // uses 2nd bit
	}
}
Numeric parameter
The numeric parameter allows to directly input an (integer) number. It needs to have a minimum and maximum value given and optionally - and usually a good idea - a default value for the parameter:
param 1 {
	param_depot_year {
		type: int;
		name: string(STR_PARAM_DEPOTYEAR);
		desc: string(STR_PARAM_DEPOTYEAR_DESC);
		min_value: 0;
		max_value: 5000000;
		def_value: 1975;
	}
}
Enumeration parameter
The enumeration parameter basically is a numeric parameter where the single values have (additionally) a string attached to describe their meaning. Not all values need a string description, but it usually is a good idea to do this consistently
param 0 {
	economy {
		name: string(STR_PARAM_NAME_ECONOMIES);
		desc: string(STR_PARAM_DESC_ECONOMIES);
		min_value: 0;
		max_value: 1;
		def_value: 0;
		names: {
			0: string(STR_PARAM_VALUE_ECONOMIES_TEST_ECONOMY);
			1: string(STR_PARAM_VALUE_ECONOMIES_HARD_ECONOMY);
		};
	}
}
