Changeset - r6769:0e5b094df012
[Not reviewed]
master
0 5 0
belugas - 17 years ago 2007-05-31 19:13:41
belugas@openttd.org
(svn r10005) -Codechange: Merge two flags (2cc and newhouses) indicating some newgrf features have been loaded, and introduce the newindustry one.
5 files changed with 28 insertions and 24 deletions:
0 comments (0 inline, 0 general)
src/newgrf.cpp
Show inline comments
 
@@ -74,12 +74,8 @@ static uint32 _ttdpatch_flags[8];
 
/* Used by Action 0x06 to preload a pseudo sprite and modify its content */
 
static byte *_preload_sprite = NULL;
 

	
 
/* Set if any vehicle is loaded which uses 2cc (two company colours) */
 
bool _have_2cc = false;
 

	
 
/* Set if there are any newhouses loaded. */
 
bool _have_newhouses = false;
 

	
 
/* Indicates which are the newgrf features currently loaded ingame */
 
uint8 _loaded_newgrf_features;
 

	
 
enum GrfDataType {
 
	GDT_SOUND,
 
@@ -539,7 +535,7 @@ static bool RailVehicleChangeInfo(uint e
 
		case 0x27: // Miscellaneous flags
 
			FOR_EACH_OBJECT {
 
				ei[i].misc_flags = grf_load_byte(&buf);
 
				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) _have_2cc = true;
 
				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) SETBIT(_loaded_newgrf_features, GRFLOADED_2CC);
 
			}
 
			break;
 

	
 
@@ -661,7 +657,7 @@ static bool RoadVehicleChangeInfo(uint e
 
		case 0x1C: // Miscellaneous flags
 
			FOR_EACH_OBJECT {
 
				ei[i].misc_flags = grf_load_byte(&buf);
 
				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) _have_2cc = true;
 
				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) SETBIT(_loaded_newgrf_features, GRFLOADED_2CC);
 
			}
 
			break;
 

	
 
@@ -772,7 +768,7 @@ static bool ShipVehicleChangeInfo(uint e
 
		case 0x17: // Miscellaneous flags
 
			FOR_EACH_OBJECT {
 
				ei[i].misc_flags = grf_load_byte(&buf);
 
				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) _have_2cc = true;
 
				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) SETBIT(_loaded_newgrf_features, GRFLOADED_2CC);
 
			}
 
			break;
 

	
 
@@ -888,7 +884,7 @@ static bool AircraftVehicleChangeInfo(ui
 
		case 0x17: // Miscellaneous flags
 
			FOR_EACH_OBJECT {
 
				ei[i].misc_flags = grf_load_byte(&buf);
 
				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) _have_2cc = true;
 
				if (HASBIT(ei[i].misc_flags, EF_USES_2CC)) SETBIT(_loaded_newgrf_features, GRFLOADED_2CC);
 
			}
 
			break;
 

	
 
@@ -1297,7 +1293,7 @@ static bool TownHouseChangeInfo(uint hid
 
				 * FinaliseHouseArray() for more details. */
 
				if (housespec[i]->min_date < 1930) housespec[i]->min_date = 1930;
 
			}
 
			_have_newhouses = true;
 
			SETBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES);
 
			break;
 

	
 
		case 0x09: // Building flags
 
@@ -4459,8 +4455,9 @@ static void ResetNewGRFData()
 
	_misc_grf_features = 0;
 
	_traininfo_vehicle_pitch = 0;
 
	_traininfo_vehicle_width = 29;
 
	_have_2cc = false;
 
	_have_newhouses = false;
 

	
 
	_loaded_newgrf_features = 0;
 

	
 
	_signal_base = 0;
 
	_coast_base = 0;
 

	
src/newgrf.h
Show inline comments
 
@@ -87,8 +87,15 @@ extern GRFFile *_first_grffile;
 

	
 
extern SpriteID _signal_base;
 
extern SpriteID _coast_base;
 
extern bool _have_2cc;
 
extern bool _have_newhouses;
 

	
 
enum GRFLoadedFeatures {
 
	GRFLOADED_2CC,             // Set if any vehicle is loaded which uses 2cc (two company colours).
 
	GRFLOADED_NEWHOUSES,       // Set if there are any newhouses loaded.
 
	GRFLOADED_NEWINDUSTRIES,   // Set if there are any newindustries loaded.
 
};
 

	
 
/* Indicates which are the newgrf features currently loaded ingame */
 
extern uint8 _loaded_newgrf_features;
 

	
 
void LoadNewGRFFile(GRFConfig *config, uint file_index, GrfLoadingStage stage);
 
void LoadNewGRF(uint load_index, uint file_index);
src/newgrf_house.cpp
Show inline comments
 
