package module.command.group; import module.character.Group; import module.character.api.ICharacter; import module.command.CommandServer; import module.command.api.ICommand; import module.map.api.IRoom; import module.map.constants.CDoorAttribute.doorStatus; import module.map.constants.CExit.exit; import module.utility.EventUtil; import module.utility.HelpUtil; import module.utility.MoveUtil; import module.utility.NpcActionUtil; public class Move implements ICommand { private String[] name; public Move() { name = new String[12]; name[0] = "north"; name[1] = "n"; name[2] = "south"; name[3] = "s"; name[4] = "east"; name[5] = "e"; name[6] = "west"; name[7] = "w"; name[8] = "up"; name[9] = "u"; name[10] = "down"; name[11] = "d"; } @Override public String[] getName() { return name; } @Override public boolean action(ICharacter c, String[] command) { exit go = MoveUtil.getWay(command[0]); exit from = MoveUtil.getOppositeWay(go); Group g = c.getMyGroup(); boolean triggerRoomEvent = false; synchronized (g.getAtRoom()) { if (g.getInBattle()) { CommandServer.informGroup(g, "����b�԰�����!\n"); } else { // implement the go-north mechanism. if (g.getAtRoom().getExits().get(go) == null) CommandServer.informGroup(g, "�o�Ӥ�V�S������!\n"); else if (g.getAtRoom().getExits().get(go).getDoor() == null || g.getAtRoom().getExits().get(go).getDoor() .getDoorStatus() == doorStatus.OPENED) { IRoom here = g.getAtRoom(); IRoom nRoom = here.getExits().get(go).getRoom(); here.getGroupList().gList.remove(g); here.informRoom(g.getChiName() + "��" + go.chineseName + "�����}�F�C\n"); nRoom.getGroupList().gList.add(g); g.setAtRoom(nRoom); nRoom.informRoomExceptGroup(g, g.getChiName() + "�q" + from.chineseName + "��L�ӤF�C\n"); CommandServer.informGroup(g, nRoom.displayRoomExceptGroup(g)); // check if trigger room event triggerRoomEvent = EventUtil.triggerRoomEvent(g); if (triggerRoomEvent) g.setTalking(true); NpcActionUtil.checkAutoAttackPlayerGroup(g.getAtRoom()); } else CommandServer.informGroup(g, "���䪺���O���۪��C\n"); } } if (triggerRoomEvent){ EventUtil.doRoomEvent(g); g.setTalking(false); } return false; } @Override public String getHelp() { String output = HelpUtil.getHelp("resources/help/move.help"); return output; } }