package engine.devcmd.cmds;

import engine.devcmd.AbstractDevCmd;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
import engine.server.MBServerStatics;

/**
 * @author Summary: Devcmd to toggle logging of application protocol messages
 */

public class NetDebugCmd extends AbstractDevCmd {

    // Instance variables


    public NetDebugCmd() {
        super("netdebug");
    }


    // AbstractDevCmd Overridden methods

    private static boolean validateUserInput(String[] userInput) {

        int stringIndex;
        String commandSet = "onoff";

        // incorrect number of arguments test

        if (userInput.length != 1)
            return false;

        // Validate arguments

        stringIndex = commandSet.indexOf(userInput[0].toLowerCase());

        return stringIndex != -1;
    }

    @Override
    protected void _doCmd(PlayerCharacter pc, String[] args,
                          AbstractGameObject target) {

        Boolean debugState = false;

        if (validateUserInput(args) == false) {
            this.sendUsage(pc);
            return;
        }

        // Arguments have been validated use argument to set debug state

        switch (args[0]) {
            case "on":
                debugState = true;
                break;
            case "off":
                debugState = false;
                break;
            default:
                break;
        }

        MBServerStatics.DEBUG_PROTOCOL = debugState;

        // Send results to user
        throwbackInfo(pc, "Network debug state: " + debugState.toString());
    }

    @Override
    protected String _getHelpString() {
        return "Toggles sending network messages to log";
    }

    // Class methods

    @Override
    protected String _getUsageString() {
        return "/netdebug on|off";
    }


}