From 6ce8e26ecba668578b307ca7039a9af9e86310a7 Mon Sep 17 00:00:00 2001 From: cflip Date: Thu, 24 Mar 2022 09:17:45 -0600 Subject: Create new trains on right click instead of moving the existing train --- src/level.cpp | 12 ++++++------ src/level.h | 4 ++-- src/main.cpp | 14 ++++---------- 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 m_vehicles; + std::vector 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); } }); -- cgit v1.2.3