Move History and HistoryItem to core/

This commit is contained in:
Marcus Huderle 2018-09-24 10:48:36 -05:00
parent 262c79776e
commit 24e79eb94e
8 changed files with 98 additions and 65 deletions

4
core/history.cpp Normal file
View file

@ -0,0 +1,4 @@
#include "history.h"
#include "historyitem.h"

58
core/history.h Normal file
View file

@ -0,0 +1,58 @@
#ifndef HISTORY_H
#define HISTORY_H
#include <QList>
template <typename T>
class History {
public:
History() { }
T back() {
if (head > 0) {
return history.at(--head);
}
return NULL;
}
T next() {
if (head + 1 < history.length()) {
return history.at(++head);
}
return NULL;
}
void push(T commit) {
while (head + 1 < history.length()) {
T item = history.last();
history.removeLast();
delete item;
}
if (saved > head) {
saved = -1;
}
history.append(commit);
head++;
}
T current() {
if (head < 0 || history.length() == 0) {
return NULL;
}
return history.at(head);
}
void save() {
saved = head;
}
bool isSaved() {
return saved == head;
}
private:
QList<T> history;
int head = -1;
int saved = -1;
};
#endif // HISTORY_H

11
core/historyitem.cpp Normal file
View file

@ -0,0 +1,11 @@
#include "historyitem.h"
HistoryItem::HistoryItem(Blockdata *metatiles, int layoutWidth, int layoutHeight) {
this->metatiles = metatiles;
this->layoutWidth = layoutWidth;
this->layoutHeight = layoutHeight;
}
HistoryItem::~HistoryItem() {
if (this->metatiles) delete this->metatiles;
}

15
core/historyitem.h Normal file
View file

@ -0,0 +1,15 @@
#ifndef HISTORYITEM_H
#define HISTORYITEM_H
#include "blockdata.h"
class HistoryItem {
public:
Blockdata *metatiles;
int layoutWidth;
int layoutHeight;
HistoryItem(Blockdata *metatiles, int layoutWidth, int layoutHeight);
~HistoryItem();
};
#endif // HISTORYITEM_H

View file

@ -1,3 +1,5 @@
#include "core/history.h"
#include "core/historyitem.h"
#include "map.h"
#include "project.h"

68
map.h
View file

@ -1,9 +1,11 @@
#ifndef MAP_H
#define MAP_H
#include "core/tileset.h"
#include "core/blockdata.h"
#include "core/history.h"
#include "core/historyitem.h"
#include "core/maplayout.h"
#include "core/tileset.h"
#include "event.h"
#include <QPixmap>
@ -12,70 +14,6 @@
#include <QGraphicsPixmapItem>
#include <math.h>
class HistoryItem {
public:
Blockdata *metatiles;
int layoutWidth;
int layoutHeight;
HistoryItem(Blockdata *metatiles_, int layoutWidth_, int layoutHeight_) {
this->metatiles = metatiles_;
this->layoutWidth = layoutWidth_;
this->layoutHeight = layoutHeight_;
}
~HistoryItem() {
if (metatiles) delete metatiles;
}
};
template <typename T>
class History {
public:
History() {
}
T back() {
if (head > 0) {
return history.at(--head);
}
return NULL;
}
T next() {
if (head + 1 < history.length()) {
return history.at(++head);
}
return NULL;
}
void push(T commit) {
while (head + 1 < history.length()) {
HistoryItem *item = history.last();
history.removeLast();
delete item;
}
if (saved > head) {
saved = -1;
}
history.append(commit);
head++;
}
T current() {
if (head < 0 || history.length() == 0) {
return NULL;
}
return history.at(head);
}
void save() {
saved = head;
}
bool isSaved() {
return saved == head;
}
private:
QList<T> history;
int head = -1;
int saved = -1;
};
class Connection {
public:
Connection() {

View file

@ -17,6 +17,7 @@ ICON = resources/icons/porymap-icon-1.ico
SOURCES += core/block.cpp \
core/blockdata.cpp \
core/heallocation.cpp \
core/historyitem.cpp \
core/maplayout.cpp \
core/metatile.cpp \
core/tile.cpp \
@ -40,6 +41,8 @@ SOURCES += core/block.cpp \
HEADERS += core/block.h \
core/blockdata.h \
core/heallocation.h \
core/history.h \
core/historyitem.h \
core/maplayout.h \
core/metatile.h \
core/tile.h \

View file

@ -1,5 +1,7 @@
#include "parseutil.h"
#include "project.h"
#include "core/history.h"
#include "core/historyitem.h"
#include "core/tile.h"
#include "core/tileset.h"
#include "event.h"