/*
Copyright (C) 2005 David Green <green@couchpotato.net>
All Rights Reserved.

This file is part of Aelfengard.

Aelfengard is proprietary software. You may not redistribute it without
prior written permission from the copyright holder.
*/

package server.command;

import server.Player;
import server.Room;
import server.RoomEntity;
import server.SyntaxException;
import server.token.TokenString;

public class GotoCommand extends Command {

    private static final TokenString TS_TELEPORT_2 = new TokenString("%N1 %v1/teleports/teleport/ to a new location.");

    public GotoCommand() {
        super(CommandCategory.ADMIN, "Teleports you to the specified entity, whereever it may be.");
    }

    @Override
    public void run(Player player) throws SyntaxException {
        String name = CommandProcessor.nextToken();
        if (name == null || CommandProcessor.nextToken() != null) {
            throw new SyntaxException();
        }
        RoomEntity target = player.matchGlobalRoomEntity(name);
        if (target == null) {
            player.sendText(true, "Unknown target: " + name);
            return;
        }
        Room otherRoom = target.getRoom();
        if (otherRoom == null) {
            player.sendText(true, "Unable to find target.");
            return;
        }
        if (otherRoom != player.getRoom()) {
            player.sendText(true, null, null, null, TS_TELEPORT_2, null, player);
            player.moveTo(otherRoom);
        }
    }

    @Override
    public String[] getSyntax(Player player) {
        return new String[] { "<target>" };
    }

}