Как избежать гкод?

Делаю конвертер валюты, 1 алмаз = 1$(BedrockEconomy), делаю с формами. Как все это дело можно упросить?

public function form($player){
        $dropdownMenu = ["10", "20", "30", "40", "50"];
        $form = new CustomForm(function (Player $player, array $data){
            if($data === null){
                return true;
            }
            switch($data[1]){  
                case true:
                     switch($data[2]){ 
                         case 0:
                             //Здесь будет код на удаление предмета и прибавления денег...
                         break;
                         
                         case 1:
                             //Здесь будет код на удаление предмета и прибавления денег...
                         break;
                         
                         case 2:
                             //И здесь..
                         break;
                         
                         case 3:
                             //И здесь...
                         break;
                         
                         case 4:
                             //И здесь..
                         break;
                         
                     }
                break;
                
                case false:
                     switch($data[2]){
                         case 0:
                             //и Здесь..
                         break;
                             // т.д.
                     }
                break;
            }
        });
        $form->setTitle("Конвертер тест");
        $form->addLabel("Здесь вы можете перевести Алм Руду в $ и обратно\non-в $\noff-в алм руду");
        $form->addToggle("Выберите опцию on/off", false);
        $form->addDropdown("Выбери кол-во", $dropdowMenu); //(data 1)
        $form->sendToPlayer($player);
        return $form;
    }
}
//class
public array $dropdown = [10, 20, 30];

//function
$form = new CustomForm(function (Player $player, array $data) {
    if ($data === null) return;
    $count = $this->dropdown[$data[1]];

    if ($data[0]) {
        //TODO:
    } else {
        //TODO:
    }
});

$form->addToggle("Тип транзакции", false);
$form->addDropdown("Выберите кол-во", $this->dropdown);
$form->sendToPlayer($player)

В TODO мне писать это?

            switch($data[1]){
                case true:
                     switch($data[2]){
                         case 0:
                             //Здесь будет код на удаление предмета и прибавления денег...
                         break;
                         
                         case 1:
                             //Здесь будет код на удаление предмета и прибавления денег...
                         break;
                         
                         case 2:
                             //И здесь..
                         break;
                         
                         case 3:
                             //И здесь...
                         break;
                         
                         case 4:
                             //И здесь..
                         break;
                         
                     }
                break;
                
                case false:
                     switch($data[2]){
                         case 0:
                             //и Здесь..
                         break;
                     }
                break;
            }

почему dropdown не static в таком случае

я дал псевдо код -_-

там котиков нарисуй

посмотрев на @dylan, захотелось тебя засрать

го

я не совсем понимаю что такое TODO

это просто комментарий

да все не дуйся

1 лайк

там секс начинается

тебе как минимум php выучить нужно, ни знаний, ничего. вопросы глупые, как отвечать я не знаю :face_with_hand_over_mouth:

Ну ля, я просто смотрю, то же код но вырезан в 2 раза, я не знаю куда мне сувать функцию снимания денег и удаление предмета

тот же код, просто без всякой дичи.
переменная $count хранит значение, которое выбрал игрок в списке.

$data[0] хранит булевое значение переключателя.

Хелп


Там уже другой плагин, тобишь FormAPI

та я знаю, скриншоты с телефона просто неудобно читать

public array $dropdown=["10", "20", "30", "40", "50"];
    
    public function onCommand(CommandSender $sender, Command $cmd, string $label, array $args) : bool {
        if($cmd->getName() === "converter"){
         $sender->sendMessage("Плагин в бета");
         $this->form($sender);
        }
        return true;
    }
    public function form($player){
        $form = new CustomForm(function(Player $player, array $data){
            if($data === null) return;
            $count = $this->dropdown[$data[1]];
            
            if ($data[0]){
                $item = ItemFactory::getInstance()->get(280, 0, $count);
                $item->setCustomName("Сольд");
                $player->getInventory()->addItem($item);
                BedrockEconomyAPI::getInstance()->subtractFromPlayerBalance($player->getName(), $count, ClosureContext::create(function (bool $wasUdpated) : void{
                    var_dump($wasUdpated);
                },
               )
              );
            } else {
                $item = ItemFactory::getInstance()->get(280, 0, $count);
                $player->getInventory()->removeItem($item);
                BedrockEconomyAPI::getInstance()->addToPlayerBalance($player->getName(), $count, ClosureContext::create(function (bool $wasUpdated):void{
                    var_dump($wasUpdated);
                  },
                )
              );
            }
        }
        );
        $form->addToggle("Тип Транзакции", false);
        $form->setTitle("КОНВЕРТАЦИЯ");
        $form->addLabel("Здесь вы можете конвертировать валюту\non - в CRYPTO\noff - в Сольды");
        $form->addDropdown("Выберите кол-во:", $this->dropdown);
        $form->sendToPlayer($player);
    }
}