

import Feature from"../../featureClass/class";
import SettingBase from"../settings/settingThings/settingBase";
import ToggleSetting from"../settings/settingThings/toggle";

class FragBot extends Feature{
constructor(){
super();
}

onEnable(){
this.initVariables();

this.hostingFragBot=false;
this.fragBotQueue=[];
this.commandQueue=[];

new SettingBase("To host a fragbot use /fragbot","",undefined,"host_fragbot_info",this);
new SettingBase("NOTE: All this does atm is accept party invites","More features for this coming soon",true,"stat_next_to_name_description",this);



this.registerCommand("fragbot",this.fragbotCommand);

this.registerStep(false,5,this.step).registeredWhen(()=>this.hostingFragBot);
this.registerStep(true,2,this.step2).registeredWhen(()=>this.hostingFragBot);

this.registerChat("&9&m---------------------------${*}&r&9\n&r${player} &r&ehas invited you to join their party!\n&r&eYou have &r&c60 &r&eseconds to accept. &r&6Click here to join!&r&9\n&r&9&m----------------------------${*}&r",this.recievedPartyInvite);
}

step(){
if(!this.hostingFragBot)return;

if(this.fragBotQueue.length>0){
let player=this.fragBotQueue.shift();
if(player){
this.commandQueue.push("/party leave");

this.commandQueue.push("/party accept "+player);
}
}
}
step2(){
if(!this.hostingFragBot)return;

if(this.commandQueue.length>0){
let command=this.commandQueue.shift();
if(command){
ChatLib.say(command);
}
}
}
recievedPartyInvite(player){
if(!this.hostingFragBot)return;
player=ChatLib.removeFormatting(player).split(" ").pop();

this.fragBotQueue.push(player);
}

fragbotCommand(...args){
if(this.hostingFragBot){
this.hostingFragBot=false;
ChatLib.chat(this.FeatureManager.messagePrefix+"Fragbot has been disabled");
}else{
this.hostingFragBot=true;
ChatLib.chat(this.FeatureManager.messagePrefix+"Now acting as a fragbot, run /fragbot again to disable");
}
}

initVariables(){
this.hostingFragBot=undefined;
this.fragBotQueue=undefined;
this.commandQueue=undefined;
}

onDisable(){
this.initVariables();
}}


module.exports={
class:new FragBot};