From 1c48512f627f3c479fa4c95ddb5f84c7def685ac Mon Sep 17 00:00:00 2001 From: Andrew nuark G Date: Sat, 19 Dec 2020 00:09:40 +0700 Subject: [PATCH] Apparatus little overhaul --- sea_transport/system/apparatus.cpp | 45 +++++++++++------------------- sea_transport/system/apparatus.h | 9 +++--- 2 files changed, 21 insertions(+), 33 deletions(-) diff --git a/sea_transport/system/apparatus.cpp b/sea_transport/system/apparatus.cpp index 409037d..698f2a8 100644 --- a/sea_transport/system/apparatus.cpp +++ b/sea_transport/system/apparatus.cpp @@ -4,16 +4,9 @@ apparatus *apparatus::_instance = nullptr; const QString apparatus::filename = "data.bin"; -void apparatus::open_reading_stream() { +void apparatus::open_stream() { this->_bin_file = new QFile(apparatus::filename); - this->_bin_file->open(QIODevice::ReadOnly); - - stream.setDevice(_bin_file); -} - -void apparatus::open_writing_stream() { - this->_bin_file = new QFile(apparatus::filename); - this->_bin_file->open(QIODevice::WriteOnly); + this->_bin_file->open(QIODevice::ReadWrite); stream.setDevice(_bin_file); } @@ -27,35 +20,27 @@ void apparatus::close_stream() { } apparatus::apparatus() { - this->open_reading_stream(); - this->loadGIDS(); - this->deserialize_data(); - this->close_stream(); + } apparatus::~apparatus() { - if (this->_bin_file) { - this->_bin_file->flush(); - this->_bin_file->close(); - delete this->_bin_file; - this->_bin_file = nullptr; - } + this->shutdown(); } apparatus& apparatus::instance() { if (apparatus::_instance == nullptr) { - apparatus::init(); + throw std::runtime_error("System non initialized!"); } return *apparatus::_instance; } bool apparatus::isFirstRun() { - return QFile(apparatus::filename).exists(); + return QFile().exists("first_run"); } void apparatus::generate_empty_data() { - this->open_writing_stream(); + this->open_stream(); this->writeGIDS(); this->serialize_data(); this->close_stream(); @@ -71,15 +56,18 @@ const object_system& apparatus::get_object_subsystem() { void apparatus::init() { apparatus::_instance = new apparatus(); + + apparatus::instance().open_stream(); + apparatus::instance().loadGIDS(); + apparatus::instance().deserialize_data(); + apparatus::instance().close_stream(); } void apparatus::shutdown() { - if (apparatus::_instance != nullptr) { - apparatus::_instance->open_writing_stream(); - apparatus::_instance->writeGIDS(); - apparatus::_instance->serialize_data(); - apparatus::_instance->close_stream(); - } + apparatus::instance().open_stream(); + apparatus::instance().writeGIDS(); + apparatus::instance().serialize_data(); + apparatus::instance().close_stream(); } void apparatus::writeGIDS() { @@ -96,6 +84,7 @@ void apparatus::loadGIDS() { } void apparatus::serialize_data() { + QFile().remove("first_run"); this->_auth_system.init(this->stream); this->_object_system.init(this->stream); } diff --git a/sea_transport/system/apparatus.h b/sea_transport/system/apparatus.h index 4645d94..6c64d15 100644 --- a/sea_transport/system/apparatus.h +++ b/sea_transport/system/apparatus.h @@ -4,13 +4,13 @@ #include "auth_system.h" #include "object_system.h" +#include "../entities/vessel_entity.h" +#include "../entities/storage_entity.h" + #include #include #include -#include "../entities/vessel_entity.h" -#include "../entities/storage_entity.h" - class apparatus { @@ -24,8 +24,7 @@ private: auth_system _auth_system; object_system _object_system; - void open_reading_stream(); - void open_writing_stream(); + void open_stream(); void close_stream(); void writeGIDS();