private Battle makeReadyBattle2(BattleManager battleManager, ArrayList list, BuffToolType tool) { UserManager manager = UserManager.getInstance(); manager.removeUser("test001"); manager.removeUser("test002"); User user1 = manager.createDefaultUser(); user1.set_id(new UserId("test001")); // user1.setSessionKey(SessionKey.createSessionKeyFromRandomString()); user1.setUsername("test001"); for (int i = 0; i < 1; i++) { user1.addTool(tool); } User user2 = manager.createDefaultUser(); user2.set_id(new UserId("test002")); // user2.setSessionKey(SessionKey.createSessionKeyFromRandomString()); user2.setUsername("test002"); for (int i = 0; i < 1; i++) { user2.addTool(tool); } manager.saveUser(user1, true); manager.saveUser(user2, true); SessionManager sessionManager = new SessionManager(); IoSession session1 = TestUtil.createIoSession(list); GameContext.getInstance().registerUserSession(session1, user1, null); IoSession session2 = TestUtil.createIoSession(new ArrayList()); GameContext.getInstance().registerUserSession(session2, user2, null); battleManager.clearAllBattles(); // Create two single room RoomManager roomManager = RoomManager.getInstance(); roomManager.assignRoom(user1, RoomType.SINGLE_ROOM); roomManager.assignRoom(user2, RoomType.SINGLE_ROOM); roomManager.readyStart(user1.getSessionKey(), true); roomManager.readyStart(user2.getSessionKey(), true); Collection<Battle> battles = battleManager.findAllBattles(); // Thread.sleep(Long.MAX_VALUE); assertEquals(1, battles.size()); Battle battle = battles.iterator().next(); return battle; }
@Override public void checkOut(Integer reservId) { if (reservId == null) { throw new NullPointerException("Id is null"); } if (reservId < 0) { throw new IllegalArgumentException("ID can't be negative"); } Reservation reservation = reservManag.findReservation(reservId); int roomId = reservation.getIdRoom(); reservManag.deleteReservation(reservation); roomManag.editRoom(roomManag.findRoom(roomId), 0); }
@Override public Reservation chceckIn( String responsiblePerson, String account, Date dateOfCheckIn, int duration, int numBeds) throws SQLException { if (responsiblePerson == null) { throw new NullPointerException("Responsible person is null"); } if (account == null) { throw new NullPointerException("Account is null"); } if (dateOfCheckIn == null) { throw new NullPointerException("Date is null"); } if (duration <= 0) { throw new IllegalArgumentException("duration can't be negative or zero"); } if (numBeds <= 0) { throw new IllegalArgumentException("Number of Beds can'ŧ be negative or zero"); } Reservation reservation = new Reservation(responsiblePerson, account, dateOfCheckIn, duration, numBeds); Room room = null; Set<Room> rooms = roomManag.findAllFreeRooms(); for (Room rm : rooms) { if (rm.getNumberOfBeds() == numBeds && rm.getIdRes() == 0) { room = rm; break; } } if (room == null) { return null; } reservation.setIdRoom(room.getId()); reservation = reservManag.storeReservation(reservation); roomManag.editRoom(room, reservation.getId()); return reservation; }
/** Shuts down this pet, removing it from the world and cleaning up its handler. */ public void shutdown(boolean roomDidShutdown) { // remove ourselves from the handler mapping _petmgr.clearHandler(_petobj.pet.itemId); // if we're not shutting down because our room shutdown... if (!roomDidShutdown) { // leave our current location (which will extract our memories) _sceneReg.leaveOccupiedScene(_petobj); // and save them if (_petobj.memories != null) { RoomManager.flushMemories(_invoker, _memoryRepo, Collections.singleton(_petobj.memories)); } } // if we're following a member, clear that out stopFollowing(); // finally, destroy our pet object _omgr.destroyObject(_petobj.getOid()); }
@Test public void testRoleAttackWithoutFeedback() throws Exception { UserManager manager = UserManager.getInstance(); manager.removeUser("test001"); manager.removeUser("test002"); User user1 = manager.createDefaultUser(); user1.set_id(new UserId("test001")); // user1.setSessionKey(SessionKey.createSessionKeyFromRandomString()); user1.setUsername("test001"); for (int i = 0; i < 1; i++) { user1.addTool(makeBuffTool(i)); } user1.setBag(makeBag(user1, 3)); User user2 = manager.createDefaultUser(); user2.set_id(new UserId("test002")); // user2.setSessionKey(SessionKey.createSessionKeyFromRandomString()); user2.setUsername("test002"); for (int i = 0; i < 1; i++) { user2.addTool(makeBuffTool(i)); } user2.setBag(makeBag(user2, 3)); manager.saveUser(user1, true); manager.saveUserBag(user1, true); manager.saveUser(user2, true); manager.saveUserBag(user2, true); SessionManager sessionManager = new SessionManager(); IoSession session1 = createNiceMock(IoSession.class); sessionManager.registerSession(session1, user1); IoSession session2 = createNiceMock(IoSession.class); sessionManager.registerSession(session2, user2); BattleManager battleManager = BattleManager.getInstance(); battleManager.clearAllBattles(); // Create two single room RoomManager roomManager = RoomManager.getInstance(); roomManager.assignRoom(user1, RoomType.SINGLE_ROOM); roomManager.assignRoom(user2, RoomType.SINGLE_ROOM); // User1 and User2 press "ready start" roomManager.readyStart(user1.getSessionKey(), true); roomManager.readyStart(user2.getSessionKey(), true); Collection<Battle> battles = battleManager.findAllBattles(); // Thread.sleep(Long.MAX_VALUE); assertEquals(1, battles.size()); Battle battle = battles.iterator().next(); // Change the battleMap ArrayList<BattleBitSetMap> battleMaps = BattleDataLoader4Bitmap.getBattleMapList(); BattleBitSetMap map03 = null; for (BattleBitSetMap bm : battleMaps) { if (bm.getMapId().equals("0")) { map03 = bm; break; } } assertNotNull(map03); TestUtil.setPrivateFieldValue("battleMap", battle, map03); HashMap<SessionKey, BattleUser> battleUserMap = battle.getBattleUserMap(); assertEquals(2, battleUserMap.size()); BattleUser bUser1 = battleUserMap.get(user1.getSessionKey()); BattleUser bUser2 = battleUserMap.get(user2.getSessionKey()); assertEquals(user1.getSessionKey(), bUser1.getUserSessionKey()); assertEquals(user1.getBlood(), bUser1.getBlood()); assertEquals(user1.getTkew(), bUser1.getThew()); Jedis jedis = JedisFactory.getJedis(); // User1 and User2 are stage ready. // Test roundStart final ArrayList<Message> msgList = new ArrayList<Message>(); MessageQueue queue = createMock(MessageQueue.class); queue.sessionWrite(anyObject(SessionKey.class), anyObject()); expectLastCall() .andAnswer( new IAnswer<Object>() { public Object answer() throws Throwable { Object msg = getCurrentArguments()[1]; msgList.add((Message) msg); return null; } }) .anyTimes(); TestUtil.setPrivateFieldValue("messageQueue", GameContext.getInstance(), queue); replay(queue); battleManager.stageReady(user1.getSessionKey()); battleManager.stageReady(user2.getSessionKey()); // System.out.println(msgList); // Check if roundStart is called assertEquals(2, msgList.size()); BseRoundStart roundStart = (BseRoundStart) msgList.get(0); assertNotNull(roundStart.getUserId(0)); assertNotNull(roundStart.getUserId(1)); // userPos: (990, 37), angle: 93, power: 83, dir: 1 // Role Attack msgList.clear(); BceRoleAttack.Builder bceRoleAttack = BceRoleAttack.newBuilder(); bceRoleAttack.setAngle(150000); bceRoleAttack.setAtkAngle(bceRoleAttack.getAngle()); bceRoleAttack.setDirection(RoleDirection.RIGHT.ordinal()); bceRoleAttack.setPower(30); int userx = 1380; int usery = 697; bceRoleAttack.setUserx(userx); bceRoleAttack.setUsery(usery); bUser1.setPosX(userx); bUser1.setPosY(usery); bUser2.setPosX(userx); bUser2.setPosY(usery); battleManager.roleAttack(bUser1.getUserSessionKey(), bceRoleAttack.build()); // System.out.println(msgList); // 2 roleAttack messages, 2 roundStart messages. long timeOut = System.currentTimeMillis() + 10000; Message xinqi = null; while (System.currentTimeMillis() < timeOut) { int size = msgList.size(); for (int i = 0; i < size; i++) { Object xm = msgList.get(i); if (xm instanceof BseAskRoundOver) { xinqi = (Message) xm; break; } } Thread.sleep(200); } assertTrue(xinqi != null); verify(queue); // Clean system. jedis.del(battle.getBattleSessionKey().toString()); jedis.del(user1.getSessionKey().toString()); jedis.del(user2.getSessionKey().toString()); }
/** Handles an order from the specified user on this pet. */ public void orderPet(MemberObject owner, int order) throws InvocationException { // first validate the permissions if (order == Pet.ORDER_SLEEP) { validateRoomOrPetOwnership(owner); } else { validateOwnership(owner); } // then enact the order switch (order) { case Pet.ORDER_SLEEP: if (_petobj.pet.ownerId != owner.getMemberId()) { // a non-owner sent the pet to sleep, let's report that MemberObject realOwner = _locator.lookupMember(_petobj.pet.ownerId); if (realOwner != null) { SpeakUtil.sendInfo( realOwner, MsoyCodes.GENERAL_MSGS, MessageUtil.tcompose("m.pet_ordered4_room_mgr", owner.getVisibleName())); } } stopFollowing(); updateUsage(Item.UsedAs.NOTHING, 0); shutdown(false); break; case Pet.ORDER_FOLLOW: startFollowing(owner); break; case Pet.ORDER_GO_HOME: stopFollowing(); updateUsage(Item.UsedAs.PET, owner.homeSceneId); if (ScenePlace.getSceneId(_petobj) == owner.homeSceneId) { // we're already home, yay! } else if (_sceneReg.getSceneManager(owner.homeSceneId) != null) { enterRoom(owner.homeSceneId); } else { // TODO: if home room is resolved (on any server), instruct it to resolve pet shutdown(false); } break; case Pet.ORDER_STAY: // make sure the requester is in a room that they own PlaceManager plmgr = _placeReg.getPlaceManager(owner.getPlaceOid()); if (!(plmgr instanceof RoomManager)) { log.info("Owner no longer in a room?", "who", owner.who(), "in", plmgr); throw new InvocationException(PetCodes.E_INTERNAL_ERROR); } ((RoomManager) plmgr).requireCanAddPet(owner); // potentially stop following our owner stopFollowing(); // note that we want to autoload in this room updateUsage(Item.UsedAs.PET, ((RoomManager) plmgr).getScene().getId()); break; default: log.warning("Received unknown pet order", "from", owner.who(), "order", order); throw new InvocationException(PetCodes.E_INTERNAL_ERROR); } }