armark1ng

Untitled

May 28th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.48 KB | None | 0 0
  1. package com.rs.game.player;
  2.  
  3. import java.io.Serializable;
  4. import java.util.ArrayList;
  5.  
  6. import com.rs.Settings;
  7. import com.rs.cache.loaders.ClientScriptMap;
  8. import com.rs.game.Region;
  9. import com.rs.game.World;
  10. import com.rs.utils.MusicHints;
  11. import com.rs.utils.Utils;
  12.  
  13. public final class MusicsManager implements Serializable {
  14.  
  15. private static final long serialVersionUID = 1020415702861567375L;
  16.  
  17. private static final int[] CONFIG_IDS = new int[] { 20, 21, 22, 23, 24, 25, 298, 311, 346, 414, 464, 598, 662, 721, 906, 1009, 1104, 1136, 1180, 1202, 1381, 1394, 1434, 1596, 1618, 1619, 1620, 1865, 1864, 2246, 2019, -1, 2430, 2559 };
  18. private static final int[] PLAY_LIST_CONFIG_IDS = new int[] { 1621, 1622, 1623, 1624, 1625, 1626 };
  19.  
  20. public static final int DEATH_MUSIC_EFFECT = 148;
  21.  
  22. private transient Player player;
  23. private transient int playingMusic;
  24. private transient long playingMusicDelay;
  25. private transient boolean settedMusic;
  26. private ArrayList<Integer> unlockedMusics;
  27. private ArrayList<Integer> playList;
  28.  
  29. private transient boolean playListOn;
  30. private transient int nextPlayListMusic;
  31. private transient boolean shuffleOn;
  32.  
  33. public MusicsManager() {
  34. unlockedMusics = new ArrayList<Integer>();
  35. playList = new ArrayList<Integer>(12);
  36. // auto unlocked musics
  37. unlockedMusics.add(62);
  38. unlockedMusics.add(400);
  39. unlockedMusics.add(16);
  40. unlockedMusics.add(466);
  41. unlockedMusics.add(321);
  42. unlockedMusics.add(547);
  43. unlockedMusics.add(621);
  44. unlockedMusics.add(207);
  45. unlockedMusics.add(401);
  46. unlockedMusics.add(147);
  47. unlockedMusics.add(457);
  48. unlockedMusics.add(552);
  49. unlockedMusics.add(858);
  50. }
  51.  
  52. public void passMusics(Player p) {
  53. for (int musicId : p.getMusicsManager().unlockedMusics) {
  54. if (!unlockedMusics.contains(musicId))
  55. unlockedMusics.add(musicId);
  56. }
  57. }
  58.  
  59. public boolean hasMusic(int id) {
  60. return unlockedMusics.contains(id);
  61. }
  62.  
  63. public void setPlayer(Player player) {
  64. this.player = player;
  65. playingMusic = World.getRegion(player.getRegionId()).getRandomMusicId();
  66. }
  67.  
  68. public void switchShuffleOn() {
  69. if (shuffleOn) {
  70. playListOn = false;
  71. refreshPlayListConfigs();
  72. }
  73. shuffleOn = !shuffleOn;
  74. }
  75.  
  76. public void switchPlayListOn() {
  77. if (playListOn) {
  78. playListOn = false;
  79. shuffleOn = false;
  80. refreshPlayListConfigs();
  81. } else {
  82. playListOn = true;
  83. nextPlayListMusic = 0;
  84. replayMusic();
  85. }
  86. }
  87.  
  88. public void clearPlayList() {
  89. if (playList.isEmpty())
  90. return;
  91. playList.clear();
  92. refreshPlayListConfigs();
  93. }
  94.  
  95. public void addPlayingMusicToPlayList() {
  96. addToPlayList((int) ClientScriptMap.getMap(1351).getKeyForValue(playingMusic));
  97. }
  98.  
  99. public void addToPlayList(int musicIndex) {
  100. if (playList.size() == PLAY_LIST_CONFIG_IDS.length * 2)
  101. return;
  102. int musicId = ClientScriptMap.getMap(1351).getIntValue(musicIndex);
  103. if (musicId != -1 && unlockedMusics.contains(musicId) && !playList.contains(musicId)) {
  104. playList.add(musicId);
  105. if (playListOn)
  106. switchPlayListOn();
  107. else
  108. refreshPlayListConfigs();
  109. }
  110. }
  111.  
  112. public void removeFromPlayListByIndex(int listIndex) {
  113. if (listIndex >= PLAY_LIST_CONFIG_IDS.length * 2)
  114. listIndex -= PLAY_LIST_CONFIG_IDS.length * 2;
  115. if (listIndex >= playList.size())
  116. return;
  117. playList.remove(listIndex);
  118. if (playListOn)
  119. switchPlayListOn();
  120. else
  121. refreshPlayListConfigs();
  122. }
  123.  
  124. public void removeFromPlayList(int musicIndex) {
  125. Integer musicId = ClientScriptMap.getMap(1351).getIntValue(musicIndex);
  126. if (musicId != -1 && unlockedMusics.contains(musicId) && playList.contains(musicId)) {
  127. playList.remove(musicId);
  128. if (playListOn)
  129. switchPlayListOn();
  130. else
  131. refreshPlayListConfigs();
  132. }
  133. }
  134.  
  135. public void refreshPlayListConfigs() {
  136. int[] configValues = new int[PLAY_LIST_CONFIG_IDS.length];
  137. for (int i = 0; i < configValues.length; i++)
  138. configValues[i] = -1;
  139. for (int i = 0; i < playList.size(); i += 2) {
  140. Integer musicId1 = playList.get(i);
  141. Integer musicId2 = (i + 1) >= playList.size() ? null : playList.get(i + 1);
  142. if (musicId1 == null && musicId2 == null)
  143. break;
  144. int musicIndex = (int) ClientScriptMap.getMap(1351).getKeyForValue(musicId1);
  145. int configValue;
  146. if (musicId2 != null) {
  147. int musicIndex2 = (int) ClientScriptMap.getMap(1351).getKeyForValue(musicId2);
  148. configValue = musicIndex | musicIndex2 << 15;
  149. } else
  150. configValue = musicIndex | -1 << 15;
  151. configValues[i / 2] = configValue;
  152. }
  153. for (int i = 0; i < PLAY_LIST_CONFIG_IDS.length; i++)
  154. player.getVarsManager().sendVar(PLAY_LIST_CONFIG_IDS[i], configValues[i]);
  155. }
  156.  
  157. public void refreshListConfigs() {
  158. int[] configValues = new int[CONFIG_IDS.length];
  159. for (int musicId : unlockedMusics) {
  160. int musicIndex = (int) ClientScriptMap.getMap(1351).getKeyForValue(musicId);
  161. if (musicIndex == -1)
  162. continue;
  163. int index = getConfigIndex(musicIndex);
  164. if (index >= CONFIG_IDS.length)
  165. continue;
  166. configValues[index] |= 1 << (musicIndex - (index * 32));
  167. }
  168. for (int i = 0; i < CONFIG_IDS.length; i++) {
  169. if (CONFIG_IDS[i] != -1)
  170. player.getVarsManager().sendVar(CONFIG_IDS[i], configValues[i]);
  171. }
  172. }
  173.  
  174. public void addMusic(int musicId) {
  175. unlockedMusics.add(musicId);
  176. refreshListConfigs();
  177. if (unlockedMusics.size() >= Settings.AIR_GUITAR_MUSICS_COUNT)
  178. player.getEmotesManager().unlockEmote(41);
  179. }
  180.  
  181. public int getConfigIndex(int musicId) {
  182. return (musicId + 1) / 32;
  183. }
  184.  
  185. public void unlockMusicPlayer() {
  186. player.getPackets().sendUnlockIComponentOptionSlots(187, 1, 0, CONFIG_IDS.length * 64, 0, 1, 2, 3);
  187. player.getPackets().sendUnlockIComponentOptionSlots(187, 9, 0, PLAY_LIST_CONFIG_IDS.length * 4, 0, 1, 2, 3);
  188. }
  189.  
  190. public void init() {
  191. // unlock music inter all options
  192. if (playingMusic >= 0)
  193. playMusic(playingMusic);
  194. refreshListConfigs();
  195. refreshPlayListConfigs();
  196. }
  197.  
  198. public boolean musicEnded() {
  199. return playingMusic != -2 && playingMusicDelay + (180000) < Utils.currentTimeMillis();
  200. }
  201.  
  202. public void replayMusic() {
  203. if (playListOn && playList.size() > 0) {
  204. if (shuffleOn)
  205. playingMusic = playList.get(Utils.getRandom(playList.size() - 1));
  206. else {
  207. if (nextPlayListMusic >= playList.size())
  208. nextPlayListMusic = 0;
  209. playingMusic = playList.get(nextPlayListMusic++);
  210. }
  211. } else if (unlockedMusics.size() > 0) // random music
  212. playingMusic = unlockedMusics.get(Utils.getRandom(unlockedMusics.size() - 1));
  213. playMusic(playingMusic);
  214. }
  215.  
  216. public void checkMusic(int requestMusicId) {
  217. if (playListOn || settedMusic && playingMusicDelay + (180000) >= Utils.currentTimeMillis())
  218. return;
  219. settedMusic = false;
  220. if (playingMusic != requestMusicId)
  221. playMusic(requestMusicId);
  222. }
  223.  
  224. public void forcePlayMusic(int musicId) {
  225. settedMusic = true;
  226. playMusic(musicId);
  227. }
  228.  
  229. public void reset() {
  230. settedMusic = false;
  231. player.getMusicsManager().checkMusic(World.getRegion(player.getRegionId()).getRandomMusicId());
  232. }
  233.  
  234. public void sendHint(int musicIndex) {
  235. int musicId = ClientScriptMap.getMap(1351).getIntValue(musicIndex);
  236. if (musicId != -1) {
  237. player.getPackets().sendGameMessage("This track " + (unlockedMusics.contains(musicId) ? "was unlocked" : "unlocks") + " " + MusicHints.getHint(musicId));
  238. }
  239. }
  240.  
  241. public void playAnotherMusicFromPlayListByIndex(int listIndex) {
  242. if (listIndex >= PLAY_LIST_CONFIG_IDS.length * 2)
  243. listIndex -= PLAY_LIST_CONFIG_IDS.length * 2;
  244. if (listIndex >= playList.size())
  245. return;
  246. playAnotherMusic(playList.get(listIndex));
  247. }
  248.  
  249. public void playAnotherMusicByIndex(int musicIndex) {
  250. int musicId = ClientScriptMap.getMap(1351).getIntValue(musicIndex);
  251. if (musicId != -1 && unlockedMusics.contains(musicId)) {
  252. settedMusic = true;
  253. if (playListOn)
  254. switchPlayListOn();
  255. playMusic(musicId);
  256. }
  257.  
  258. }
  259.  
  260. public void playAnotherMusic(int musicId) {
  261. if (musicId != -1 && unlockedMusics.contains(musicId)) {
  262. settedMusic = true;
  263. if (playListOn)
  264. switchPlayListOn();
  265. playMusic(musicId);
  266. }
  267. }
  268.  
  269. public void playMusic(int musicId) {
  270. if (!player.hasStarted())
  271. return;
  272. playingMusicDelay = Utils.currentTimeMillis();
  273. if (musicId == -2) {
  274. playingMusic = musicId;
  275. player.getPackets().sendMusic(-1);
  276. player.getPackets().sendIComponentText(187, 4, "");
  277. return;
  278. }
  279. player.getPackets().sendMusic(musicId, playingMusic == -1 ? 0 : 100, 255);
  280. playingMusic = musicId;
  281. int musicIndex = (int) ClientScriptMap.getMap(1351).getKeyForValue(musicId);
  282. if (musicIndex != -1) {
  283. String musicName = ClientScriptMap.getMap(1345).getStringValue(musicIndex);
  284. if (musicName.equals(" "))
  285. musicName = Region.getMusicName1(player.getRegionId());
  286. player.getPackets().sendIComponentText(187, 4, musicName != null ? musicName : "");
  287. if (!unlockedMusics.contains(musicId)) {
  288. addMusic(musicId);
  289. if (musicName != null)
  290. player.getPackets().sendGameMessage("<col=ff0000>You have unlocked a new music track: " + musicName + ".");
  291. }
  292. } else {
  293. String musicName = null;
  294. if (musicId == 2001)
  295. musicName = Region.getMusicName2(player.getRegionId());
  296. else if (musicId == 2000)
  297. musicName = Region.getMusicName1(player.getRegionId());
  298. player.getPackets().sendIComponentText(187, 4, musicName != null ? musicName : "");
  299.  
  300. }
  301. }
  302.  
  303. }
Advertisement
Add Comment
Please, Sign In to add comment