package module.map; import java.util.concurrent.ConcurrentHashMap; import module.character.Group; import module.character.GroupList; import module.character.api.ICharacter; import module.command.CommandServer; import module.command.api.ICommand; import module.item.ItemList; import module.item.api.IItem; import module.map.api.IRoom; import module.map.constants.CExit; import module.map.constants.CExit.exit; public class BaseRoom implements IRoom{ private Position pos = null; private String title = null; private String description = null; private ConcurrentHashMap<exit, Neighbor> exitMap = null; private GroupList gList = null; private ItemList itemList = null; public BaseRoom(){ exitMap = new ConcurrentHashMap<exit, Neighbor>(); gList = new GroupList(); itemList = new ItemList(); } @Override public void setPosition(Position pos) { this.pos = pos; } @Override public Position getPosition() { return this.pos; } @Override public void setTitle(String title) { this.title = title; } @Override public String getTitle() { return this.title; } @Override public void setDescription(String description) { this.description = description; } @Override public String getDescription() { return this.description; } @Override public String displayRoom() { // define the show mechanism when a player "look" at a room StringBuffer outBuffer = new StringBuffer(); outBuffer.append(this.title + "\n"); outBuffer.append(this.description + "\n"); outBuffer.append(CExit.displayRoomExits(this)); outBuffer.append(this.itemList.displayInfo()); outBuffer.append(this.gList.displayInfo()); return outBuffer.toString(); } @Override public ConcurrentHashMap<exit, Neighbor> getExits() { return this.exitMap; } @Override public void setExits(ConcurrentHashMap<exit, Neighbor> exits) { this.exitMap = exits; } @Override public void setSingleExit(exit way, Neighbor link) { this.exitMap.put(way, link); } @Override public Neighbor getSingleExit(exit way) { return this.exitMap.get(way); } @Override public void removeSingleExit(exit way) { this.exitMap.remove(way); } @Override public GroupList getGroupList() { return this.gList; } @Override public ICharacter searchCharByName(String groupName, String name) { return this.gList.findChar(groupName, name); } @Override public IItem searchItemByName(String name) { // TODO Auto-generated method stub return null; } @Override public void informRoom(String message) { for (Group g : this.gList.gList){ CommandServer.informGroup(g, message); } } @Override public ICommand roomCommand(String message) { return null; } @Override public String displayRoomExceptGroup(Group g) { StringBuffer outBuffer = new StringBuffer(); outBuffer.append(this.title + "\n"); outBuffer.append(this.description + "\n"); outBuffer.append(CExit.displayRoomExits(this)); outBuffer.append(this.itemList.displayInfo()); outBuffer.append(this.gList.displayInfoExceptGroup(g)); return outBuffer.toString(); } @Override public void setItemList(ItemList list) { this.itemList = list; } @Override public ItemList getItemList() { return this.itemList; } @Override public void informRoomExceptGroup(Group g, String message) { for (Group gg : this.gList.gList){ if (gg == g) continue; CommandServer.informGroup(gg, message); } } @Override public boolean specialCommand(String msg) { // default do nothing return false; } }