src/newgrf_engine.cpp
branchNewGRF_ports
changeset 6872 1c4a4a609f85
parent 6871 5a9dc001e1ad
child 6878 7d1ff2f621c7
--- a/src/newgrf_engine.cpp	Mon Dec 03 23:39:38 2007 +0000
+++ b/src/newgrf_engine.cpp	Tue Jan 22 21:00:30 2008 +0000
@@ -6,10 +6,10 @@
 #include "openttd.h"
 #include "variables.h"
 #include "debug.h"
-#include "functions.h"
 #include "engine.h"
 #include "train.h"
-#include "player.h"
+#include "player_func.h"
+#include "player_base.h"
 #include "station.h"
 #include "airport.h"
 #include "newgrf.h"
@@ -18,29 +18,31 @@
 #include "newgrf_station.h"
 #include "newgrf_spritegroup.h"
 #include "newgrf_cargo.h"
-#include "date.h"
-#include "helpers.hpp"
 #include "cargotype.h"
+#include "date_func.h"
+#include "vehicle_func.h"
+#include "core/random_func.hpp"
+#include "direction_func.h"
 
 
 int _traininfo_vehicle_pitch = 0;
 int _traininfo_vehicle_width = 29;
 
 struct WagonOverride {
-	byte *train_id;
-	int trains;
+	EngineID *train_id;
+	uint trains;
 	CargoID cargo;
 	const SpriteGroup *group;
 };
 
 struct WagonOverrides {
-	int overrides_count;
+	uint overrides_count;
 	WagonOverride *overrides;
 };
 
 static WagonOverrides _engine_wagon_overrides[TOTAL_NUM_ENGINES];
 
-void SetWagonOverrideSprites(EngineID engine, CargoID cargo, const SpriteGroup *group, byte *train_id, int trains)
+void SetWagonOverrideSprites(EngineID engine, CargoID cargo, const SpriteGroup *group, EngineID *train_id, uint trains)
 {
 	WagonOverrides *wos;
 	WagonOverride *wo;
@@ -59,11 +61,11 @@
 	wo->group = group;
 	wo->cargo = cargo;
 	wo->trains = trains;
-	wo->train_id = MallocT<byte>(trains);
-	memcpy(wo->train_id, train_id, trains);
+	wo->train_id = MallocT<EngineID>(trains);
+	memcpy(wo->train_id, train_id, trains * sizeof *train_id);
 }
 
