Guest User

Untitled

a guest
Mar 5th, 2016
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. package com.rs.game.player;
  2.  
  3. import com.rs.cache.Cache;
  4. import com.rs.cache.loaders.VarBitDefinitions;
  5.  
  6. public class VarsManager {
  7.  
  8. private static final int[] masklookup = new int[32];
  9.  
  10. static {
  11. int i = 2;
  12. for (int i2 = 0; i2 < 32; i2++) {
  13. masklookup[i2] = i - 1;
  14. i += i;
  15. }
  16. }
  17.  
  18. private int[] values;
  19. private Player player;
  20.  
  21. public VarsManager(Player player) {
  22. this.player = player;
  23. values = new int[Cache.STORE.getIndexes()[2].getLastFileId(16) + 1];
  24. }
  25.  
  26. public void sendVar(int id, int value) {
  27. sendVar(id, value, false);
  28. }
  29.  
  30. public void forceSendVar(int id, int value) {
  31. sendVar(id, value, true);
  32. }
  33.  
  34. private void sendVar(int id, int value, boolean force) {
  35. if (id < -1 || id >= values.length)
  36. return;
  37. if (force || values[id] == value)
  38. return;
  39. setVar(id, value);
  40. sendClientVarp(id);
  41. }
  42.  
  43. public void setVar(int id, int value) {
  44. if (id == -1)
  45. return;
  46. values[id] = value;
  47. }
  48.  
  49. public int getValue(int id) {
  50. return values[id];
  51. }
  52.  
  53. public void forceSendVarBit(int id, int value) {
  54. setVarBit(id, value, 0x1 | 0x2);
  55. }
  56.  
  57. public void sendVarBit(int id, int value) {
  58. setVarBit(id, value, 0x1);
  59. }
  60.  
  61. public void setVarBit(int id, int value) {
  62. setVarBit(id, value, 0);
  63. }
  64.  
  65. public int getBitValue(int id) {
  66. VarBitDefinitions defs = VarBitDefinitions
  67. .getClientVarpBitDefinitions(id);
  68. return values[defs.baseVar] >> defs.startBit
  69. & masklookup[defs.endBit - defs.startBit];
  70. }
  71.  
  72. private void setVarBit(int id, int value, int flag) {
  73. if (id == -1)
  74. return;
  75. VarBitDefinitions defs = VarBitDefinitions
  76. .getClientVarpBitDefinitions(id);
  77. int mask = masklookup[defs.endBit - defs.startBit];
  78. if (value < 0 || value > mask)
  79. value = 0;
  80. mask <<= defs.startBit;
  81. int varpValue = (values[defs.baseVar] & (mask ^ 0xffffffff) | value << defs.startBit
  82. & mask);
  83. if ((flag & 0x2) != 0 || varpValue != values[defs.baseVar]) {
  84. setVar(defs.baseVar, varpValue);
  85. if ((flag & 0x1) != 0)
  86. sendClientVarp(defs.baseVar);
  87. }
  88. }
  89.  
  90. private void sendClientVarp(int id) {
  91. player.getPackets().sendVar(id, values[id]);
  92. }
  93. }
Add Comment
Please, Sign In to add comment