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;
  }
Example #2
0
  @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);
  }
Example #3
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;
  }
Example #4
0
  /** 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());
  }
Example #6
0
  /** 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);
    }
  }