-const SpriteGroup *GetWagonOverrideSpriteSet(EngineID engine, CargoID cargo, byte overriding_engine)
+const SpriteGroup *GetWagonOverrideSpriteSet(EngineID engine, CargoID cargo, EngineID overriding_engine)
 {
 	const WagonOverrides *wos = &_engine_wagon_overrides[engine];
 
@@ -72,12 +74,12 @@
 	 * for O(1). Or O(logMlogN) and searching binary tree or smt. like
 	 * that. --pasky */
 
-	for (int i = 0; i < wos->overrides_count; i++) {
+	for (uint i = 0; i < wos->overrides_count; i++) {
 		const WagonOverride *wo = &wos->overrides[i];
 
 		if (wo->cargo != cargo && wo->cargo != CT_DEFAULT) continue;
 
-		for (int j = 0; j < wo->trains; j++) {
+		for (uint j = 0; j < wo->trains; j++) {
 			if (wo->train_id[j] == overriding_engine) return wo->group;
 		}
 	}
@@ -89,16 +91,10 @@
  */
 void UnloadWagonOverrides()
 {
-	WagonOverrides *wos;
-	WagonOverride *wo;
-	EngineID engine;
-	int i;
-
-	for (engine = 0; engine < TOTAL_NUM_ENGINES; engine++) {
-		wos = &_engine_wagon_overrides[engine];
-		for (i = 0; i < wos->overrides_count; i++) {
-			wo = &wos->overrides[i];
-			wo->group = NULL;
+	for (EngineID engine = 0; engine < TOTAL_NUM_ENGINES; engine++) {
+		WagonOverrides *wos = &_engine_wagon_overrides[engine];
+		for (uint i = 0; i < wos->overrides_count; i++) {
+			WagonOverride *wo = &wos->overrides[i];
 			free(wo->train_id);
 		}
 		free(wos->overrides);
@@ -131,33 +127,6 @@
 	memset(_engine_grf, 0, sizeof(_engine_grf));
 }
 
-static const SpriteGroup *heli_rotor_custom_sprites[NUM_AIRCRAFT_ENGINES];
-
-/** Load a rotor override sprite group for an aircraft */
-void SetRotorOverrideSprites(EngineID engine, const SpriteGroup *group)
-{
-	assert(engine >= AIRCRAFT_ENGINES_INDEX);
-	assert(engine < AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES);
-
-	if (heli_rotor_custom_sprites[engine - AIRCRAFT_ENGINES_INDEX] != NULL) {
-		grfmsg(6, "SetRotorOverrideSprites: engine %d already has group -- replacing.", engine);
-	}
-	heli_rotor_custom_sprites[engine - AIRCRAFT_ENGINES_INDEX] = group;
-}
-
-/** Unload all rotor override sprite groups */
-void UnloadRotorOverrideSprites()
-{
-	EngineID engine;
-
-	/* Starting at AIRCRAFT_ENGINES_INDEX may seem pointless, but it means
-	 * the context of EngineID is correct */
-	for (engine = AIRCRAFT_ENGINES_INDEX; engine < AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES; engine++) {
-		heli_rotor_custom_sprites[engine - AIRCRAFT_ENGINES_INDEX] = NULL;
-	}
-}
-
-
 /**
  * Tie a GRFFile entry to an engine, to allow us to retrieve GRF parameters
  * etc during a game.
@@ -722,8 +691,6 @@
 		case 0x5D: return GB(ClampToI32(v->value),  8, 24);
 		case 0x5E: return GB(ClampToI32(v->value), 16, 16);
 		case 0x5F: return GB(ClampToI32(v->value), 24,  8);
-		case 0x60: return v->string_id;
-		case 0x61: return GB(v->string_id, 8, 8);
 		case 0x72: return v->cargo_subtype;
 		case 0x7A: return v->random_bits;
 		case 0x7B: return v->waiting_triggers;
@@ -788,7 +755,7 @@
 
 	totalsets = in_motion ? group->g.real.num_loaded : group->g.real.num_loading;
 
-	if (v->cargo.Count() == v->cargo_cap || totalsets == 1) {
+	if (v->cargo.Count() >= v->cargo_cap || totalsets == 1) {
 		set = totalsets - 1;
 	} else if (v->cargo.Empty() || totalsets == 2) {
 		set = 0;
@@ -888,7 +855,7 @@
 
 	object.info_view = info_view;
 
-	group = heli_rotor_custom_sprites[engine - AIRCRAFT_ENGINES_INDEX];
+	group = GetWagonOverrideSpriteSet(engine, CT_DEFAULT, engine);
 	group = Resolve(group, &object);
 
 	if (group == NULL || group->type != SGT_RESULT) return 0;
@@ -1056,27 +1023,6 @@
 	DoTriggerVehicle(v, trigger, 0, true);
 }
 
-StringID _engine_custom_names[TOTAL_NUM_ENGINES];
-
-void SetCustomEngineName(EngineID engine, StringID name)
-{
-	assert(engine < lengthof(_engine_custom_names));
-	_engine_custom_names[engine] = name;
-}
-
-void UnloadCustomEngineNames()
-{
-	EngineID i;
-	for (i = 0; i < TOTAL_NUM_ENGINES; i++) {
-		_engine_custom_names[i] = 0;
-	}
-}
-
-StringID GetCustomEngineName(EngineID engine)
-{
-	return _engine_custom_names[engine] == 0 ? _engine_name_strings[engine] : _engine_custom_names[engine];
-}
-
 /* Functions for changing the order of vehicle purchase lists
  * This is currently only implemented for rail vehicles. */
 static EngineID _engine_list_order[NUM_TRAIN_ENGINES];