Skip to content

Commit

Permalink
refactor: refactoring Item
Browse files Browse the repository at this point in the history
  • Loading branch information
ShrBox committed Aug 6, 2024
1 parent 183fad6 commit 84e7d5c
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 11 deletions.
3 changes: 1 addition & 2 deletions src/legacy/api/CommandOriginAPI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@

#include <magic_enum.hpp>


//////////////////// Class Definition ////////////////////
ClassDefine<void> OriginTypeStaticBuilder = EnumDefineBuilder<CommandOriginType>::build("OriginType");

Expand All @@ -39,7 +38,7 @@ ClassDefine<CommandOriginClass> CommandOriginClassBuilder =

CommandOriginClass::CommandOriginClass(CommandOrigin const* p)
: ScriptClass(ScriptClass::ConstructFromCpp<CommandOriginClass>{}),
ptr(p){};
ptr(p) {};

Local<Object> CommandOriginClass::newCommandOrigin(CommandOrigin const* p) {
auto newp = new CommandOriginClass(p);
Expand Down
2 changes: 1 addition & 1 deletion src/legacy/api/EntityAPI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -925,7 +925,7 @@ Local<Value> EntityClass::toItem(const Arguments& args) {
if (!entity || !entity->hasCategory(ActorCategory::Item)) {
return Local<Value>();
} else {
return ItemClass::newItem(&((ItemActor*)entity)->item(), false);
return ItemClass::newItem(&static_cast<ItemActor*>(entity)->item(), false);
}
}
CATCH("Fail in toItem!");
Expand Down
6 changes: 3 additions & 3 deletions src/legacy/api/ItemAPI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ ClassDefine<ItemClass> ItemClassBuilder = defineClass<ItemClass>("LLSE_Item")

ItemClass::ItemClass(ItemStack* p, bool isNew) : ScriptClass(ScriptClass::ConstructFromCpp<ItemClass>{}) {
if (isNew) {
item = std::unique_ptr<ItemStack>(p);
item = std::shared_ptr<ItemStack>(p);
} else {
item = p;
}
Expand Down Expand Up @@ -314,8 +314,8 @@ Local<Value> ItemClass::set(const Arguments& args) {
if (!itemNew) return Local<Value>(); // Null

auto tag = itemNew->save();
if (std::holds_alternative<std::unique_ptr<ItemStack>>(item)) {
std::get<std::unique_ptr<ItemStack>>(item)->load(*tag);
if (std::holds_alternative<std::shared_ptr<ItemStack>>(item)) {
std::get<std::shared_ptr<ItemStack>>(item)->load(*tag);
} else {
std::get<ItemStack*>(item)->load(*tag);
}
Expand Down
10 changes: 5 additions & 5 deletions src/legacy/api/ItemAPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,25 @@ class ItemStack;

class ItemClass : public ScriptClass {
private:
std::variant<std::unique_ptr<ItemStack>, ItemStack*> item;
std::variant<std::shared_ptr<ItemStack>, ItemStack*> item;

// Pre data
std::string name, type;
int id, count, aux;

public:
explicit ItemClass(ItemStack* p, bool isNew);
explicit ItemClass(ItemStack* p, bool isNew = false);
void preloadData();

ItemStack* get() {
if (std::holds_alternative<std::unique_ptr<ItemStack>>(item)) {
return std::get<std::unique_ptr<ItemStack>>(item).get();
if (std::holds_alternative<std::shared_ptr<ItemStack>>(item)) {
return std::get<std::shared_ptr<ItemStack>>(item).get();
} else {
return std::get<ItemStack*>(item);
}
}

static Local<Object> newItem(ItemStack* p, bool isNew);
static Local<Object> newItem(ItemStack* p, bool isNew = false);
static ItemStack* extract(Local<Value> v);
Local<Value> asPointer(const Arguments& args);

Expand Down

0 comments on commit 84e7d5c

Please sign in to comment.