summaryrefslogtreecommitdiff
path: root/game/vehicles/railloco.h
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2021-02-15 01:36:51 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2021-02-15 01:36:51 +0000
commit2812584e271a62d8edd4d8ec683ea4c644730df2 (patch)
treeebf24b19e6e5cd7b0bc3f7f1e2aad6f2479f2692 /game/vehicles/railloco.h
parentCorrectly follow rails according to wheelbase (diff)
downloadilt-2812584e271a62d8edd4d8ec683ea4c644730df2.tar.bz2
ilt-2812584e271a62d8edd4d8ec683ea4c644730df2.tar.xz
ilt-2812584e271a62d8edd4d8ec683ea4c644730df2.zip
Basic support for rail wagons
Diffstat (limited to 'game/vehicles/railloco.h')
-rw-r--r--game/vehicles/railloco.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/game/vehicles/railloco.h b/game/vehicles/railloco.h
index ff8871b..537d448 100644
--- a/game/vehicles/railloco.h
+++ b/game/vehicles/railloco.h
@@ -1,21 +1,42 @@
#include "game/network/link.h"
#include "game/vehicles/vehicle.h"
#include "game/worldobject.h"
+#include <memory>
#include <string>
+#include <vector>
class RailVehicle : public Vehicle {
public:
using Vehicle::Vehicle;
float wheelBase;
+ float length;
};
+class RailWagon : public RailVehicle {
+public:
+ using RailVehicle::RailVehicle;
+ void tick(TickDuration elapsed) override;
+ friend class RailLoco;
+};
+using RailWagonPtr = std::weak_ptr<RailWagon>;
+
class RailLoco : public RailVehicle {
public:
using RailVehicle::RailVehicle;
void tick(TickDuration elapsed) override;
+
+ std::vector<RailWagonPtr> wagons;
+
+private:
+ void updateWagons() const;
};
class Brush47 : public RailLoco {
public:
explicit Brush47(const LinkPtr & p);
};
+
+class Brush47Wagon : public RailWagon {
+public:
+ explicit Brush47Wagon(const LinkPtr & p);
+};