diff --git a/app/mourne_root.cpp b/app/mourne_root.cpp index 799f4f3..4c8082f 100644 --- a/app/mourne_root.cpp +++ b/app/mourne_root.cpp @@ -23,9 +23,10 @@ #include "assignments/assignment_initializer.h" #include "buildings/building_initializer.h" -#include "village/village_initializer.h" #include "weather/weather_initializer.h" +#include "village/village_node.h" + void MourneRoot::handle_request_main(Request *request) { if (process_middlewares(request)) { return; @@ -256,13 +257,11 @@ void MourneRoot::setup_middleware() { void MourneRoot::create_table() { // TODO move these to the node system and remove from here BuildingController::get_singleton()->create_table(); - VillageController::get_singleton()->create_table(); AssignmentController::get_singleton()->create_table(); WeatherController::get_singleton()->create_table(); } void MourneRoot::drop_table() { BuildingController::get_singleton()->drop_table(); - VillageController::get_singleton()->drop_table(); AssignmentController::get_singleton()->drop_table(); WeatherController::get_singleton()->drop_table(); } @@ -275,7 +274,6 @@ void MourneRoot::udpate_table() { void MourneRoot::create_default_entries() { // TODO move these to the node system and remove from here BuildingController::get_singleton()->create_default_entries(); - VillageController::get_singleton()->create_default_entries(); AssignmentController::get_singleton()->create_default_entries(); WeatherController::get_singleton()->create_default_entries(); } @@ -314,10 +312,13 @@ MourneRoot::MourneRoot() : WebRoot() { BuildingInitializer::allocate_all(); - VillageInitializer::allocate_all(); AssignmentInitializer::allocate_all(); WeatherInitializer::allocate_all(); + _village = new VillageNode(); + _village->set_uri_segment("village"); + add_child(_village); + _admin_panel = new AdminPanel(); _admin_panel->set_uri_segment("admin"); _admin_panel->register_admin_controller("buildings", BuildingController::get_singleton()); @@ -348,7 +349,6 @@ MourneRoot::MourneRoot() : } MourneRoot::~MourneRoot() { - VillageInitializer::free_all(); BuildingInitializer::free_all(); AssignmentInitializer::free_all(); WeatherInitializer::free_all(); diff --git a/app/mourne_root.h b/app/mourne_root.h index 6160d7a..028d426 100644 --- a/app/mourne_root.h +++ b/app/mourne_root.h @@ -12,6 +12,7 @@ class RBACModel; class UserController; class MenuNode; class MourneUserController; +class VillageNode; #define ENSURE_LOGIN(request) \ if (!is_logged_in(request)) { \ @@ -64,6 +65,8 @@ public: MourneUserController *_user_controller; MenuNode *_menu; + VillageNode *_village; + static String menu_head; static String admin_headers; static String footer; diff --git a/app/village/village_controller.cpp b/app/village/village_controller.cpp deleted file mode 100644 index 4861c3e..0000000 --- a/app/village/village_controller.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "village_controller.h" - -#include "web/html/form_validator.h" -#include "web/html/html_builder.h" -#include "web/http/cookie.h" -#include "web/http/http_session.h" -#include "web/http/request.h" -#include "web/http/session_manager.h" - -#include "village_model.h" - -void VillageController::handle_request_default(Request *request) { -} - -void VillageController::create_table() { - VillageModel::get_singleton()->create_table(); -} -void VillageController::drop_table() { - VillageModel::get_singleton()->drop_table(); -} -void VillageController::create_default_entries() { - VillageModel::get_singleton()->create_default_entries(); -} - -VillageController *VillageController::get_singleton() { - return _self; -} - -VillageController::VillageController() : - Object() { - - if (_self) { - printf("VillageController::VillageController(): Error! self is not null!/n"); - } - - _self = this; -} - -VillageController::~VillageController() { - if (_self == this) { - _self = nullptr; - } -} - -VillageController *VillageController::_self = nullptr; diff --git a/app/village/village_controller.h b/app/village/village_controller.h deleted file mode 100644 index b928757..0000000 --- a/app/village/village_controller.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef VILLAGE_CONTROLLER_H -#define VILLAGE_CONTROLLER_H - -#include "core/string.h" -#include "core/containers/vector.h" - -#include "core/object.h" - -#include "village.h" - -class Request; -class FormValidator; - -class VillageController : public Object { - RCPP_OBJECT(VillageController, Object); - -public: - void create_table(); - void drop_table(); - void create_default_entries(); - - virtual void handle_request_default(Request *request); - - static VillageController *get_singleton(); - - VillageController(); - ~VillageController(); - -protected: - static VillageController *_self; -}; - -#endif \ No newline at end of file diff --git a/app/village/village_initializer.cpp b/app/village/village_initializer.cpp deleted file mode 100644 index e752d6e..0000000 --- a/app/village/village_initializer.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "village_initializer.h" - -void VillageInitializer::allocate_controller() { - ERR_FAIL_COND(_controller); - - _controller = new VillageController(); -} -void VillageInitializer::free_controller() { - if (_controller) { - delete _controller; - _controller = nullptr; - } -} - -void VillageInitializer::allocate_model() { - ERR_FAIL_COND(_model); - - _model = new VillageModel(); -} -void VillageInitializer::free_model() { - if (_model) { - delete _model; - _model = nullptr; - } -} - -void VillageInitializer::allocate_all() { - allocate_model(); - allocate_controller(); -} -void VillageInitializer::free_all() { - free_controller(); - free_model(); -} - -VillageController *VillageInitializer::_controller = nullptr; -VillageModel *VillageInitializer::_model = nullptr; \ No newline at end of file diff --git a/app/village/village_initializer.h b/app/village/village_initializer.h deleted file mode 100644 index 32df18d..0000000 --- a/app/village/village_initializer.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef VILLAGE_INITIALIZER_H -#define VILLAGE_INITIALIZER_H - -#include "village_model.h" -#include "village_controller.h" - -class VillageInitializer { -public: - static void allocate_controller(); - static void free_controller(); - - static void allocate_model(); - static void free_model(); - - static void allocate_all(); - static void free_all(); - -protected: - static VillageController *_controller; - static VillageModel *_model; -}; - -#endif \ No newline at end of file diff --git a/app/village/village_model.h b/app/village/village_model.h deleted file mode 100644 index b77f15d..0000000 --- a/app/village/village_model.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef VILLAGE_MODEL_H -#define VILLAGE_MODEL_H - -#include "core/string.h" -#include "core/containers/vector.h" - -#include "core/object.h" - -class VillageModel : public Object { - RCPP_OBJECT(VillageModel, Object); - -public: - virtual void create_table(); - virtual void drop_table(); - virtual void create_default_entries(); - - static VillageModel *get_singleton(); - - VillageModel(); - ~VillageModel(); - -protected: - static VillageModel *_self; -}; - -#endif \ No newline at end of file diff --git a/app/village/village_model.cpp b/app/village/village_node.cpp similarity index 91% rename from app/village/village_model.cpp rename to app/village/village_node.cpp index 2357f8d..827207e 100644 --- a/app/village/village_model.cpp +++ b/app/village/village_node.cpp @@ -1,4 +1,11 @@ -#include "village_model.h" +#include "village_node.h" + +#include "web/html/form_validator.h" +#include "web/html/html_builder.h" +#include "web/http/cookie.h" +#include "web/http/http_session.h" +#include "web/http/request.h" +#include "web/http/session_manager.h" #include "database/database.h" #include "database/database_manager.h" @@ -17,9 +24,11 @@ #define VILLAGE_BUILDING_SPELLS_TABLE_NAME "village_building_spells" #define VILLAGE_BUILDING_SPELL_COOLDOWNS_TABLE_NAME "village_building_spell_cooldowns" +void VillageNode::handle_request_default(Request *request) { +} -void VillageModel::create_table() { - Ref tb = DatabaseManager::get_singleton()->ddb->get_table_builder(); +void VillageNode::create_table() { + Ref tb = get_table_builder(); tb->create_table(VILLAGE_TABLE_NAME); tb->integer("id", 11)->auto_increment()->next_row(); @@ -194,8 +203,8 @@ void VillageModel::create_table() { #define VILLAGE_BUILDING_SPELLS_TABLE_NAME "village_building_spells" #define VILLAGE_BUILDING_SPELL_COOLDOWNS_TABLE_NAME "village_building_spell_cooldowns" -void VillageModel::drop_table() { - Ref tb = DatabaseManager::get_singleton()->ddb->get_table_builder(); +void VillageNode::drop_table() { + Ref tb = get_table_builder(); tb->drop_table_if_exists(VILLAGE_BUILDING_ASSIGNMENTS_TABLE_NAME)->cdrop_table(); tb->drop_table_if_exists(VILLAGE_BUILDING_SPELLS_TABLE_NAME)->cdrop_table(); @@ -209,28 +218,29 @@ void VillageModel::drop_table() { tb->run_query(); } -void VillageModel::create_default_entries() { +void VillageNode::create_default_entries() { } -VillageModel *VillageModel::get_singleton() { + +VillageNode *VillageNode::get_singleton() { return _self; } -VillageModel::VillageModel() : - Object() { +VillageNode::VillageNode() : + WebNode() { if (_self) { - printf("VillageModel::VillageModel(): Error! self is not null!/n"); + printf("VillageNode::VillageNode(): Error! self is not null!/n"); } _self = this; } -VillageModel::~VillageModel() { +VillageNode::~VillageNode() { if (_self == this) { _self = nullptr; } } -VillageModel *VillageModel::_self = nullptr; +VillageNode *VillageNode::_self = nullptr; diff --git a/app/village/village_node.h b/app/village/village_node.h new file mode 100644 index 0000000..199ce8d --- /dev/null +++ b/app/village/village_node.h @@ -0,0 +1,33 @@ +#ifndef VILLAGE_NODE_H +#define VILLAGE_NODE_H + +#include "core/containers/vector.h" +#include "core/string.h" + +#include "web/http/web_node.h" + +#include "village.h" + +class Request; +class FormValidator; + +class VillageNode : public WebNode { + RCPP_OBJECT(VillageNode, WebNode); + +public: + virtual void handle_request_default(Request *request); + + void create_table(); + void drop_table(); + void create_default_entries(); + + static VillageNode *get_singleton(); + + VillageNode(); + ~VillageNode(); + +protected: + static VillageNode *_self; +}; + +#endif \ No newline at end of file