mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 00:37:15 +01:00
WIP loot distribution prototyping.
This commit is contained in:
parent
0ec506f8e8
commit
8dfeba7719
@ -38,6 +38,7 @@ add_library(SqModule MODULE SqBase.hpp Main.cpp
|
|||||||
Core/Command.cpp Core/Command.hpp
|
Core/Command.cpp Core/Command.hpp
|
||||||
Core/Common.cpp Core/Common.hpp
|
Core/Common.cpp Core/Common.hpp
|
||||||
Core/Entity.cpp Core/Entity.hpp
|
Core/Entity.cpp Core/Entity.hpp
|
||||||
|
Core/Loot.cpp Core/Loot.hpp
|
||||||
Core/Privilege.cpp Core/Privilege.hpp
|
Core/Privilege.cpp Core/Privilege.hpp
|
||||||
Core/Privilege/Base.cpp Core/Privilege/Base.hpp
|
Core/Privilege/Base.cpp Core/Privilege/Base.hpp
|
||||||
Core/Privilege/Class.cpp Core/Privilege/Class.hpp
|
Core/Privilege/Class.cpp Core/Privilege/Class.hpp
|
||||||
|
19
module/Core/Loot.cpp
Normal file
19
module/Core/Loot.cpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
#include "Core/Loot.hpp"
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
namespace SqMod {
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// ================================================================================================
|
||||||
|
void Register_Loot(HSQUIRRELVM vm)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} // Namespace:: SqMod
|
224
module/Core/Loot.hpp
Normal file
224
module/Core/Loot.hpp
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
#include "Core/Utility.hpp"
|
||||||
|
#include "Base/Vector3.hpp"
|
||||||
|
#include "Base/Quaternion.hpp"
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
#include <array>
|
||||||
|
#include <vector>
|
||||||
|
#include <random>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
namespace SqMod {
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------------
|
||||||
|
* Defines the type of loot and is responsible for creating and destroying the associated item.
|
||||||
|
*/
|
||||||
|
struct LootFactory
|
||||||
|
{
|
||||||
|
// --------------------------------------------------------------------------------------------
|
||||||
|
SQInteger mID{-1}; // User defined item identifier.
|
||||||
|
SQInteger mType{-1}; // User defined item type.
|
||||||
|
SQInteger mClass{-1}; // User defined item class.
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------
|
||||||
|
String mTag; // User tag associated with this instance.
|
||||||
|
LightObj mData; // User data associated with this instance.
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------
|
||||||
|
Function mCreate{}; // Callback to create the loot item.
|
||||||
|
Function mDelete{}; // Callback to delete the loot item.
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Default constructor.
|
||||||
|
*/
|
||||||
|
LootFactory() = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy constructor. (disabled)
|
||||||
|
*/
|
||||||
|
LootFactory(const LootFactory & o) = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Move constructor. (disabled)
|
||||||
|
*/
|
||||||
|
LootFactory(LootFactory && o) noexcept = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Destructor.
|
||||||
|
*/
|
||||||
|
~LootFactory() = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy assignment operator. (disabled)
|
||||||
|
*/
|
||||||
|
LootFactory & operator = (const LootFactory & o) = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy assignment operator. (disabled)
|
||||||
|
*/
|
||||||
|
LootFactory & operator = (LootFactory && o) noexcept = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------------
|
||||||
|
* Defines an entry inside a loot cluster where a single loot item can be spawned.
|
||||||
|
*/
|
||||||
|
struct LootSpawn
|
||||||
|
{
|
||||||
|
Vector3 mPos; // Spawn position
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Default constructor.
|
||||||
|
*/
|
||||||
|
LootSpawn() = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy constructor. (disabled)
|
||||||
|
*/
|
||||||
|
LootSpawn(const LootSpawn & o) = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Move constructor. (disabled)
|
||||||
|
*/
|
||||||
|
LootSpawn(LootSpawn && o) noexcept = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Destructor.
|
||||||
|
*/
|
||||||
|
~LootSpawn() = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy assignment operator. (disabled)
|
||||||
|
*/
|
||||||
|
LootSpawn & operator = (const LootSpawn & o) = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy assignment operator. (disabled)
|
||||||
|
*/
|
||||||
|
LootSpawn & operator = (LootSpawn && o) noexcept = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------------
|
||||||
|
* Defines a cluster of loot spawns with little space in between where associated items can be spawned.
|
||||||
|
*/
|
||||||
|
class LootCluster
|
||||||
|
{
|
||||||
|
// --------------------------------------------------------------------------------------------
|
||||||
|
LightObj mData; // User data associated with this instance.
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Default constructor.
|
||||||
|
*/
|
||||||
|
LootCluster() = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy constructor. (disabled)
|
||||||
|
*/
|
||||||
|
LootCluster(const LootCluster & o) = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Move constructor. (disabled)
|
||||||
|
*/
|
||||||
|
LootCluster(LootCluster && o) noexcept = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Destructor.
|
||||||
|
*/
|
||||||
|
~LootCluster() = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy assignment operator. (disabled)
|
||||||
|
*/
|
||||||
|
LootCluster & operator = (const LootCluster & o) = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy assignment operator. (disabled)
|
||||||
|
*/
|
||||||
|
LootCluster & operator = (LootCluster && o) noexcept = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------------
|
||||||
|
* Defines a region of loot clusters where various attributes can be influenced globally.
|
||||||
|
*/
|
||||||
|
class LootRegion
|
||||||
|
{
|
||||||
|
// --------------------------------------------------------------------------------------------
|
||||||
|
String mTag; // User tag associated with this instance.
|
||||||
|
LightObj mData; // User data associated with this instance.
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Default constructor.
|
||||||
|
*/
|
||||||
|
LootRegion() = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy constructor. (disabled)
|
||||||
|
*/
|
||||||
|
LootRegion(const LootRegion & o) = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Move constructor. (disabled)
|
||||||
|
*/
|
||||||
|
LootRegion(LootRegion && o) noexcept = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Destructor.
|
||||||
|
*/
|
||||||
|
~LootRegion() = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy assignment operator. (disabled)
|
||||||
|
*/
|
||||||
|
LootRegion & operator = (const LootRegion & o) = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy assignment operator. (disabled)
|
||||||
|
*/
|
||||||
|
LootRegion & operator = (LootRegion && o) noexcept = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------------
|
||||||
|
* Loot distribution utility.
|
||||||
|
*/
|
||||||
|
class LootManager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Default constructor.
|
||||||
|
*/
|
||||||
|
LootManager() = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy constructor. (disabled)
|
||||||
|
*/
|
||||||
|
LootManager(const LootManager & o) = delete;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Move constructor. (disabled)
|
||||||
|
*/
|
||||||
|
LootManager(LootManager && o) = delete;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Destructor.
|
||||||
|
*/
|
||||||
|
~LootManager() = default;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy assignment operator. (disabled)
|
||||||
|
*/
|
||||||
|
LootManager & operator = (const LootManager & o) = delete;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Copy assignment operator. (disabled)
|
||||||
|
*/
|
||||||
|
LootManager & operator = (LootManager && o) = delete;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
} // Namespace:: SqMod
|
@ -50,6 +50,7 @@ extern void Register_Constants(HSQUIRRELVM vm);
|
|||||||
extern void Register_Log(HSQUIRRELVM vm);
|
extern void Register_Log(HSQUIRRELVM vm);
|
||||||
extern void Register_Core(HSQUIRRELVM vm);
|
extern void Register_Core(HSQUIRRELVM vm);
|
||||||
extern void Register_Command(HSQUIRRELVM vm);
|
extern void Register_Command(HSQUIRRELVM vm);
|
||||||
|
extern void Register_Loot(HSQUIRRELVM vm);
|
||||||
extern void Register_Privilege(HSQUIRRELVM vm);
|
extern void Register_Privilege(HSQUIRRELVM vm);
|
||||||
extern void Register_Routine(HSQUIRRELVM vm);
|
extern void Register_Routine(HSQUIRRELVM vm);
|
||||||
extern void Register_Tasks(HSQUIRRELVM vm);
|
extern void Register_Tasks(HSQUIRRELVM vm);
|
||||||
@ -103,6 +104,7 @@ bool RegisterAPI(HSQUIRRELVM vm)
|
|||||||
Register_Log(vm);
|
Register_Log(vm);
|
||||||
Register_Core(vm);
|
Register_Core(vm);
|
||||||
Register_Command(vm);
|
Register_Command(vm);
|
||||||
|
Register_Loot(vm);
|
||||||
Register_Privilege(vm);
|
Register_Privilege(vm);
|
||||||
Register_Routine(vm);
|
Register_Routine(vm);
|
||||||
Register_Tasks(vm);
|
Register_Tasks(vm);
|
||||||
|
Loading…
Reference in New Issue
Block a user