package plugin.interaction.inter; import org.crandor.game.component.Component; import org.crandor.game.component.ComponentDefinition; import org.crandor.game.component.ComponentPlugin; import org.crandor.game.content.global.tutorial.TutorialSession; import org.crandor.game.content.global.tutorial.TutorialStage; import org.crandor.game.node.entity.combat.equipment.WeaponInterface; import org.crandor.game.node.entity.combat.equipment.WeaponInterface.WeaponInterfaces; import org.crandor.game.node.entity.player.Player; import org.crandor.game.node.entity.player.info.Rights; import org.crandor.game.world.GameWorld; import org.crandor.game.world.map.RegionManager; import org.crandor.net.packet.PacketRepository; import org.crandor.net.packet.context.InterfaceConfigContext; import org.crandor.net.packet.out.InterfaceConfig; import org.crandor.plugin.InitializablePlugin; import org.crandor.plugin.Plugin; /** * Represents the component plugin used for the game interface. * @author Vexia * */ @InitializablePlugin public final class GameInterface extends ComponentPlugin { @Override public Plugin newInstance(Object arg) throws Throwable { ComponentDefinition.put(548, this); ComponentDefinition.put(750, this); ComponentDefinition.put(751, this); ComponentDefinition.put(740, this); ComponentDefinition.put(746, this); return this; } @Override public boolean handle(final Player player, Component component, int opcode, int button, int slot, int itemId) { switch (component.getId()) { case 740: switch (button){ case 3: player.getInterfaceManager().closeChatbox(); break; } return true; case 746: switch (button){ case 110: configureWorldMap(player); break; } return true; case 548: int tut_stage = TutorialSession.getExtension(player).getStage(); if (button >= 38 && button<= 44 || button >= 20 && button <= 26) { player.getInterfaceManager().setCurrentTabIndex(getTabIndex(button)); } switch (button) { case 21://friends tab if (tut_stage == 63) { player.getConfigManager().set(1021, 0); TutorialStage.load(player, 64, false); } break; case 22://ignore tab if (tut_stage == 64) { player.getConfigManager().set(1021, 0); TutorialStage.load(player, 65, false); } break; case 24://settings tab if (tut_stage == 1) { TutorialStage.load(player, 2, false); } break; case 38://attack tab if (tut_stage == 49) { player.getConfigManager().set(1021, 0); TutorialStage.load(player, 50, false); } else { if (TutorialSession.getExtension(player).getStage() > TutorialSession.MAX_STAGE) { if (player.getExtension(WeaponInterface.class) == WeaponInterfaces.STAFF) { final Component c = new Component(WeaponInterfaces.STAFF.getInterfaceId()); player.getInterfaceManager().openTab(0, c); final WeaponInterface inter = player.getExtension(WeaponInterface.class); inter.updateInterface(); } } } break; case 39://skill tab if (tut_stage == 10) { player.getConfigManager().set(1021, 0); TutorialStage.load(player, 11, false); } break; case 40://quest tab if (tut_stage == 27) { TutorialStage.load(player, 28, false); } /*if (GameWorld.isEconomyWorld()) { player.getQuestRepository().syncronizeTab(player); } else { player.getSavedData().getSpawnData().drawStatsTab(player); }*/ player.getQuestRepository().syncronizeTab(player); break; case 41://invy tab if (tut_stage == 5) { player.getConfigManager().set(1021, 0); TutorialStage.load(player, 6, false); } player.getInventory().refresh(); break; case 42://equipment tab if (tut_stage == 45) { player.getConfigManager().set(1021, 0); TutorialStage.load(player, 46, false); } break; case 43://prayer tab if (tut_stage == 61) { player.getConfigManager().set(1021, 0); TutorialStage.load(player, 62, false); } break; case 44://magic tab if (tut_stage == 68) { player.getConfigManager().set(1021, 0); TutorialStage.load(player, 69, false); player.getDialogueInterpreter().open(946, RegionManager.getNpc(player, 946)); } break; case 66: // World map case 110: configureWorldMap(player); break; case 69://Logout player.getPacketDispatch().sendString("When you have finished playing " + GameWorld.getName() + ", always use the button below to logout safely. ", 182, 0); break; } return true; case 750: switch (opcode) { case 155: switch (button) { case 1: player.getSettings().toggleRun(); break; } break; } return true; case 751: switch (opcode) { case 155: switch (button) { case 27: openReport(player); break; } break; } return true; } return true; } /** * Method used to open the report interface. * @param player the player. */ public static void openReport(final Player player) { player.getInterfaceManager().open(new Component(553)).setCloseEvent((player1, c) -> { player1.getPacketDispatch().sendRunScript(80, ""); player1.getPacketDispatch().sendRunScript(137, ""); return true; }); player.getPacketDispatch().sendRunScript(508, ""); if (player.getDetails().getRights() != Rights.REGULAR_PLAYER) { for (int i = 0; i < 18; i++) { player.getPacketDispatch().sendInterfaceConfig(553, i, false); } } } /** * Gets the tab index. * @param button The button id. * @return The tab index. */ private static int getTabIndex(int button) { int tabIndex = button - 38; if (button < 27) { tabIndex = (button - 20) + 7; } return tabIndex; } /** * Configures the world map for a player. * @param player The player. */ private void configureWorldMap(Player player) { if (player.inCombat()) { player.getPacketDispatch().sendMessage("It wouldn't be very wise opening the world map during combat."); return; } // player.getInterfaceManager().openWindowsPane(new Component(755), 1); // player.getPacketDispatch().sendScriptConfig(1187, 0, "ii", 0); int position = player.getLocation().getX() << 14 | player.getLocation().getY() | player.getLocation().getZ() << 28; // player.getPacketDispatch().sendScriptConfig(622, position, "ii"); // player.getPacketDispatch().sendScriptConfig(674, position, "ii"); // player.getPacketDispatch().sendScriptConfig(622, position); // player.getPacketDispatch().sendScriptConfig(674, position); System.out.println(position); /*player.getPacketDispatch().sendWindowsPane(755, 1); int hash = player.getLocation().getX() << 14 | player.getLocation().getY(); player.getPacketDispatch().sendRunScript(622, "", hash); player.getPacketDispatch().sendRunScript(674, "", hash); PacketRepository.send(InterfaceConfig.class, new InterfaceConfigContext(player, 371, 25, true)); player.setAttribute("worldMap:viewing", true);*/ } }