private void setIconForLocalDroppedItems() { Iterator<LocalDroppedItem> localDroppedItemsIter = localDroppedItems.iterator(); while (localDroppedItemsIter.hasNext()) { LocalDroppedItem localDroppedItem = localDroppedItemsIter.next(); if (!Crissaegrim.getPlayer().isBusy() && Crissaegrim.getPlayer().getCurrentBoardName().equals(localDroppedItem.getBoardName()) && RectUtils.rectsOverlap( Crissaegrim.getPlayer().getEntityEntireRect(), localDroppedItem.getBounds())) { Crissaegrim.getPlayer().setIcon("F"); } } }
private void drawLocalDroppedItems() { Iterator<LocalDroppedItem> localDroppedItemsIter = localDroppedItems.iterator(); while (localDroppedItemsIter.hasNext()) { LocalDroppedItem localDroppedItem = localDroppedItemsIter.next(); if (localDroppedItem.getBoardName().equals(Crissaegrim.getPlayer().getCurrentBoardName())) { if (!Crissaegrim.getDebugMode()) { localDroppedItem.draw(); } else { localDroppedItem.drawDebugMode(); } } if (localDroppedItem.update()) { localDroppedItemsIter.remove(); } } }
/** Detects keyboard and mouse input and makes the main player react accordingly. */ private void getKeyboardAndMouseInput() { Player player = Crissaegrim.getPlayer(); EntityMovementHelper pmh = player.getMovementHelper(); if (Keyboard.isKeyDown(Keyboard.KEY_A)) { pmh.requestLeftMovement(); } if (Keyboard.isKeyDown(Keyboard.KEY_D)) { pmh.requestRightMovement(); } if (Keyboard.isKeyDown(Keyboard.KEY_W) || Keyboard.isKeyDown(Keyboard.KEY_SPACE)) { pmh.requestJumpMovement(); } while (Keyboard.next()) { if (Keyboard.getEventKeyState()) { // Key was pressed (not released) int pressedKey = Keyboard.getEventKey(); // if (pressedKey == Keyboard.KEY_B) { // DialogBoxRunner dbr = new DialogBoxRunner(); // DialogBox.Result res = dbr.run(new DialogBox( // Arrays.asList("A wild dialog box appeared!", "Do you want to set this location as // your respawn point?"), // Arrays.asList("Yes", "No", "I-I don't know, I thought I heard a thump?"))); // if (res == DialogBox.Result.BUTTON_1) { Crissaegrim.addSystemMessage("Cool."); } // else if (res == DialogBox.Result.BUTTON_2) { Crissaegrim.addSystemMessage("Fine!"); } // else if (res == DialogBox.Result.BUTTON_3) { // Crissaegrim.addSystemMessage("P-President Fabio?"); } // } // if (pressedKey == Keyboard.KEY_B) { // new SmithingRunner().run(); // Incomplete // } if (pressedKey == Keyboard.KEY_B) { player.receiveItem(Items.tameikeSword()); player.receiveItem(Items.tameikePickaxe()); player.receiveItem(Items.bluePartyPopper()); } if (pressedKey == Keyboard.KEY_T || pressedKey == Keyboard.KEY_RETURN) { // T or Enter: Enter chat mode Crissaegrim.getChatBox().enableTypingMode(); return; // Don't process any more keys! } else if (pressedKey == Keyboard.KEY_UP) { // Up arrow: Select previous inventory item player.getInventory().selectPreviousItem(); } else if (pressedKey == Keyboard.KEY_DOWN) { // Down arrow: Select next inventory item player.getInventory().selectNextItem(); } else if (pressedKey >= Keyboard.KEY_1 && pressedKey <= Keyboard.KEY_8) { // 1-8: Select inventory item player.getInventory().selectSpecificItem(pressedKey - Keyboard.KEY_1); } else if (pressedKey == 41) { // Backtick (`) key Crissaegrim.toggleDebugMode(); } else if (pressedKey == Keyboard.KEY_TAB) { // Tab key: Toggle zoom Crissaegrim.toggleZoom(); } else if (pressedKey == Keyboard.KEY_M) { // M key: Toggle window size Crissaegrim.toggleWindowSize(); } else if (pressedKey == Keyboard.KEY_E) { // E key: Open inventory new InventoryRunner().run(); } else if (pressedKey == Keyboard.KEY_F) { // F key: Activate F-key doodads or pick up items boolean pickedUpAnItem = false; Iterator<LocalDroppedItem> localDroppedItemsIter = localDroppedItems.iterator(); while (localDroppedItemsIter.hasNext()) { LocalDroppedItem localDroppedItem = localDroppedItemsIter.next(); if (!player.isBusy() && player.getCurrentBoardName().equals(localDroppedItem.getBoardName()) && RectUtils.rectsOverlap( Crissaegrim.getPlayer().getEntityEntireRect(), localDroppedItem.getBounds())) { if (player.getInventory().isFull()) { Crissaegrim.addSystemMessage("Your inventory is full."); } else { Item item = localDroppedItem.getItem(); if (item instanceof StackableItem) { Crissaegrim.addSystemMessage( "You picked up " + ((StackableItem) (item)).getNumberInStack() + " " + item.getName() + "s."); } else { Crissaegrim.addSystemMessage( "You picked up " + TextUtils.aOrAn(item.getName()) + " " + item.getName() + "."); } player.getInventory().addItem(item); localDroppedItemsIter.remove(); pickedUpAnItem = true; } break; } } if (!pickedUpAnItem) { // If the F key was not used to pick up an item, it will be used to // activate a doodad for (Doodad doodad : Crissaegrim.getCurrentBoard().getDoodads().values()) { if (!player.isBusy() && RectUtils.coordinateIsInRect(player.getPosition(), doodad.getBounds())) { switch (doodad.getDoodadAction()) { case DoodadActions.GO_THROUGH_DOORWAY: Door door = (Door) doodad; pmh.resetMovementRequests(); setNewDestination( door.getDestinationBoardName(), door.getDestinationCoordinate()); requestTravelToDestinationBoard(); break; case DoodadActions.SMELT_ORE: new SmeltingRunner().run(); break; case DoodadActions.READ_SIGNPOST: Signpost signpost = (Signpost) doodad; new DialogBoxRunner().run(new DialogBox(signpost.getMessages(), "Ok")); break; default: break; } break; // Found the relevant Doodad; ignore the rest } } } } } } if (!Crissaegrim.getChatBox().isTypingMode()) { while (Mouse.next()) { if (Mouse.getEventButtonState()) { // Button was clicked (not released) if (Mouse.getEventButton() == 0) { pmh.requestUseItem( getCoordinatesForMouse(), Crissaegrim.getPlayer().getInventory().getCurrentItem()); } } } int scrollDelta = Mouse.getDWheel(); if (scrollDelta < 0) { Crissaegrim.getPlayer().getInventory().selectNextItem(); } else if (scrollDelta > 0) { Crissaegrim.getPlayer().getInventory().selectPreviousItem(); } } }