armark1ng

Untitled

Sep 5th, 2016
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.01 KB | None | 0 0
  1. package com.rs.game.player.quests;
  2.  
  3. import java.io.Serializable;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7.  
  8. import com.rs.Settings;
  9. import com.rs.game.WorldObject;
  10. import com.rs.game.item.FloorItem;
  11. import com.rs.game.item.Item;
  12. import com.rs.game.npc.NPC;
  13. import com.rs.game.player.Player;
  14. import com.rs.utils.Logger;
  15. import com.rs.utils.Utils;
  16.  
  17. /**
  18. *
  19. * @author ARMAR X K1NG
  20. */
  21. public class QuestManager implements Serializable {
  22.  
  23. private static final long serialVersionUID = 7526433940646726231L;
  24. private transient Player player;
  25. private boolean filter;
  26. private int catagories;
  27. private ArrayList<Quest> quests;
  28. private transient Quest current;
  29.  
  30. /**
  31. * Construct a new {@code QuestManager} {@code Object}.
  32. *
  33. * @param player
  34. */
  35. public QuestManager() {
  36. quests = new ArrayList<Quest>(Settings.QUESTS);
  37. for (int i = 0; i <= Settings.QUESTS; i++) {
  38. quests.add(i, null);
  39. }
  40. }
  41.  
  42. /**
  43. * Start a new quest.
  44. *
  45. * @param quest
  46. * The quest key.
  47. * @param parameters
  48. * The parameters.
  49. */
  50. public void startQuest(int questId, Object... parameters) {
  51. Quest quest = quests.get(questId);
  52. if (quest == null)
  53. return;
  54. if (!quest.hasRequirments())
  55. return;
  56. this.current = quest;
  57. quest.parameters = parameters;
  58. quest.sendQuestJournalInterface(true);
  59. }
  60.  
  61. public Progress getProgress(int questId) {
  62. Quest quest = quests.get(questId);
  63. if (quest == null)
  64. return Progress.NOT_STARTED;
  65. return quest.progress;
  66. }
  67.  
  68. /**
  69. * Initialize the quest manager.
  70. */
  71. public void initialize() {
  72. for (int i = 0; i <= Settings.QUESTS; i++) {
  73. Quest questInstance = Quests.getQuest(i);
  74. if (questInstance != null) {
  75. questInstance.player = player;
  76. quests.set(i, (quests.get(i) == null) ? questInstance : quests.get(i));
  77. }
  78. }
  79. player.getPackets().sendUnlockIComponentOptionSlots(190, 38, 0, 2, 0, 1);
  80. player.getPackets().sendUnlockIComponentOptionSlots(190, 15, 0, Settings.QUESTS, 0, 1, 2, 3);
  81. player.getPackets().sendUnlockIComponentOptionSlots(190, 3, 0, 2, 0);
  82. player.getVarsManager().sendVar(904, 333);
  83. player.getVarsManager().sendVar(101, player.getQuestPoints());
  84. player.getPackets().sendGlobalConfig(699, 951);
  85. refreshQuests();
  86. }
  87.  
  88. /**
  89. * Refresh the progress status of all quests in the quest tab.
  90. */
  91. public void refreshQuests() {
  92. for (Quest quest : quests) {
  93. if (quest == null)
  94. continue;
  95. quest.sendConfigs();
  96. }
  97. refreshQuestsInterface();
  98. }
  99.  
  100. public boolean hasCompletedQuest(int questId) {
  101. Quest quest = quests.get(questId);
  102. if (quest == null)
  103. return false;
  104. return quest.progress == Progress.COMPLETED;
  105. }
  106.  
  107. public void sendQuestJournalInterface(int questId) {
  108. Quest quest = quests.get(questId);
  109. if (quest == null) {
  110. player.getPackets().sendGameMessage("Quest is not added yet.");
  111. return;
  112. }
  113. if (getProgress(questId) == Progress.NOT_STARTED) {
  114. quest.sendQuestJournalInterface(false);
  115. } else {
  116. quest.update();
  117. }
  118. }
  119.  
  120. /**
  121. * Get the quests.
  122. *
  123. * @return The array list holding all quests, completed, started and
  124. * not-started.
  125. */
  126. public ArrayList<Quest> getQuests() {
  127. return quests;
  128. }
  129.  
  130. public Player getPlayer() {
  131. return player;
  132. }
  133.  
  134. public void setPlayer(Player player) {
  135. this.player = player;
  136. }
  137.  
  138. public void toggleFilter() {
  139. filter = !filter;
  140. refreshQuestsInterface();
  141. }
  142.  
  143. public void setCatagories(int catagories) {
  144. this.catagories = catagories;
  145. refreshQuestsInterface();
  146. }
  147.  
  148. private void refreshQuestsInterface() {
  149. player.getVarsManager().sendVar(1384, filter ? (catagories == 0 ? 0 : catagories == 1 ? 45 : 80)
  150. : (catagories == 0 ? 514 : catagories == 1 ? 545 : 580));
  151. player.getPackets().sendRunScriptBlank(2165);
  152. }
  153.  
  154. public boolean processNPCClick1(NPC npc) {
  155. for (Quest quest : quests) {
  156. if (quest == null)
  157. continue;
  158. if (!quest.processNPCClick1(npc))
  159. return false;
  160. }
  161. return true;
  162. }
  163.  
  164. public boolean processNPCClick2(NPC npc) {
  165. for (Quest quest : quests) {
  166. if (quest == null)
  167. continue;
  168. if (!quest.processNPCClick2(npc))
  169. return false;
  170. }
  171. return true;
  172. }
  173.  
  174. public boolean processNPCClick3(NPC npc) {
  175. for (Quest quest : quests) {
  176. if (quest == null)
  177. continue;
  178. if (!quest.processNPCClick3(npc))
  179. return false;
  180. }
  181. return true;
  182. }
  183.  
  184. public boolean processItemOnNPC(NPC npc, Item item) {
  185. for (Quest quest : quests) {
  186. if (quest == null)
  187. continue;
  188. if (!quest.processItemOnNPC(npc, item))
  189. return false;
  190. }
  191. return true;
  192. }
  193.  
  194. public boolean processObjectClick1(WorldObject object) {
  195. for (Quest quest : quests) {
  196. if (quest == null)
  197. continue;
  198. if (!quest.processObjectClick1(object))
  199. return false;
  200. }
  201. return true;
  202. }
  203.  
  204. public boolean processObjectClick2(WorldObject object) {
  205. for (Quest quest : quests) {
  206. if (quest == null)
  207. continue;
  208. if (!quest.processObjectClick2(object))
  209. return false;
  210. }
  211. return true;
  212. }
  213.  
  214. public boolean processObjectClick3(WorldObject object) {
  215. for (Quest quest : quests) {
  216. if (quest == null)
  217. continue;
  218. if (!quest.processObjectClick3(object))
  219. return false;
  220. }
  221. return true;
  222. }
  223.  
  224. public boolean processObjectClick4(WorldObject object) {
  225. for (Quest quest : quests) {
  226. if (quest == null)
  227. continue;
  228. if (!quest.processObjectClick4(object))
  229. return false;
  230. }
  231. return true;
  232. }
  233.  
  234. public boolean processObjectClick5(WorldObject object) {
  235. for (Quest quest : quests) {
  236. if (quest == null)
  237. continue;
  238. if (!quest.processObjectClick5(object))
  239. return false;
  240. }
  241. return true;
  242. }
  243.  
  244. public boolean handleItemOnObject(WorldObject object, Item item) {
  245. for (Quest quest : quests) {
  246. if (quest == null)
  247. continue;
  248. if (!quest.handleItemOnObject(object, item))
  249. return false;
  250. }
  251. return true;
  252. }
  253.  
  254. public boolean canTakeItem(FloorItem item) {
  255. for (Quest quest : quests) {
  256. if (quest == null)
  257. continue;
  258. if (!quest.canTakeItem(item))
  259. return false;
  260. }
  261. return true;
  262. }
  263.  
  264. public boolean canDropItem(Item item) {
  265. for (Quest quest : quests) {
  266. if (quest == null)
  267. continue;
  268. if (!quest.canDropItem(item))
  269. return false;
  270. }
  271. return true;
  272. }
  273.  
  274. public boolean canUseItemOnItem(Item itemUsed, Item usedWith) {
  275. for (Quest quest : quests) {
  276. if (quest == null)
  277. continue;
  278. if (!quest.canUseItemOnItem(itemUsed, usedWith))
  279. return false;
  280. }
  281. return true;
  282. }
  283.  
  284. public boolean processButtonClick(int interfaceId, int componentId, int slotId, int slotId2, int packetId) {
  285. for (Quest quest : quests) {
  286. if (quest == null)
  287. continue;
  288. if (!quest.processButtonClick(interfaceId, componentId, slotId, slotId2, packetId))
  289. return false;
  290. }
  291. return true;
  292. }
  293.  
  294. public boolean useDig() {
  295. for (Quest quest : quests) {
  296. if (quest == null)
  297. continue;
  298. if (!quest.useDig())
  299. return false;
  300. }
  301. return true;
  302. }
  303.  
  304. public boolean handleObjectExamine(WorldObject object) {
  305. for (Quest quest : quests) {
  306. if (quest == null)
  307. continue;
  308. if (!quest.handleObjectExamine(object))
  309. return false;
  310. }
  311. return true;
  312. }
  313.  
  314. public void setQuests(ArrayList<Quest> quests) {
  315. this.quests = quests;
  316. }
  317.  
  318. public Quest getCurrent() {
  319. return current;
  320. }
  321.  
  322. public void setCurrent(Quest current) {
  323. this.current = current;
  324. }
  325.  
  326. public static enum Progress {
  327. COMPLETED,
  328. STARTED,
  329. NOT_STARTED;
  330. }
  331.  
  332. public static class Quests {
  333.  
  334. private static final Map<Integer, Class<Quest>> quests = new HashMap<Integer, Class<Quest>>(Settings.QUESTS);
  335.  
  336. @SuppressWarnings({ "unchecked", "rawtypes" })
  337. public static final void init() {
  338. try {
  339. Class[] classes = Utils.getClasses("com.rs.game.player.quests.impl");
  340. for (Class c : classes) {
  341. if (c.isAnonymousClass())
  342. continue;
  343. Quest script = (Quest) c.newInstance();
  344. if (script == null)
  345. continue;
  346. int key = script.questId();
  347. quests.put(key, c);
  348. }
  349. } catch (Throwable e) {
  350. Logger.handle(e);
  351. }
  352. }
  353.  
  354. public static Quest getQuest(int questId) {
  355. Class<Quest> quest = quests.get(questId);
  356. if (quest == null) {
  357. return null;
  358. }
  359. try {
  360. return quest.newInstance();
  361. } catch (Throwable e) {
  362. Logger.handle(e);
  363. }
  364. return null;
  365. }
  366.  
  367. static {
  368.  
  369. }
  370. }
  371. }
Advertisement
Add Comment
Please, Sign In to add comment