package com.planet_ink.coffee_mud.Items.interfaces; import java.util.List; import com.planet_ink.coffee_mud.MOBS.interfaces.MOB; /** * A computer is a particular type of electronics panel that holds * software, and has readers who monitor the messages this panel * generates, as well as use the Type command to enter data into * this panel's software. * @see Software * @see ElecPanel * @author Bo Zimmerman * */ public interface Computer extends ElecPanel { /** * Returns the list of Software objects installed in this computer. * @see Software * @return the list of Software objects installed in this computer */ public List<Software> getSoftware(); /** * Returns the list of mobs currently monitoring the output of this * computers software. * @return the list of mobs currently monitoring the output */ public List<MOB> getCurrentReaders(); /** * Forces all the current readers to "read" the computer, typically * seeing the menu. * @see Computer#getCurrentReaders() * @see Computer#forceReadersSeeNew() */ public void forceReadersMenu(); /** * Forces all the current readers to see any new messages that * should be seen by anyone monitoring the computer. * @see Computer#getCurrentReaders() * @see Computer#forceReadersMenu() */ public void forceReadersSeeNew(); /** * Most software supports different levels of menu, and some software * is even a sub-menu unto itself. This method forces the system to * recognize one of those menus as current. The software takes it * from there. * @see Computer#getActiveMenu() * @param internalName the menu to set as current and active */ public void setActiveMenu(String internalName); /** * Most software supports different levels of menu, and some software * is even a sub-menu unto itself. This method returns the current * active menu. * @see Computer#setActiveMenu(String) * @return internalName the menu to set as current and active */ public String getActiveMenu(); }