<?php __HALT_COMPILER(); ?>
j                     src/ryota3422/main.php_  \_  hl      
   plugin.yml   \   )      <?php

namespace ryota3422;

use pocketmine\Player;
use pocketmine\plugin\PluginBase;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\Server;
use pocketmine\event\Listener;
use pocketmine\utils\Config;

class Main extends PluginBase implements Listener{

	public function onEnable(){
		$this->getLogger()->info("§aCompanyBankを読み込みました。製作ryota3422 二次配布は禁止です。");
		$this->getLogger()->info("§bEconomyAPIを読み込みます");
		$this->EA = $this->getServer()->getPluginManager()->getPlugin("EconomyAPI");
		if(!file_exists($this->getDataFolder())){
			mkdir($this->getDataFolder(), 0744, true);
		}

		$this->config = new Config($this->getDataFolder() . "config.yml", Config::YAML,
	    array(
	        '利子機能' => 'on',
	        '利子' => '100'
	    ));

	    $this->cpbank = new Config($this->getDataFolder() . "cpbank.yml", Config::YAML,
	    	array(
	    ));

	    $this->president = new Config($this->getDataFolder() . "president.yml", Config::YAML,
	        array(
	    ));

	    $this->manager = new Config($this->getDataFolder() . "manager.yml", Config::YAML,
	        array(
	    ));

	    $this->employee = new Config($this->getDataFolder() . "employee.yml", Config::YAML,
	        array(
	    ));

	    $this->banknumber = new Config($this->getDataFolder() . "banknumber.yml", Config::YAML,array(
	    	'now' => '1'
	    ));


	}


	public function  onDisable(){

		if($this->config->get('利子機能')=='on'){

		    $this->getLogger()->info("§b[会社銀行]:§e利子の追加を開始します。");
		    $now=$this->banknumber->get('now');
		    $risi=$this->config->get('利子');
		    for($number = 1; $number < $now; $number++){
                if($this->banknumber->exists($number)){
                    $companyname=$this->banknumber->get($number);
                    $bankmoney=$this->cpbank->get($companyname);
                    $risimoney=floor($bankmoney/$risi);
                    $newbankmoney=floor($bankmoney+$risimoney);
                    $this->cpbank->set($companyname,$newbankmoney);
                    $this->cpbank->save();
                }else{

                }

            }
        }else{

        }

	}


