package net.scapeemulator.game.dispatcher.player; import java.util.HashMap; import java.util.Map; import net.scapeemulator.game.dispatcher.player.handler.*; import net.scapeemulator.game.model.ExtendedOption; import net.scapeemulator.game.model.World; import net.scapeemulator.game.model.player.Player; /** * @author Hadyn Richard */ public final class PlayerDispatcher { private Map<String, PlayerHandler> handlers = new HashMap<>(); public PlayerDispatcher() { bind(new FollowHandler()); bind(new TradeHandler()); } public void bind(PlayerHandler handler) { handlers.put(handler.getOption(), handler); } public void unbindAll() { handlers.clear(); } public void handle(Player player, int selectedId, ExtendedOption option) { if (player.actionsBlocked()) { return; } Player selectedPlayer = World.getWorld().getPlayers().get(selectedId); if (selectedPlayer == null || !player.getPosition().isWithinScene(selectedPlayer.getPosition())) { return; } PlayerHandler handler = handlers.get(player.getOption(option.toInteger()).getText().toLowerCase()); if (handler != null) { handler.handle(player, selectedPlayer); } } }