Skip to content

Commit

Permalink
prepare BlockIdentifier to be accessed easier
Browse files Browse the repository at this point in the history
apply singleton pattern to remaining *Identifier objects
  • Loading branch information
EtlamGit committed Dec 28, 2018
1 parent cee1468 commit e4b662b
Show file tree
Hide file tree
Showing 15 changed files with 113 additions and 78 deletions.
5 changes: 5 additions & 0 deletions biomeidentifier.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,11 @@ BiomeIdentifier::~BiomeIdentifier() {
}
}

BiomeIdentifier& BiomeIdentifier::Instance() {
static BiomeIdentifier singleton;
return singleton;
}

BiomeInfo &BiomeIdentifier::getBiome(int biome) {
QList<BiomeInfo*> &list = biomes[biome];
// search backwards for priority sorting to work
Expand Down
14 changes: 11 additions & 3 deletions biomeidentifier.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,21 @@ class BiomeInfo {

class BiomeIdentifier {
public:
BiomeIdentifier();
~BiomeIdentifier();
// singleton: access to global usable instance
static BiomeIdentifier &Instance();

int addDefinitions(JSONArray *, int pack = -1);
void enableDefinitions(int id);
void disableDefinitions(int id);
BiomeInfo &getBiome(int id);
private:

private:
// singleton: prevent access to constructor and copyconstructor
BiomeIdentifier();
~BiomeIdentifier();
BiomeIdentifier(const BiomeIdentifier &);
BiomeIdentifier &operator=(const BiomeIdentifier &);

QHash<int, QList<BiomeInfo*>> biomes;
QList<QList<BiomeInfo*> > packs;
};
Expand Down
10 changes: 10 additions & 0 deletions blockidentifier.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@ bool BlockInfo::biomeFoliage() { return foliage; }
void BlockInfo::setBiomeGrass(bool value) { grass = value; }
void BlockInfo::setBiomeFoliage(bool value) { foliage = value; }


// --------- --------- --------- ---------
// BlockIdentifier
// --------- --------- --------- ---------

BlockIdentifier::BlockIdentifier() {
for (int i = 0; i < 16; i++)
unknownBlock.colors[i] = 0xff00ff;
Expand All @@ -94,6 +99,11 @@ BlockIdentifier::~BlockIdentifier() {
}
}

BlockIdentifier& BlockIdentifier::Instance() {
static BlockIdentifier singleton;
return singleton;
}

BlockInfo &BlockIdentifier::getBlockInfo(uint hid) {
// first apply the mask
if (blocks.contains(hid)) {
Expand Down
14 changes: 11 additions & 3 deletions blockidentifier.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,21 @@ class BlockInfo {

class BlockIdentifier {
public:
BlockIdentifier();
~BlockIdentifier();
// singleton: access to global usable instance
static BlockIdentifier &Instance();

int addDefinitions(JSONArray *, int pack = -1);
void enableDefinitions(int id);
void disableDefinitions(int id);
BlockInfo &getBlockInfo(uint hid);
private:

private:
// singleton: prevent access to constructor and copyconstructor
BlockIdentifier();
~BlockIdentifier();
BlockIdentifier(const BlockIdentifier &);
BlockIdentifier &operator=(const BlockIdentifier &);

void parseDefinition(JSONObject *block, BlockInfo *parent, int pack);
QMap<uint, BlockInfo*> blocks;
QList<QList<BlockInfo*> > packs;
Expand Down
2 changes: 1 addition & 1 deletion chunk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#include "./flatteningconverter.h"

quint16 getBits(const unsigned char *data, int pos, int n) {
quint16 result = 0;
// quint16 result = 0;
int arrIndex = pos/8;
int bitIndex = pos%8;
quint32 loc =
Expand Down
73 changes: 30 additions & 43 deletions definitionmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,12 @@
DefinitionManager::DefinitionManager(QWidget *parent) :
QWidget(parent),
isUpdating(false),
dimensionManager(DimensionIdentifier::Instance()),
blockManager(BlockIdentifier::Instance()),
biomeManager(BiomeIdentifier::Instance()),
entityManager(EntityIdentifier::Instance()),
flatteningConverter(FlatteningConverter::Instance()) {
flatteningConverter(FlatteningConverter::Instance())
{
setWindowFlags(Qt::Window);
setWindowTitle(tr("Definitions"));

Expand Down Expand Up @@ -67,10 +71,6 @@ DefinitionManager::DefinitionManager(QWidget *parent) :
emit packSelected(false);
setLayout(layout);

dimensionManager = new DimensionIdentifier;
blockManager = new BlockIdentifier;
biomeManager = new BiomeIdentifier;

QSettings settings;
sorted = settings.value("packs").toList();

Expand All @@ -97,21 +97,8 @@ DefinitionManager::DefinitionManager(QWidget *parent) :
refresh();
}

DefinitionManager::~DefinitionManager() {
delete dimensionManager;
delete blockManager;
delete biomeManager;
}
DefinitionManager::~DefinitionManager() {}

BlockIdentifier *DefinitionManager::blockIdentifier() {
return blockManager;
}
BiomeIdentifier *DefinitionManager::biomeIdentifier() {
return biomeManager;
}
DimensionIdentifier *DefinitionManager::dimensionIdentifer() {
return dimensionManager;
}

void DefinitionManager::refresh() {
table->clearContents();
Expand Down Expand Up @@ -154,21 +141,21 @@ void DefinitionManager::toggledPack(bool onoff) {
switch (def.type) {
case Definition::Block:
if (onoff)
blockManager->enableDefinitions(def.id);
blockManager.enableDefinitions(def.id);
else
blockManager->disableDefinitions(def.id);
blockManager.disableDefinitions(def.id);
break;
case Definition::Biome:
if (onoff)
biomeManager->enableDefinitions(def.id);
biomeManager.enableDefinitions(def.id);
else
biomeManager->disableDefinitions(def.id);
biomeManager.disableDefinitions(def.id);
break;
case Definition::Dimension:
if (onoff)
dimensionManager->enableDefinitions(def.id);
dimensionManager.enableDefinitions(def.id);
else
dimensionManager->disableDefinitions(def.id);
dimensionManager.disableDefinitions(def.id);
break;
case Definition::Entity:
if (onoff)
Expand All @@ -178,14 +165,14 @@ void DefinitionManager::toggledPack(bool onoff) {
break;
case Definition::Pack:
if (onoff) {
blockManager->enableDefinitions(def.blockid);
biomeManager->enableDefinitions(def.biomeid);
dimensionManager->enableDefinitions(def.dimensionid);
blockManager.enableDefinitions(def.blockid);
biomeManager.enableDefinitions(def.biomeid);
dimensionManager.enableDefinitions(def.dimensionid);
entityManager.enableDefinitions(def.entityid);
} else {
blockManager->disableDefinitions(def.blockid);
biomeManager->disableDefinitions(def.biomeid);
dimensionManager->disableDefinitions(def.dimensionid);
blockManager.disableDefinitions(def.blockid);
biomeManager.disableDefinitions(def.biomeid);
dimensionManager.disableDefinitions(def.dimensionid);
entityManager.disableDefinitions(def.entityid);
}
break;
Expand Down Expand Up @@ -401,15 +388,15 @@ void DefinitionManager::loadDefinition(QString path) {
dynamic_cast<JSONArray*>(def->at("data")));
d.type = Definition::Converter;
} else if (type == "flatblock") {
d.id = blockManager->addDefinitions(
d.id = blockManager.addDefinitions(
dynamic_cast<JSONArray*>(def->at("data")));
d.type = Definition::Block;
} else if (type == "biome") {
d.id = biomeManager->addDefinitions(
d.id = biomeManager.addDefinitions(
dynamic_cast<JSONArray*>(def->at("data")));
d.type = Definition::Biome;
} else if (type == "dimension") {
d.id = dimensionManager->addDefinitions(
d.id = dimensionManager.addDefinitions(
dynamic_cast<JSONArray*>(def->at("data")));
d.type = Definition::Dimension;
} else if (type == "entity") {
Expand Down Expand Up @@ -455,13 +442,13 @@ void DefinitionManager::loadDefinition(QString path) {
// d.blockid = flatteningConverter->addDefinitions(
// dynamic_cast<JSONArray*>(def->at("data")), d.blockid);
} else if (type == "flatblock") {
d.blockid = blockManager->addDefinitions(
d.blockid = blockManager.addDefinitions(
dynamic_cast<JSONArray*>(def->at("data")), d.blockid);
} else if (type == "biome") {
d.biomeid = biomeManager->addDefinitions(
d.biomeid = biomeManager.addDefinitions(
dynamic_cast<JSONArray*>(def->at("data")), d.biomeid);
} else if (type == "dimension") {
d.dimensionid = dimensionManager->addDefinitions(
d.dimensionid = dimensionManager.addDefinitions(
dynamic_cast<JSONArray*>(def->at("data")), d.dimensionid);
} else if (type == "entity") {
d.entityid = entityManager.addDefinitions(
Expand All @@ -480,21 +467,21 @@ void DefinitionManager::removeDefinition(QString path) {
if (def.path == path) {
switch (def.type) {
case Definition::Block:
blockManager->disableDefinitions(def.id);
blockManager.disableDefinitions(def.id);
break;
case Definition::Biome:
biomeManager->disableDefinitions(def.id);
biomeManager.disableDefinitions(def.id);
break;
case Definition::Dimension:
dimensionManager->disableDefinitions(def.id);
dimensionManager.disableDefinitions(def.id);
break;
case Definition::Entity:
entityManager.disableDefinitions(def.id);
break;
case Definition::Pack:
blockManager->disableDefinitions(def.blockid);
biomeManager->disableDefinitions(def.biomeid);
dimensionManager->disableDefinitions(def.dimensionid);
blockManager.disableDefinitions(def.blockid);
biomeManager.disableDefinitions(def.biomeid);
dimensionManager.disableDefinitions(def.dimensionid);
entityManager.disableDefinitions(def.entityid);
break;
}
Expand Down
11 changes: 4 additions & 7 deletions definitionmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,6 @@ class DefinitionManager : public QWidget {
QSize minimumSizeHint() const;
QSize sizeHint() const;

BlockIdentifier *blockIdentifier();
BiomeIdentifier *biomeIdentifier();
DimensionIdentifier *dimensionIdentifer();
void autoUpdate();

signals:
Expand Down Expand Up @@ -74,10 +71,10 @@ class DefinitionManager : public QWidget {
void removeDefinition(QString path);
void refresh();
QHash<QString, Definition> definitions;
BiomeIdentifier *biomeManager; // todo: migrate to reference to singleton
BlockIdentifier *blockManager; // todo: migrate to reference to singleton
DimensionIdentifier *dimensionManager; // todo: migrate to reference to singleton
EntityIdentifier &entityManager;
BiomeIdentifier &biomeManager;
BlockIdentifier &blockManager;
DimensionIdentifier &dimensionManager;
EntityIdentifier &entityManager;
FlatteningConverter &flatteningConverter;
QString selected;
QList<QVariant> sorted;
Expand Down
12 changes: 12 additions & 0 deletions dimensionidentifier.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ class DimensionDef {
bool enabled;
};


// --------- --------- --------- ---------
// DimensionIdentifier
// --------- --------- --------- ---------

DimensionIdentifier::DimensionIdentifier() {
group = NULL;
}
Expand All @@ -25,6 +30,12 @@ DimensionIdentifier::~DimensionIdentifier() {
}
}

DimensionIdentifier& DimensionIdentifier::Instance() {
static DimensionIdentifier singleton;
return singleton;
}


void DimensionIdentifier::enableDefinitions(int pack) {
if (pack < 0) return;
int len = packs[pack].length();
Expand Down Expand Up @@ -85,6 +96,7 @@ void DimensionIdentifier::removeDimensions(QMenu *menu) {
group = NULL;
}
}

void DimensionIdentifier::getDimensions(QDir path, QMenu *menu,
QObject *parent) {
// first get the currently selected dimension so it doesn't change
Expand Down
11 changes: 9 additions & 2 deletions dimensionidentifier.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,9 @@ class DimensionIdentifier : public QObject {
Q_OBJECT

public:
DimensionIdentifier();
~DimensionIdentifier();
// singleton: access to global usable instance
static DimensionIdentifier &Instance();

int addDefinitions(JSONArray *, int pack = -1);
void enableDefinitions(int id);
void disableDefinitions(int id);
Expand All @@ -42,6 +43,12 @@ class DimensionIdentifier : public QObject {
void viewDimension();

private:
// singleton: prevent access to constructor and copyconstructor
DimensionIdentifier();
~DimensionIdentifier();
DimensionIdentifier(const DimensionIdentifier &);
DimensionIdentifier &operator=(const DimensionIdentifier &);

void addDimension(QDir path, QString dir, QString name, int scale,
QObject *parent);
QList<QAction *> items;
Expand Down
5 changes: 5 additions & 0 deletions entityidentifier.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ EntityInfo::EntityInfo(QString name, QString category, QColor brushColor,
static EntityInfo entityDummy("Name unknown", "Others", // Name Category
Qt::black, Qt::black); // Black circle with Black border


// --------- --------- --------- ---------
// EntityIdentifier
// --------- --------- --------- ---------

EntityIdentifier::EntityIdentifier() {}
EntityIdentifier::~EntityIdentifier() {}

Expand Down
4 changes: 2 additions & 2 deletions flatteningconverter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@ BlockData * FlatteningConverter::getPalette() {
return palette;
}

void FlatteningConverter::enableDefinitions(int pack) {
void FlatteningConverter::enableDefinitions(int /*pack*/) {
// if (pack < 0) return;
// int len = packs[pack].length();
// for (int i = 0; i < len; i++)
// packs[pack][i]->enabled = true;
}

void FlatteningConverter::disableDefinitions(int pack) {
void FlatteningConverter::disableDefinitions(int /*pack*/) {
// if (pack < 0) return;
// int len = packs[pack].length();
// for (int i = 0; i < len; i++)
Expand Down
Loading

0 comments on commit e4b662b

Please sign in to comment.