summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcflip <cflip@cflip.net>2022-03-24 09:17:45 -0600
committercflip <cflip@cflip.net>2022-03-24 09:17:45 -0600
commit6ce8e26ecba668578b307ca7039a9af9e86310a7 (patch)
tree1a55cfea49728f3031b4285ad30318cae5a9192d
parent09cc67351ec68ed37b2e664c9654f9aabd8fa33b (diff)
Create new trains on right click instead of moving the existing train
-rw-r--r--src/level.cpp12
-rw-r--r--src/level.h4
-rw-r--r--src/main.cpp14
3 files changed, 12 insertions, 18 deletions
diff --git a/src/level.cpp b/src/level.cpp
index 41b3c0e..f3235a8 100644
--- a/src/level.cpp
+++ b/src/level.cpp
@@ -32,8 +32,8 @@ void Level::set(int x, int y, uint8_t tile)
void Level::update()
{
- for (Train* vehicle : m_vehicles) {
- if (vehicle) vehicle->update();
+ for (auto& vehicle : m_vehicles) {
+ vehicle.update();
}
}
@@ -68,14 +68,14 @@ void Level::draw(Bitmap& bitmap, int xo, int yo)
}
}
- for (Train* vehicle : m_vehicles) {
- if (vehicle) vehicle->draw(bitmap, xo, yo);
+ for (auto& vehicle : m_vehicles) {
+ vehicle.draw(bitmap, xo, yo);
}
}
-void Level::addVehicle(Train& vehicle)
+Train* Level::addVehicle()
{
- m_vehicles.emplace_back(&vehicle);
+ return &m_vehicles.emplace_back(*this);
}
void Level::toggleTile(int x, int y)
diff --git a/src/level.h b/src/level.h
index 39b5efd..cfe40e8 100644
--- a/src/level.h
+++ b/src/level.h
@@ -38,7 +38,7 @@ public:
void update();
void draw(Bitmap& bitmap, int xo, int yo);
- void addVehicle(Train&);
+ Train* addVehicle();
void toggleTile(int x, int y);
void save() const;
@@ -48,7 +48,7 @@ private:
int m_width, m_height;
uint8_t* m_tiles;
- std::vector<Train*> m_vehicles;
+ std::vector<Train> m_vehicles;
};
TrackDirection ChooseDirection(Level& level, int x, int y); \ No newline at end of file
diff --git a/src/main.cpp b/src/main.cpp
index 28b2281..b555aa5 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -18,14 +18,6 @@ int main(int argc, char** argv)
Level level(32, 32, tiles);
Bitmap bitmap(Width, Height);
- Train engine(level);
- Train wagon(level);
-
- engine.addVehicle(&wagon);
-
- level.addVehicle(engine);
- level.addVehicle(wagon);
-
int xOffs = 0, yOffs = 0;
int xDrag, yDrag;
Point2D hoveredTile = { 0, 0 };
@@ -53,8 +45,10 @@ int main(int argc, char** argv)
int mx = x / Scale + xOffs;
int my = y / Scale + yOffs;
auto pos = ScreenToTile({ mx, my });
- engine.setPosition(pos.x, pos.y);
- engine.setSpeed(0.2f);
+
+ Train* train = level.addVehicle();
+ train->setPosition(pos.x, pos.y);
+ train->setSpeed(0.2f);
}
});