@@ -83,7 +83,7 @@ void IncreaseBuildingCount(Town *t, Hous
 
{
 
	HouseClassID class_id = GetHouseSpecs(house_id)->class_id;
 

	
 
	if (!_have_newhouses) return;
 
	if (!HASBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES)) return;
 

	
 
	/* If there are 255 buildings of this type in this town, there are also
 
	 * at least that many houses of the same class in the town, and
 
@@ -111,7 +111,7 @@ void DecreaseBuildingCount(Town *t, Hous
 
{
 
	HouseClassID class_id = GetHouseSpecs(house_id)->class_id;
 

	
 
	if (!_have_newhouses) return;
 
	if (!HASBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES)) return;
 

	
 
	if (t->building_counts.id_count[house_id] > 0) t->building_counts.id_count[house_id]--;
 
	if (_building_counts.id_count[house_id] > 0)   _building_counts.id_count[house_id]--;
 
@@ -129,7 +129,7 @@ void DecreaseBuildingCount(Town *t, Hous
 
 */
 
void AfterLoadCountBuildings()
 
{
 
	if (!_have_newhouses) return;
 
	if (!HASBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES)) return;
 

	
 
	for (TileIndex t = 0; t < MapSize(); t++) {
 
		if (!IsTileType(t, MP_HOUSE)) continue;
src/player_gui.cpp
Show inline comments
 
@@ -324,7 +324,7 @@ static void SelectPlayerLiveryWndProc(Wi
 
	switch (e->event) {
 
		case WE_CREATE:
 
			LowerWindowWidget(w, WP(w, livery_d).livery_class + 2);
 
			if (!_have_2cc) {
 
			if (!HASBIT(_loaded_newgrf_features, GRFLOADED_2CC)) {
 
				HideWindowWidget(w, 11);
 
				HideWindowWidget(w, 12);
 
			}
 
@@ -366,7 +366,7 @@ static void SelectPlayerLiveryWndProc(Wi
 
					DrawSprite(SPR_SQUARE, GENERAL_SPRITE_COLOR(p->livery[scheme].colour1), 152, y);
 
					DrawString(165, y, STR_00D1_DARK_BLUE + p->livery[scheme].colour1, sel ? 0xC : 2);
 

	
 
					if (_have_2cc) {
 
					if (HASBIT(_loaded_newgrf_features, GRFLOADED_2CC)) {
 
						DrawSprite(SPR_SQUARE, GENERAL_SPRITE_COLOR(p->livery[scheme].colour2), 277, y);
 
						DrawString(290, y, STR_00D1_DARK_BLUE + p->livery[scheme].colour2, sel ? 0xC : 2);
 
					}
 
@@ -794,7 +794,7 @@ static void PlayerCompanyWndProc(Window 
 
				}
 

	
 
				case PCW_WIDGET_COLOR_SCHEME: {
 
					Window *wf = AllocateWindowDescFront(_have_2cc ? &_select_player_livery_2cc_desc : &_select_player_livery_desc, w->window_number);
 
					Window *wf = AllocateWindowDescFront(HASBIT(_loaded_newgrf_features, GRFLOADED_2CC) ? &_select_player_livery_2cc_desc : &_select_player_livery_desc, w->window_number);
 
					if (wf != NULL) {
 
						wf->caption_color = wf->window_number;
 
						WP(wf, livery_d).livery_class = LC_OTHER;
src/town_cmd.cpp
Show inline comments
 
@@ -1668,7 +1668,7 @@ static void DoBuildTownHouse(Town *t, Ti
 
		for (i = 0; i < HOUSE_MAX; i++) {
 
			hs = GetHouseSpecs(i);
 
			if ((~hs->building_availability & bitmask) == 0 && hs->enabled) {
 
				if (_have_newhouses) {
 
				if (HASBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES)) {
 
					probability_max += hs->probability;
 
					cumulative_probs[num] = probability_max;
 
				}
 
@@ -1677,7 +1677,7 @@ static void DoBuildTownHouse(Town *t, Ti
 
		}
 

	
 
		for (;;) {
 
			if (_have_newhouses) {
 
			if (HASBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES)) {
 
				uint r = RandomRange(probability_max);
 
				for (i = 0; i < num; i++) if (cumulative_probs[i] >= r) break;
 

	
 
@@ -1688,7 +1688,7 @@ static void DoBuildTownHouse(Town *t, Ti
 

	
 
			hs = GetHouseSpecs(house);
 

	
 
			if (_have_newhouses) {
 
			if (HASBIT(_loaded_newgrf_features, GRFLOADED_NEWHOUSES)) {
 
				if (hs->override != 0) hs = GetHouseSpecs(hs->override);
 

	
 
				if ((hs->extra_flags & BUILDING_IS_HISTORICAL) && !_generating_world) continue;
0 comments (0 inline, 0 general)