Skip to content

Commit 02ca3b9

Browse files
committed
Editor: Implement universal undo stack
- Almost everything can now be undone/redone
1 parent b984f95 commit 02ca3b9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+564
-509
lines changed

src/common/mapbase.cpp

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,12 @@
1616
#include "mapbase.hpp"
1717

1818
#include "tracktilebase.hpp"
19-
#include "trackdatabase.hpp"
2019

2120
#include <QPoint>
2221
#include <QPointF>
2322

24-
MapBase::MapBase(TrackDataBase & trackData, unsigned int cols, unsigned int rows)
25-
: m_trackData(trackData)
26-
, m_cols(cols)
23+
MapBase::MapBase(unsigned int cols, unsigned int rows)
24+
: m_cols(cols)
2725
, m_rows(rows)
2826
, m_map(rows, TrackTileRow(m_cols, nullptr))
2927
{}
@@ -125,11 +123,6 @@ std::vector<TrackTileBasePtr> MapBase::deleteRow(unsigned int at)
125123
return deleted;
126124
}
127125

128-
TrackDataBase & MapBase::trackData()
129-
{
130-
return m_trackData;
131-
}
132-
133126
MapBase::~MapBase()
134127
{
135128
}

src/common/mapbase.hpp

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,17 @@
1919
#include <vector>
2020
#include "tracktilebase.hpp"
2121

22-
class TrackDataBase;
23-
2422
//! Base class for the tile matrix used by TrackData.
2523
class MapBase
2624
{
2725
public:
2826

2927
//! Constructor.
30-
MapBase(TrackDataBase & trackData, unsigned int cols, unsigned int rows);
28+
MapBase(unsigned int cols, unsigned int rows);
29+
30+
MapBase(const MapBase & other) = delete;
3131

32-
MapBase(MapBase & other) = delete;
33-
MapBase & operator= (MapBase & other) = delete;
32+
MapBase & operator= (const MapBase & other) = delete;
3433

3534
enum class InsertDirection
3635
{
@@ -70,15 +69,8 @@ class MapBase
7069
//! Delete row at given index. Return deleted tiles.
7170
virtual std::vector<TrackTileBasePtr> deleteRow(unsigned int at);
7271

73-
protected:
74-
75-
//! Get track data reference.
76-
TrackDataBase & trackData();
77-
7872
private:
7973

80-
TrackDataBase & m_trackData;
81-
8274
unsigned int m_cols, m_rows;
8375

8476
typedef std::vector<TrackTileBasePtr> TrackTileRow;

src/common/objectbase.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class ObjectBase
3030
ObjectBase(QString category, QString role);
3131

3232
ObjectBase(ObjectBase & other) = delete;
33+
3334
ObjectBase & operator= (ObjectBase & other) = delete;
3435

3536
//! Destructor.

src/common/objects.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ void Objects::remove(ObjectBase & object)
4242
}
4343
}
4444

45+
void Objects::clear()
46+
{
47+
m_objects.clear();
48+
}
49+
4550
unsigned int Objects::count() const
4651
{
4752
return static_cast<int>(m_objects.size());

src/common/objects.hpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,19 @@ class Objects
3131
//! Constructor.
3232
Objects();
3333

34-
Objects(Objects & other) = delete;
35-
Objects & operator= (Objects & other) = delete;
34+
Objects(const Objects & other) = delete;
35+
36+
Objects & operator= (const Objects & other) = delete;
3637

3738
//! Add an object.
3839
void add(ObjectBasePtr object);
3940

4041
//! Remove an object.
4142
void remove(ObjectBase & object);
4243

44+
//! Clear the container.
45+
void clear();
46+
4347
//! Return object count.
4448
unsigned int count() const;
4549

src/common/route.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ class Route
3232
//! Constructor.
3333
Route();
3434

35-
Route(Route & other) = delete;
36-
Route & operator= (Route & other) = delete;
35+
Route(const Route & other) = delete;
36+
37+
Route & operator= (const Route & other) = delete;
3738

3839
typedef std::vector<TargetNodeBasePtr> RouteVector;
3940

src/common/targetnodebase.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class TargetNodeBase
3333
TargetNodeBase();
3434

3535
TargetNodeBase(TargetNodeBase & other) = delete;
36+
3637
TargetNodeBase & operator= (TargetNodeBase & other) = delete;
3738

3839
//! Destructor.

src/common/trackdatabase.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,16 @@
1616
#include "trackdatabase.hpp"
1717

1818
TrackDataBase::TrackDataBase(QString name, bool isUserTrack)
19-
: m_name(name)
20-
, m_index(999)
21-
, m_isUserTrack(isUserTrack)
19+
: m_name(name)
20+
, m_index(999)
21+
, m_isUserTrack(isUserTrack)
22+
{
23+
}
24+
25+
TrackDataBase::TrackDataBase(const TrackDataBase & other)
26+
: m_name(other.m_name)
27+
, m_index(other.m_index)
28+
, m_isUserTrack(other.m_isUserTrack)
2229
{
2330
}
2431

src/common/trackdatabase.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,10 @@ class TrackDataBase
180180
//! Constructor.
181181
TrackDataBase(QString name, bool isUserTrack);
182182

183-
TrackDataBase(TrackDataBase & other) = delete;
184-
TrackDataBase & operator= (TrackDataBase & other) = delete;
183+
//! Copy constructor.
184+
TrackDataBase(const TrackDataBase & other);
185+
186+
TrackDataBase & operator= (const TrackDataBase & other) = delete;
185187

186188
//! Destructor.
187189
virtual ~TrackDataBase();

src/common/tracktilebase.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,14 @@
1414
// along with Dust Racing 2D. If not, see <http://www.gnu.org/licenses/>.
1515

1616
#include "tracktilebase.hpp"
17-
#include "trackdatabase.hpp"
1817

1918
TrackTileBase::TrackTileBase(
20-
TrackDataBase & trackData,
2119
QPointF location,
2220
QPoint matrixLocation,
2321
const QString & type)
2422
: m_tileType(type)
2523
, m_location(location)
2624
, m_matrixLocation(matrixLocation)
27-
, m_trackData(trackData)
2825
, m_computerHint(TrackTileBase::CH_NONE)
2926
, m_excludeFromMinimap(false)
3027
{
@@ -63,11 +60,6 @@ const QString & TrackTileBase::tileType() const
6360
return m_tileType;
6461
}
6562

66-
TrackDataBase & TrackTileBase::trackData() const
67-
{
68-
return m_trackData;
69-
}
70-
7163
void TrackTileBase::setComputerHint(TrackTileBase::ComputerHint hint)
7264
{
7365
m_computerHint = hint;

0 commit comments

Comments
 (0)