@@ -595,13 +595,12 @@ void DynamicCommand::execute(CommandOrigin const& origin, CommandOutput& output)
595
595
}
596
596
597
597
std::unique_ptr<class DynamicCommandInstance > DynamicCommand::createCommand (
598
- CommandRegistry& registry,
599
598
std::string const & name,
600
599
std::string const & description,
601
600
CommandPermissionLevel permission,
602
601
CommandFlag flag
603
602
) {
604
- return DynamicCommandInstance::create (registry, name, description, permission, flag);
603
+ return DynamicCommandInstance::create (name, description, permission, flag);
605
604
}
606
605
607
606
DynamicCommandInstance const *
@@ -614,7 +613,6 @@ DynamicCommand::setup(CommandRegistry& registry, std::unique_ptr<class DynamicCo
614
613
}
615
614
616
615
std::unique_ptr<class DynamicCommandInstance > DynamicCommand::createCommand (
617
- CommandRegistry& registry,
618
616
std::string const & name,
619
617
std::string const & description,
620
618
std::unordered_map<std::string, std::vector<std::string>>&& enums,
@@ -624,7 +622,7 @@ std::unique_ptr<class DynamicCommandInstance> DynamicCommand::createCommand(
624
622
CommandPermissionLevel permission,
625
623
CommandFlag flag
626
624
) {
627
- auto command = createCommand (registry, name, description, permission, flag);
625
+ auto command = createCommand (name, description, permission, flag);
628
626
if (!command) return std::unique_ptr<class DynamicCommandInstance >();
629
627
for (auto & [desc, values] : enums) {
630
628
command->setEnum (desc, std::move (values));
@@ -647,9 +645,9 @@ void DynamicCommand::updateAvailableCommands(CommandRegistry& registry) {
647
645
registry.serializeAvailableCommands ().sendToClients ();
648
646
}
649
647
650
- DynamicCommandInstance const * DynamicCommand::getInstance () const { return getInstance (getCommandName ()); }
648
+ DynamicCommandInstance* DynamicCommand::getInstance () const { return getInstance (getCommandName ()); }
651
649
652
- DynamicCommandInstance const * DynamicCommand::getInstance (std::string const & commandName) {
650
+ DynamicCommandInstance* DynamicCommand::getInstance (std::string const & commandName) {
653
651
auto iter = dynamicCommandInstances.find (commandName);
654
652
if (iter == dynamicCommandInstances.end ()) return nullptr ;
655
653
else return iter->second .get ();
@@ -681,7 +679,6 @@ static std::unique_ptr<Command> commandBuilder(uintptr_t t) {
681
679
}
682
680
683
681
DynamicCommandInstance::DynamicCommandInstance (
684
- CommandRegistry& registry,
685
682
std::string const & name,
686
683
std::string const & description,
687
684
CommandPermissionLevel permission,
@@ -691,25 +688,17 @@ DynamicCommandInstance::DynamicCommandInstance(
691
688
description_(std::make_unique<std::string>(description)),
692
689
permission_(permission),
693
690
flag_(flag),
694
- registry(registry),
695
691
builder(std::make_unique<ll::memory::NativeClosure<std::unique_ptr<Command>>>(commandBuilder, (uintptr_t )this)) {}
696
692
697
693
DynamicCommandInstance::~DynamicCommandInstance () = default ;
698
694
699
695
std::unique_ptr<DynamicCommandInstance> DynamicCommandInstance::create (
700
- CommandRegistry& registry,
701
696
std::string const & name,
702
697
std::string const & description,
703
698
CommandPermissionLevel permission,
704
699
CommandFlag flag
705
700
) {
706
- if (registry.findCommand (name)) {
707
- logger.error (" Command \" {}\" already exists" , name);
708
- return nullptr ;
709
- }
710
- return std::unique_ptr<DynamicCommandInstance>(
711
- new DynamicCommandInstance (registry, name, description, permission, flag)
712
- );
701
+ return std::unique_ptr<DynamicCommandInstance>(new DynamicCommandInstance (name, description, permission, flag));
713
702
}
714
703
715
704
bool DynamicCommandInstance::addOverload (std::vector<DynamicCommand::ParameterData>&& params) {
@@ -886,10 +875,10 @@ std::string DynamicCommandInstance::setSoftEnum(std::string const& name, std::ve
886
875
softEnums.emplace (name, values);
887
876
} else {
888
877
if (!ll::command::CommandRegistrar::getInstance ().hasSoftEnum (name)) {
889
- registry.addSoftEnum (name, values);
890
- return name;
878
+ ll::command::CommandRegistrar::getInstance ().tryRegisterSoftEnum (name, values);
879
+ } else {
880
+ ll::command::CommandRegistrar::getInstance ().setSoftEnumValues (name, values);
891
881
}
892
- CommandSoftEnumRegistry (registry).updateSoftEnum (SoftEnumUpdateType::Replace, name, values);
893
882
}
894
883
return name;
895
884
}
@@ -904,10 +893,10 @@ bool DynamicCommandInstance::addSoftEnumValues(std::string const& name, std::vec
904
893
}
905
894
} else {
906
895
if (!ll::command::CommandRegistrar::getInstance ().hasSoftEnum (name)) {
907
- registry.addSoftEnum (name, values);
908
- return true ;
896
+ ll::command::CommandRegistrar::getInstance ().tryRegisterSoftEnum (name, values);
897
+ } else {
898
+ ll::command::CommandRegistrar::getInstance ().addSoftEnumValues (name, values);
909
899
}
910
- CommandSoftEnumRegistry (registry).updateSoftEnum (SoftEnumUpdateType::Add, name, values);
911
900
}
912
901
return true ;
913
902
}
@@ -924,7 +913,7 @@ bool DynamicCommandInstance::removeSoftEnumValues(std::string const& name, std::
924
913
}
925
914
return false ;
926
915
} else {
927
- CommandSoftEnumRegistry (registry). updateSoftEnum (SoftEnumUpdateType::Remove, name, values);
916
+ ll::command::CommandRegistrar::getInstance (). removeSoftEnumValues ( name, values);
928
917
}
929
918
return true ;
930
919
}
0 commit comments