// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
//      Magicbane Emulator Project © 2013 - 2022
//                www.magicbane.com


package engine.devcmd.cmds;

import engine.devcmd.AbstractDevCmd;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
import engine.objects.Regions;

/**
 * @author Eighty
 */
public class PrintLocationCmd extends AbstractDevCmd {

    public PrintLocationCmd() {
        super("printloc");
    }

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

        PlayerCharacter tar;

        if (target != null && target instanceof PlayerCharacter)
            tar = (PlayerCharacter) target;
        else
            tar = pc;

        throwbackInfo(pc, "Server location for " + tar.getFirstName());
        if (tar.getLoc() != null) {
            throwbackInfo(pc, "Lat: " + tar.getLoc().getX());
            throwbackInfo(pc, "Lon: " + -tar.getLoc().getZ());
            throwbackInfo(pc, "Alt: " + tar.getLoc().getY());
            if (pc.region != null) {
                this.throwbackInfo(pc, "Player Region Slope Position : " + Regions.SlopeLerpPercent(pc, pc.region));
                this.throwbackInfo(pc, "Region Slope Magnitude : " + Regions.GetMagnitudeOfRegionSlope(pc.region));
                this.throwbackInfo(pc, "Player Region Slope Magnitude : " + Regions.GetMagnitudeOfPlayerOnRegionSlope(pc.region, pc));
            } else {
                this.throwbackInfo(pc, "No Region Found for player.");
            }

        } else {
            throwbackInfo(pc, "Server location for " + tar.getFirstName()
                    + " not found");
        }
    }

    @Override
    protected String _getHelpString() {
        return "Returns the player's current location according to the server";
    }

    @Override
    protected String _getUsageString() {
        return "' /printloc'";
    }

}