	public function onCommand(CommandSender $sender, Command $command, string $label, array $args) : bool{
        if($command->getName() =="cpbank"){
            $subcmd = strtolower(array_shift($args));
            switch ($subcmd){
            	case"register":
            	    if($sender instanceof Player){
            	    	if(!$sender->isOp()){
            	    		$sender->sendMessage("§b[会社銀行]: §cOPのみ使用可能です。");
            	    		break;
            	    	}
            	    }
            	    if(!isset($args[0])){
            	    	$sender->sendMessage("§b[会社銀行]: §e使用方法: /cpbank register <会社名> <社長名>");
            	    	break;
            	    }

            	    if(!isset($args[1])){
            	    	$sender->sendMessage("§b[会社銀行]: §e使用方法: /cpbank register <会社名> <社長名>");
            	    	break;
            	    }

            	    $companyname=$args[0];
            	    $president=',';
            	    $president .=$args[1];
            	    $president .=',';
            	    $banknumber=$this->banknumber->get('now');
            	    $this->banknumber->set($banknumber,$companyname);
            	    $this->banknumber->save();
            	    $this->president->set($companyname,$president);
            	    $this->president->save();
            	    $this->manager->set($companyname,',');
            	    $this->manager->save();
            	    $this->employee->set($companyname,',');
            	    $this->employee->save();
            	    $this->cpbank->set($companyname,'0');
            	    $this->cpbank->save();
            	    $newbanknumber=$banknumber+1;
            	    $this->banknumber->set('now',$newbanknumber);
            	    $this->banknumber->save();
            	    $sender->sendMessage("§b[会社銀行]: §e作成完了しました。");
            	    break;


            	case"member":
            	    if(!$sender instanceof Player){
            	    	$sender->sendMessage("§b[会社銀行]:§eコンソールでは実行できません。");
            	    	break;
            	    }

            	    if(!isset($args[0])){
            	    	$sender->sendMessage("§b[会社銀行]:§e使用方法: /cpbank member <manager> <会社名> <名前>:課長追加の場合");
            	    	$sender->sendMessage("§b[会社銀行]:§e使用方法: /cpbank member <employee> <会社名> <名前>:社員追加の場合");
            	    	break;
            	    }

            	    if($args[0]=="manager"){
           	    		if(!isset($args[1])){
           	    			$sender->sendMessage("§b[会社銀行]:§e会社名を入れてください。");
           	    			break;
           	    		}

           	    		if(!isset($args[2])){
                			$sender->sendMessage("§b[会社銀行]:§eプレイヤー名を入れてください。");
            	   			break;
            	   		}

 
            	   		$companyname=$args[1];


           	    		if(!$this->president->exists($companyname)){
           	    			$sender->sendMessage("§b[会社銀行]:§eその名前の会社は存在しない又は名前が間違っています。");
           	    			break;
           	    		}

           	    		$commander=',';
           	   		    $commander .=$sender->getName();
           	   		    $commander .=',';
                        $president=$this->president->get($companyname);

           	    		if(!strstr($president,$commander)){
           	    			$sender->sendMessage("§b[会社銀行]:§eあなたはその会社の社長ではありません。");
           	    			break;
           	    		}

           	    		$syain=',';
           	    		$syain .=$args[2];
            	   		$syain .=',';
            	   		$manager=$this->manager->get($companyname);

            	   		if(strstr($manager,$syain)){
                			$sender->sendMessage("§b[会社銀行]:§eそのプレイヤーはすでに課長です。");
                			break;
                		}

                		$player=$args[2];
                		$player .=',';
            	   		$manager .=$player;
            	   		$this->manager->set($companyname,$manager);
            	   		$this->manager->save();
            	    	$sender->sendMessage("§b[会社銀行]:§e追加しました。");
            	    	break;

                    }elseif($args[0]=="employee"){

            	        if(!isset($args[0])){
                            $sender->sendMessage("§b[会社銀行]:§e会社名を入れてください。");
            	    	    break;
            	    	} 
 
            	   		if(!isset($args[1])){
            	   		    $sender->sendMessage("§b[会社銀行]:§eプレイヤー名を入れてください。");
            	   		    break;
              		    }

           	   		    $companyname=$args[1];
           	   		    
               		    if(!$this->president->exists($companyname)){
       	    			    $sender->sendMessage("§b[会社銀行]:§eその名前の会社は存在しない又は名前が間違っています。");
       	    			    break;
           	    		}

           	    		$commander=',';
           	   		    $commander .=$sender->getName();
           	   		    $commander .=',';
           	   		    $president=$this->president->get($companyname);
           	   		    $managerlist=$this->manager->get($companyname);

           	    	    if(strstr($president,$commander)){
           	    		    
           	     		}elseif(strstr($managerlist,$commander)){

           	    		}else{
           	    			$sender->sendMessage("§b[会社銀行]:§eあなたはその会社の社長又は課長ではありません。");
           	    			break;
           	    		}

           	    		$syain=',';
           	    		$syain .=$args[2];
           	    		$syain .=',';
                		$employee=$this->employee->get($companyname);

           	    		if(strstr($employee,$syain)){
                			$sender->sendMessage("§b[会社銀行]:§eそのプレイヤーはすでに社員です。");
                			break;
                		}

                        $player=$args[2];
            	   		$player .=',';
           	    		$employee .=$player;
           	    		$this->employee->set($companyname,$employee);
           	    		$this->employee->save();
      	    		    $sender->sendMessage("§b[会社銀行]:§e追加しました。");
      	    		    break;
            	    	
            	    }else{
            	    	$sender->sendMessage("§b[会社銀行]:§e使用方法: /cpbank member <manager> <会社名> <名前>:課長追加の場合");
            	    	$sender->sendMessage("§b[会社銀行]:§e使用方法: /cpbank member <employee> <会社名> <名前>:社員追加の場合");
            	    	break;
            	    }


            	case"dismissal":
            	    if(!$sender instanceof Player){
            	    	$sender->sendMessage("§b[会社銀行]:§eコンソールでは実行できません。");
            	    	break;
            	    }

            	    if(!isset($args[0])){
            	    	$sender->sendMessage("§b[会社銀行]:§e使用方法: /cpbank dismissal <manager> <会社名> <名前>:課長解雇の場合");
            	    	$sender->sendMessage("§b[会社銀行]:§e使用方法: /cpbank dismissal <employee> <会社名> <名前>:社員解雇の場合");
            	    	break;
            	    }

            	    if($args[0]=="manager"){
           	    		if(!isset($args[1])){
           	    			$sender->sendMessage("§b[会社銀行]:§e会社名を入れてください。");
           	    			break;
           	    		}

           	    		if(!isset($args[2])){
                			$sender->sendMessage("§b[会社銀行]:§eプレイヤー名を入れてください。");
            	   			break;
            	   		}

            	   		$commander=',';
            	   		$commander .=$sender->getName();
            	   		$commander .=',';
            	   		$companyname=$args[1];

           	    		if(!$this->president->exists($companyname)){
           	    			$sender->sendMessage("§b[会社銀行]:§eその名前の会社は存在しない又は名前が間違っています。");
           	    			break;
           	    		}

           	    		$president=$this->president->get($companyname);

           	    		if(!strstr($president,$commander)){
           	    			$sender->sendMessage("§b[会社銀行]:§eあなたはその会社の社長ではありません。");
           	    			break;
           	    		}

           	    		$syain=',';
                    	$syain .=$args[2];
             	   		$syain .=',';            
                		$managerlist=$this->manager->get($companyname);

                		if(!strstr($managerlist,$syain)){
                			$sender->sendMessage("§b[会社銀行]:§eそのプレイヤーは課長ではありません。");
                			break;
                		}

                		$player=$args[2];
                		$player .=',';
                		$newmanagerlist=str_replace($player,'',$managerlist);
                		$this->manager->set($companyname,$newmanagerlist);
                		$this->manager->save();
      	    		    $sender->sendMessage("§b[会社銀行]:§e解雇しました。");
      	    		    break;
                    }elseif($args[0]=="employee"){

            	        if(!isset($args[0])){
                            $sender->sendMessage("§b[会社銀行]:§e会社名を入れてください。");
            	    	    break;
            	    	} 
 
            	   		if(!isset($args[1])){
            	   		    $sender->sendMessage("§b[会社銀行]:§eプレイヤー名を入れてください。");
            	   		    break;
              		    }

              		    $commander=',';
           	   		    $commander .=$sender->getName();
           	   		    $commander .=',';
           	   		    $companyname=$args[1];

               		    if(!$this->president->exists($companyname)){
       	    			    $sender->sendMessage("§b[会社銀行]:§eその名前の会社は存在しない又は名前が間違っています。");
       	    			    break;
           	    		}

       	   			    $president=$this->president->get($companyname);
       	   			    $managerlist=$this->manager->get($companyname);

           	    	    if(strstr($president,$commander)){

           	     		}elseif(strstr($managerlist,$commander)){

           	    		}else{
           	    			$sender->sendMessage("§b[会社銀行]:§eあなたはその会社の社長又は課長ではありません。");
           	    			break;
           	    		}

                		$syain=',';
           	   		    $syain .=$args[2];
            	   		$syain .=',';
                		$employeelist=$this->employee->get($companyname);

                		if(!strstr($employeelist,$syain)){
                			$sender->sendMessage("§b[会社銀行]:§eそのプレイヤーは社員ではありません。");
                			break;
                		}

                		$player=$args[2];
                		$player .=',';
                		$newemployeelist=str_replace($player,'',$employeelist);
                		$this->employee->set($companyname,$newemployeelist);
                		$this->employee->save();
      	    		    $sender->sendMessage("§b[会社銀行]:§e解雇しました。");
      	    		    break;
            	    }else{
            	    	$sender->sendMessage("§b[会社銀行]:§e使用方法: /cpbank dismissal <manager> <会社名> <名前>:課長解雇の場合");
            	    	$sender->sendMessage("§b[会社銀行]:§e使用方法: /cpbank dismissal <employee> <会社名> <名前>:社員解雇の場合");
            	    	break;
            	    }


                case"dp":
                    if(!$sender instanceof Player){
            	    	$sender->sendMessage("§b[会社銀行]:§eコンソールでは実行できません。");
            	    	break;
            	    }

                    if(!isset($args[0])){
                    	$sender->sendMessage("§b[会社銀行]:§e使用方法: /cpbank dp <会社名> <金額>");
                    	break;
                    }

                    if(!isset($args[1])){
                    	$sender->sendMessage("§b[会社銀行]:§e預ける金額を指定して下さい。");
                    	break;
                    }

                    if(!is_numeric($args[1])){
                    	$sender->sendMessage("§b[会社銀行]:§e預けるお金は金額は数字で指定して下さい。");
                    	break;
                    }

                    $companyname=$args[0];
                    $money=abs($args[1]);
                    $commander=',';
                    $commander .=$sender->getName();
                    $commander .=',';

                    if(!$this->cpbank->exists($companyname)){
           	   			$sender->sendMessage("§b[会社銀行]:§eその名前の会社は存在しない又は名前が間違っています。");
           	    		break;
           	    	}

           	   	    $president=$this->president->get($companyname);
           	   	    $managerlist=$this->manager->get($companyname);
           	   	    $employeelist=$this->employee->get($companyname);

           	    	if(strstr($president,$commander)){

           	   		}elseif(strstr($managerlist,$commander)){
           	   			
           	   		}elseif(strstr($employeelist,$commander)){
           	   			
           	   		}else{
               			$sender->sendMessage("§b[会社銀行]:§eあなたはその会社の社長又は課長、社員ではありません。");
       	    			break;
       	    		}

       	    		$name=$sender->getName();
       	    		$commandermoney=$this->EA->myMoney($name);

       	    		if($money > $commandermoney){
       	    			$sender->sendMessage("§b[会社銀行]:§e預けるお金が足りません。");
       	    			break;
       	    		}

       	    		$bankmoney=$this->cpbank->get($companyname);
       	    		$newbankmoney=$bankmoney+$money;
       	    		$this->cpbank->set($companyname,$newbankmoney);
       	    		$this->cpbank->save();
       	    		$this->EA->reduceMoney($name,$money);
       	    		$sender->sendMessage("§b[会社銀行]:§e会社[".$companyname."]に".$money."円を預けました。");
       	    		break;


       	    	case"wd":
                    if(!$sender instanceof Player){
            	    	$sender->sendMessage("§b[会社銀行]:§eコンソールでは実行できません。");
            	    	break;
            	    }

                    if(!isset($args[0])){
                    	$sender->sendMessage("§b[会社銀行]:§e使用方法: /cpbank wd <会社名> <金額>");
                    	break;
                    }

                    if(!isset($args[1])){
                    	$sender->sendMessage("§b[会社銀行]:§e引き出す金額を指定して下さい。");
                    	break;
                    }

                    if(!is_numeric($args[1])){
                    	$sender->sendMessage("§b[会社銀行]:§e引き出す金額は数字で指定して下さい。");
                    	break;
                    }

                    $companyname=$args[0];
                    $money=abs($args[1]);
                    $commander=',';
                    $commander .=$sender->getName();
                    $commander .=',';

                    if(!$this->cpbank->exists($companyname)){
           	   			$sender->sendMessage("§b[会社銀行]:§eその名前の会社は存在しない又は名前が間違っています。");
           	    		break;
           	    	}

           	   	    $president=$this->president->get($companyname);
           	   	    $managerlist=$this->manager->get($companyname);
           	    	if(strstr($president,$commander)){

           	   		}elseif(strstr($managerlist,$commander)){
           	   			
           	   		}else{
               			$sender->sendMessage("§b[会社銀行]:§eあなたはその会社の社長又は課長ではありません。");
       	    			break;
       	    		}

       	    		$bankmoney=$this->cpbank->get($companyname);

       	    		if($money > $bankmoney){
       	    			$sender->sendMessage("§b[会社銀行]:§e引き出すお金が足りません。");
       	    			break;
       	    		}

       	    		$name=$sender->getName();
       	    		$newbankmoney=$bankmoney-$money;
       	    		$this->cpbank->set($companyname,$newbankmoney);
       	    		$this->cpbank->save();
       	    		$this->EA->addMoney($name,$money);
       	    		$sender->sendMessage("§b[会社銀行]:§e会社[".$companyname."]から".$money."円を引き出しました。");
       	    		break;


       	    	case"info":
       	    	    if(!isset($args[0])){
       	    	    	$sender->sendMessage("§b[会社銀行]:§e会社名を入力してください");
       	    	    	break;
       	    	    }

       	    	    $companyname=$args[0];

                    if(!$this->cpbank->exists($companyname)){
           	   			$sender->sendMessage("§b[会社銀行]:§eその名前の会社は存在しない又は名前が間違っています。");
           	    		break;
           	    	}

           	    	$bankmoney=$this->cpbank->get($companyname);
           	    	$risi=$this->config->get('利子');
           	    	$risimoney=floor($bankmoney/$risi);
           	    	$president=$this->president->get($companyname);
           	    	$managerlist=$this->manager->get($companyname);
           	    	$employeelist=$this->employee->get($companyname);

           	    	$sender->sendMessage("§b[会社銀行]:§e会社".$companyname."の情報");
           	    	$sender->sendMessage("§aお預け金:§6".$bankmoney."円");
           	    	$sender->sendMessage("§a利子:§6".$risimoney."円");
           	    	$sender->sendMessage("§a社長:§6".$president."");
           	    	$sender->sendMessage("§a課長:§6".$managerlist."");
           	    	$sender->sendMessage("§a社員:§6".$employeelist."");
           	    	break;


           	    case"set":
           	        if($sender instanceof Player){
           	            if(!$sender->isOp()){
           	        	    $sender->sendMessage("§b[会社銀行]:§eOPのみ実行可能です。");
           	        	    break;
           	            }
           	        }

           	        if(!isset($args[0])){
           	        	$sender->sendMessage("§b[会社銀行]:§e利子機能設定方法");
           	        	$sender->sendMessage("§b利子機能のon/off:§e/cpbank set risi");
           	        	$sender->sendMessage("§b利子の配布金額(お預け金÷指定金額):§e/cpbank set risimn <金額>");
           	        	break;
           	        }

           	        if($args[0]=='risi'){
           	        	if($this->config->get('利子機能')=='on'){
           	        		$this->config->set('利子機能','off');
           	        		$this->config->save();
           	        		$sender->sendMessage("§b[会社銀行]:§e利子機能をoffにしました。");
           	        		break;
           	        	}else{
           	        		$this->config->set('利子機能','on');
           	        		$this->config->save();
           	        		$sender->sendMessage("§b[会社銀行]:§e利子機能をonにしました。");
           	        		break;
           	        	}

           	        }elseif($args[0]=='risimn'){
           	        	if(!isset($args[1])){
           	        		$sender->sendMessage("§b[会社銀行]:§e金額を入力してください。");
           	        		break;
           	        	}

           	        	if(!is_numeric($args[1])){
           	        		$sender->sendMessage("§b[会社銀行]:§e指定金額は数字で設定してください。");
           	        		break;
           	        	}

           	        	$this->config->set('利子',$args[1]);
           	        	$this->config->save();
           	        	$sender->sendMessage("§b[会社銀行]:§e利子を＜お預け金÷".$args[1]."＞に設定しました。");
           	        	break;
           	        }else{
           	        	$sender->sendMessage("§b[会社銀行]:§e利子機能設定方法");
           	        	$sender->sendMessage("§b利子機能のon/off:§e/cpbank set risi");
           	        	$sender->sendMessage("§b利子の配布金額(お預け金÷指定金額):§e/cpbank set risimn <金額>");
           	        	break;
           	        }
           	        break;


           	    default:
           	        $sender->sendMessage("§b[会社銀行]:§eコマンド一覧");
           	        $sender->sendMessage("§b新銀行開設(OPのみ):§e/cpbank register <会社名> <社長名>");
           	        $sender->sendMessage("§b課長/社員追加:§e/cpbank member <会社名> <manager/employee> <社員名>");
           	        $sender->sendMessage("§b課長/社員解雇:§e/cpbank member <会社名> <manager/employee> <社員名>");
           	        $sender->sendMessage("§b預け入れ:§e/cpbank dp <会社名> <金額>");
           	        $sender->sendMessage("§b引き出し(社長/課長のみ):§e/cpbank wd <会社名> <金額>");
           	        $sender->sendMessage("§b情報確認:§e/cpbank info <会社名>");
           	        $sender->sendMessage("§b利子機能設定(OPのみ):§e/cpbank set");
           	     	break;
           	     

            }return false;
        }
    }
}name: CompanyBank
main: ryota3422\main
version: 1.0.1
api: 3.0.0
load: POSTWORLD
auther: ryota3422
description: 会社銀行の追加
website: ~
commands:
  cpbank:
    description: 会社銀行を利用できるコマンドx #6֞b   GBMB