package module.main; import static org.junit.Assert.assertTrue; import java.io.BufferedReader; import java.io.DataOutputStream; import module.character.Group; import module.character.PlayerGroup; import module.character.api.ICharacter; import module.character.constants.CConfig.config; import module.character.instance.main.Enf; import module.client.ClientUser; import module.command.CommandServer; import module.event.map.instance.chapter0.YiDormitoryEvent; import module.event.map.instance.chapter0.YiDormitoryRoomCommand; import module.item.BaseEquipment; import module.item.instance.chapter0.Key306; import module.item.instance.chapter0.PhysicsBook; import module.map.api.IRoom; import module.mission.chapter0.MainMission; import module.server.PlayerServer; import module.utility.EventUtil; import module.utility.IOUtil; import module.utility.MapUtil; public class MainClass { private static PlayerServer singletonServer; private static ClientUser oneUser; private static PlayerGroup pg = null; private static boolean skipOpening = false; public static void main(String[] args) { // do the game initialize here // game initialize end initialize(); BaseEquipment testEquip = new PhysicsBook(); pg.getInventory().addItem(testEquip); // set player group start position IRoom start = MapUtil.roomMap.get("102,100,3"); pg.setAtRoom(start); pg.setInitialRoom(start); start.getGroupList().gList.add(pg); // start game setup startGameSetup(); if (skipOpening){ MainMission mm = new MainMission(); mm.setState(MainMission.State.START_SEARCHING); PlayerServer.getMissionMap().put(MainMission.class.toString(), mm); Group roommateG = pg.getAtRoom().getGroupList().findGroup("roommate"); pg.getAtRoom().getGroupList().gList.remove(roommateG); roommateG.setAtRoom(null); pg.getAtRoom().getItemList().addItem(new Key306()); pg.setInEvent(false); } else { // execute opening EventUtil.executeEventMessage(pg, "opening"); } // set player group to system time PlayerServer.getSystemTime().addGroup(pg); if (!skipOpening) { // execute the starting event EventUtil.doRoomEvent(pg); } } private static void initialize() { singletonServer = new PlayerServer(); singletonServer.setPort(12312); singletonServer.start(); oneUser = new ClientUser(); assertTrue(oneUser.connectToServer("localhost", 12312)); oneUser.start(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } ICharacter enf = new Enf(); pg = new PlayerGroup(enf); PlayerServer.pList.get(0).setGroup(pg); pg.setOutToClient(PlayerServer.pList.get(0).getOutToClient()); pg.setInFromClient(PlayerServer.pList.get(0).getInFromClient()); // map initialize MapUtil.parseMapFromJSON("resources/map/chapter0/YiDormitory.map"); MapUtil.parseDoorFromJSON("resources/map/chapter0/YiDormitory.door"); YiDormitoryEvent.initialize(); YiDormitoryRoomCommand.initialize(); // npc initialize MapUtil.parseNpcFromJSON("resources/map/chapter0/YiDormitory.npc"); // item initialize MapUtil.parseItemFromJSON("resources/map/chapter0/YiDormitory.item"); // event message initialize EventUtil.parseEventFromJSON("resources/event/chapter0/YiDormitory.event"); } private static void startGameSetup() { // do initialize here EventUtil.parseEventFromJSON("resources/event/main.event"); DataOutputStream outToClient = PlayerServer.pList.get(0) .getOutToClient(); BufferedReader in = PlayerServer.pList.get(0).getInFromClient(); pg.setInEvent(true); EventUtil.showMessageToClient(outToClient, "starting_game"); IOUtil.readLineFromClientSocket(in); String output = "�O�_�}�ұоǼҦ�? <y/n> (��ij�����x�ާ@�覡�����a��y)"; CommandServer.informGroup(pg, output + "\n"); String input = IOUtil.readLineFromClientSocket(in); while (!input.equals("y") && !input.equals("n")) { CommandServer.informGroup(pg, output + "\n"); input = IOUtil.readLineFromClientSocket(in); } if (input.equals("y")) pg.setConfigData(config.TUTORIAL_ON, true); else pg.setConfigData(config.TUTORIAL_ON, false); output = "�O�_�}�ҧY�ɾ԰�? <y/n> (��ij�����x�ާ@�覡�����a��n)\n"; CommandServer.informGroup(pg, output); input = IOUtil.readLineFromClientSocket(in); while (!input.equals("y") && !input.equals("n")) { CommandServer.informGroup(pg, output + "\n"); input = IOUtil.readLineFromClientSocket(in); } if (input.equals("y")) pg.setConfigData(config.REALTIMEBATTLE, true); else pg.setConfigData(config.REALTIMEBATTLE, false); output = "�O�_���L�}�Y�@�� (�]�A�򥻱о�)? <y/n>\n"; CommandServer.informGroup(pg, output); input = IOUtil.readLineFromClientSocket(in); while (!input.equals("y") && !input.equals("n")) { CommandServer.informGroup(pg, output + "\n"); input = IOUtil.readLineFromClientSocket(in); } if (input.equals("y")) skipOpening = true; else skipOpening = false; } }