diff --git a/rsc/scripts/setup_database.sql b/rsc/scripts/setup_database.sql new file mode 100644 index 0000000..5c4e284 --- /dev/null +++ b/rsc/scripts/setup_database.sql @@ -0,0 +1,37 @@ +/* Copyright: (c) Kayne Ruse 2013-2016 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. +*/ + +------------------------- +--fill the global tables with gameplay data +------------------------- + +INSERT OR IGNORE INTO InventoryItems (name, type, durability) VALUES + ("sword", "weapon", 100), + ("dagger", "weapon", 100), + ("staff", "weapon", 100), + ("shield", "armour", 100), + ("potion", "consumable", 100) +; + +--DEBUG: this is supposed to archive the dead characters +INSERT INTO DeadCharacters (uid, owner, handle, avatar, birth) SELECT uid, owner, handle, avatar, birth FROM LiveCharacters; +DELETE FROM LiveCharacters WHERE uid IN (SELECT uid FROM DeadCharacters); diff --git a/rsc/scripts/setup_server.sql b/rsc/scripts/setup_server.sql index 7741519..a5c75fe 100644 --- a/rsc/scripts/setup_server.sql +++ b/rsc/scripts/setup_server.sql @@ -30,14 +30,13 @@ PRAGMA foreign_keys = ON; --table definitions ------------------------- - CREATE TABLE IF NOT EXISTS UserAccounts ( uid INTEGER PRIMARY KEY AUTOINCREMENT, username varchar(100) UNIQUE, --TODO: (3) Swap username for email address --server-client security --- passhash varchar(100), --- passsalt varchar(100), + passhash varchar(100), + passsalt varchar(100), --server controls blacklisted BIT DEFAULT 0, @@ -88,6 +87,20 @@ CREATE TABLE IF NOT EXISTS LiveCreatures ( originY INTEGER DEFAULT 0 ); +------------------------- +--global tables +------------------------- + +CREATE TABLE IF NOT EXISTS InventoryItems ( + --metadata + uid INTEGER PRIMARY KEY AUTOINCREMENT, + name varchar(100) UNIQUE, + type varchar(100), --tmp type + + --unique information + durability INTEGER DEFAULT 0 +); + ------------------------- --member tables ------------------------- @@ -113,16 +126,6 @@ CREATE TABLE IF NOT EXISTS CombatStatistics ( luck REAL DEFAULT 0.0 ); -CREATE TABLE IF NOT EXISTS InventoryItems ( - --metadata - uid INTEGER PRIMARY KEY AUTOINCREMENT, - itemType INTEGER, - - --unique information - stackSize INTEGER DEFAULT 0, - durability INTEGER DEFAULT 0 -); - ------------------------- --cross reference tables ------------------------- diff --git a/server/Inventory/inventory.cpp b/server/Inventory/inventory.cpp new file mode 100644 index 0000000..3e2ab83 --- /dev/null +++ b/server/Inventory/inventory.cpp @@ -0,0 +1,23 @@ +/* Copyright: (c) Kayne Ruse 2013-2016 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. +*/ +#include "inventory.hpp" + diff --git a/server/Inventory/inventory.hpp b/server/Inventory/inventory.hpp new file mode 100644 index 0000000..8aad3a8 --- /dev/null +++ b/server/Inventory/inventory.hpp @@ -0,0 +1,35 @@ +/* Copyright: (c) Kayne Ruse 2013-2016 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. +*/ +#pragma once + +#include "item_data.hpp" + +#include + +class Inventory { +public: + Inventory() = default; + ~Inventory() = default; + +private: + std::list itemList; +}; \ No newline at end of file diff --git a/server/Inventory/inventory_manager.cpp b/server/Inventory/inventory_manager.cpp new file mode 100644 index 0000000..f4af514 --- /dev/null +++ b/server/Inventory/inventory_manager.cpp @@ -0,0 +1,34 @@ +/* Copyright: (c) Kayne Ruse 2013-2016 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. +*/ +#include "inventory_manager.hpp" + +static const char* CREATE_CHARACTER_ITEMS = "INSERT INTO CharacterItems (character, item) VALUES (?1, ?2);"; + +static const char* DELETE_CHARACTER_ITEMS = "DELETE FROM CharacterItems WHERE (character=?1, item=?2);"; + +static const char* CREATE_CHARACTER_EQUIPMENT = "INSERT INTO CharacterEquipment (character, item) VALUES (?1, ?2);"; + +static const char* DELETE_CHARACTER_EQUIPMENT = "DELETE FROM CharacterEquipment WHERE (character=?1, item=?2);"; + +int InventoryManager::CreateItem(int owner, ItemType itemType) { + sqlite3_stmt* statement = nullptr; +} \ No newline at end of file diff --git a/server/Inventory/inventory_manager.hpp b/server/Inventory/inventory_manager.hpp new file mode 100644 index 0000000..e74a973 --- /dev/null +++ b/server/Inventory/inventory_manager.hpp @@ -0,0 +1,33 @@ +/* Copyright: (c) Kayne Ruse 2013-2016 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. +*/ +#pragma once + +#include "inventory.hpp" + +class InventoryManager { +public: + InventoryManager() = default; + ~InventoryManager() = default; + +private: + // +}; \ No newline at end of file diff --git a/server/characters/character_data.cpp b/server/characters/character_data.cpp index c5ea387..ef462d9 100644 --- a/server/characters/character_data.cpp +++ b/server/characters/character_data.cpp @@ -40,4 +40,8 @@ std::string CharacterData::GetHandle() { std::string CharacterData::GetAvatar() { return avatar; +} + +Inventory* CharacterData::GetInventory() { + return &inventory; } \ No newline at end of file diff --git a/server/characters/character_data.hpp b/server/characters/character_data.hpp index 3197aaa..d0c0f0a 100644 --- a/server/characters/character_data.hpp +++ b/server/characters/character_data.hpp @@ -24,6 +24,7 @@ //components #include "character_defines.hpp" #include "entity.hpp" +#include "inventory.hpp" //std namespace #include @@ -38,6 +39,7 @@ public: int GetOwner(); std::string GetHandle(); std::string GetAvatar(); + Inventory* GetInventory(); private: friend class CharacterManager; @@ -45,4 +47,5 @@ private: int owner = -1; std::string handle; std::string avatar; + Inventory inventory; }; diff --git a/server/characters/makefile b/server/characters/makefile index 69b4afa..3a0a1cc 100644 --- a/server/characters/makefile +++ b/server/characters/makefile @@ -1,5 +1,5 @@ #config -INCLUDES+=. .. ../combat ../creatures ../entities ../monsters ../rooms ../triggers ../../common/gameplay ../../common/map ../../common/network ../../common/network/packet_types ../../common/utilities +INCLUDES+=. .. ../combat ../creatures ../entities ../monsters ../inventory ../rooms ../triggers ../../common/gameplay ../../common/map ../../common/network ../../common/network/packet_types ../../common/utilities LIBS+= CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))