--- 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];