summaryrefslogtreecommitdiff
path: root/src/cargotype.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/cargotype.cpp')
-rw-r--r--src/cargotype.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/cargotype.cpp b/src/cargotype.cpp
new file mode 100644
index 000000000..e17bff0ef
--- /dev/null
+++ b/src/cargotype.cpp
@@ -0,0 +1,46 @@
+/* $Id$ */
+
+#include "stdafx.h"
+#include "openttd.h"
+#include "macros.h"
+#include "table/sprites.h"
+#include "table/strings.h"
+#include "newgrf_cargo.h"
+#include "cargotype.h"
+
+#include "table/cargo_const.h"
+
+static CargoSpec _cargo[NUM_CARGO];
+
+static const byte INVALID_CARGO = 0xFF;
+
+
+void SetupCargoForClimate(LandscapeID l)
+{
+ assert(l < lengthof(_default_climate_cargo));
+
+ /* Reset and disable all cargo types */
+ memset(_cargo, 0, sizeof(_cargo));
+ for (CargoID i = 0; i < lengthof(_cargo); i++) _cargo[i].bitnum = INVALID_CARGO;
+
+ for (CargoID i = 0; i < lengthof(_default_climate_cargo[l]); i++) {
+ CargoLabel cl = _default_climate_cargo[l][i];
+
+ /* Loop through each of the default cargo types to see if
+ * the label matches */
+ for (uint j = 0; j < lengthof(_default_cargo); j++) {
+ if (_default_cargo[j].label == cl) {
+ _cargo[i] = _default_cargo[j];
+ break;
+ }
+ }
+ }
+}
+
+
+const CargoSpec *GetCargo(CargoID c)
+{
+ assert(c < lengthof(_cargo));
+ return &_cargo[c];
+}
+