ExUISetting.java 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /*
  2. * This program is free software: you can redistribute it and/or modify it under
  3. * the terms of the GNU General Public License as published by the Free Software
  4. * Foundation, either version 3 of the License, or (at your option) any later
  5. * version.
  6. *
  7. * This program is distributed in the hope that it will be useful, but WITHOUT
  8. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  9. * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  10. * details.
  11. *
  12. * You should have received a copy of the GNU General Public License along with
  13. * this program. If not, see <http://www.gnu.org/licenses/>.
  14. */
  15. package com.l2jserver.gameserver.network.serverpackets;
  16. import java.util.List;
  17. import com.l2jserver.gameserver.model.L2UIKeysSettings;
  18. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  19. import com.l2jserver.gameserver.model.entity.ActionKey;
  20. /**
  21. *
  22. * @author mrTJO
  23. */
  24. public class ExUISetting extends L2GameServerPacket
  25. {
  26. private final L2UIKeysSettings _uiSettings;
  27. private int buffsize, categories;
  28. public ExUISetting(L2PcInstance player)
  29. {
  30. _uiSettings = player.getUISettings();
  31. calcSize();
  32. }
  33. /**
  34. * @see com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket#getType()
  35. */
  36. @Override
  37. public String getType()
  38. {
  39. return null;
  40. }
  41. private void calcSize()
  42. {
  43. int size = 16; //initial header and footer
  44. int category = 0;
  45. int numKeyCt = _uiSettings.getKeys().size();
  46. for (int i = 0; i < numKeyCt; i++)
  47. {
  48. size++;
  49. if (_uiSettings.getCategories().containsKey(category))
  50. {
  51. List<Integer> catElList1 = _uiSettings.getCategories().get(category);
  52. size = size + catElList1.size();
  53. }
  54. category++;
  55. size++;
  56. if (_uiSettings.getCategories().containsKey(category))
  57. {
  58. List<Integer> catElList2 = _uiSettings.getCategories().get(category);
  59. size = size + catElList2.size();
  60. }
  61. category++;
  62. size = size+4;
  63. if (_uiSettings.getKeys().containsKey(i))
  64. {
  65. List<ActionKey> keyElList = _uiSettings.getKeys().get(i);
  66. size = size + (keyElList.size()*20);
  67. }
  68. }
  69. buffsize = size;
  70. categories = category;
  71. }
  72. /**
  73. * @see com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket#writeImpl()
  74. */
  75. @Override
  76. protected void writeImpl()
  77. {
  78. writeC(0xFE);
  79. writeH(0x70);
  80. writeD(buffsize);
  81. writeD(categories);
  82. int category = 0;
  83. int numKeyCt = _uiSettings.getKeys().size();
  84. writeD(numKeyCt);
  85. for (int i = 0; i < numKeyCt; i++)
  86. {
  87. if (_uiSettings.getCategories().containsKey(category))
  88. {
  89. List<Integer> catElList1 = _uiSettings.getCategories().get(category);
  90. writeC(catElList1.size());
  91. for (int cmd : catElList1)
  92. {
  93. writeC(cmd);
  94. }
  95. }
  96. else
  97. {
  98. writeC(0x00);
  99. }
  100. category++;
  101. if (_uiSettings.getCategories().containsKey(category))
  102. {
  103. List<Integer> catElList2 = _uiSettings.getCategories().get(category);
  104. writeC(catElList2.size());
  105. for (int cmd : catElList2)
  106. {
  107. writeC(cmd);
  108. }
  109. }
  110. else
  111. {
  112. writeC(0x00);
  113. }
  114. category++;
  115. if (_uiSettings.getKeys().containsKey(i))
  116. {
  117. List<ActionKey> keyElList = _uiSettings.getKeys().get(i);
  118. writeD(keyElList.size());
  119. for (ActionKey akey : keyElList)
  120. {
  121. writeD(akey.getCommandId());
  122. writeD(akey.getKeyId());
  123. writeD(akey.getToogleKey1());
  124. writeD(akey.getToogleKey2());
  125. writeD(akey.getShowStatus());
  126. }
  127. }
  128. else
  129. {
  130. writeD(0x00);
  131. }
  132. }
  133. writeD(0x11);
  134. writeD(0x10);
  135. }
  136. }