/*
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.SyntaxException;
import server.token.TokenString;

public class FollowCommand extends Command {

    private static final TokenString TS_FOLLOW = new TokenString("%MN1 %v1/begins/begin/ to follow %Mc21/%x2/%n2/.");

    public FollowCommand() {
        super(CommandCategory.INTERACTION, "Follow another player.");
    }

    @Override
    public void run(Player player) throws SyntaxException {
        String name = CommandProcessor.nextToken();
        if (CommandProcessor.nextToken() != null) {
            throw new SyntaxException();
        }
        if (name == null || name.equals("-")) {
            player.setFollow(null);
            player.sendText(true, "You're no longer following anyone.");
        }
        else {
            Player target = player.matchLocalPlayer(name);
            if (target == null) {
                player.sendText(true, "There's noone here by that name.");
                return;
            }
            if (target == player) {
                player.sendText(true, "You can't follow yourself.");
                return;
            }
            player.setFollow(target);
            player.sendText(true, null, null, null, TS_FOLLOW, null, player, target);
            target.sendText(true, null, TS_FOLLOW, null, null, null, player, target);
        }
    }

    @Override
    public String[] getSyntax(Player player) {
        return new String[] { "[player|-]" };
    }

}