package net.scapeemulator.game.model.player.interfaces; import java.util.HashMap; import java.util.Map; import net.scapeemulator.game.model.Widget; import net.scapeemulator.game.model.player.Player; import net.scapeemulator.game.msg.impl.inter.InterfaceAccessMessage; /** * Written by Hadyn Richard */ public final class AccessSet { private final Map<Integer, ComponentAccess> accessMap = new HashMap<>(); private final Player player; public AccessSet(Player player) { this.player = player; } public void setOptionActive(int optionId, int id, int componentId, int childStart, int childEnd) { ComponentAccess access = getComponentAccess(id, componentId); access.setOptionActive(optionId); player.send(new InterfaceAccessMessage(id, componentId, childStart, childEnd, access.getFlags())); } public void setOptionsActive(int optionStart, int optionEnd, int id, int componentId, int childStart, int childEnd) { ComponentAccess access = getComponentAccess(id, componentId); for(int option = optionStart; option <= optionEnd; option++) { access.setOptionActive(option); } player.send(new InterfaceAccessMessage(id, componentId, childStart, childEnd, access.getFlags())); } private ComponentAccess getComponentAccess(int id, int componentId) { int hash = Widget.getHash(id, componentId); ComponentAccess access = accessMap.get(hash); if(access == null) { access = new ComponentAccess(); accessMap.put(hash, access); } return access; } }