ExShowSeedSetting.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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 com.l2jserver.gameserver.instancemanager.CastleManager;
  17. import com.l2jserver.gameserver.instancemanager.CastleManorManager;
  18. import com.l2jserver.gameserver.instancemanager.CastleManorManager.SeedProduction;
  19. import com.l2jserver.gameserver.model.L2Manor;
  20. import com.l2jserver.gameserver.model.entity.Castle;
  21. import javolution.util.FastList;
  22. /**
  23. * format(packet 0xFE) ch dd [ddcdcdddddddd] c - id h - sub id
  24. *
  25. * d - manor id d - size
  26. * [ d - seed id d - level c d - reward 1 id c d - reward 2 id d - next sale
  27. * limit d - price for castle to produce 1 d - min seed price d - max seed price
  28. * d - today sales d - today price d - next sales d - next price ]
  29. *
  30. * @author l3x
  31. */
  32. public class ExShowSeedSetting extends L2GameServerPacket
  33. {
  34. private static final String _S__FE_1F_EXSHOWSEEDSETTING = "[S] FE:26 ExShowSeedSetting";
  35. private int _manorId;
  36. private int _count;
  37. private long[] _seedData; // data to send, size:_count*12
  38. @Override
  39. public void runImpl()
  40. {
  41. }
  42. public ExShowSeedSetting(int manorId)
  43. {
  44. _manorId = manorId;
  45. Castle c = CastleManager.getInstance().getCastleById(_manorId);
  46. FastList<Integer> seeds = L2Manor.getInstance().getSeedsForCastle(
  47. _manorId);
  48. _count = seeds.size();
  49. _seedData = new long[_count * 12];
  50. int i = 0;
  51. for (int s : seeds)
  52. {
  53. _seedData[i * 12 + 0] = s;
  54. _seedData[i * 12 + 1] = L2Manor.getInstance().getSeedLevel(s);
  55. _seedData[i * 12 + 2] = L2Manor.getInstance().getRewardItemBySeed(
  56. s, 1);
  57. _seedData[i * 12 + 3] = L2Manor.getInstance().getRewardItemBySeed(
  58. s, 2);
  59. _seedData[i * 12 + 4] = L2Manor.getInstance().getSeedSaleLimit(s);
  60. _seedData[i * 12 + 5] = L2Manor.getInstance().getSeedBuyPrice(s);
  61. _seedData[i * 12 + 6] = L2Manor.getInstance().getSeedBasicPrice(s) * 60 / 100;
  62. _seedData[i * 12 + 7] = L2Manor.getInstance().getSeedBasicPrice(s) * 10;
  63. SeedProduction seedPr = c.getSeed(s,
  64. CastleManorManager.PERIOD_CURRENT);
  65. if (seedPr != null)
  66. {
  67. _seedData[i * 12 + 8] = seedPr.getStartProduce();
  68. _seedData[i * 12 + 9] = seedPr.getPrice();
  69. }
  70. else
  71. {
  72. _seedData[i * 12 + 8] = 0;
  73. _seedData[i * 12 + 9] = 0;
  74. }
  75. seedPr = c.getSeed(s, CastleManorManager.PERIOD_NEXT);
  76. if (seedPr != null)
  77. {
  78. _seedData[i * 12 + 10] = seedPr.getStartProduce();
  79. _seedData[i * 12 + 11] = seedPr.getPrice();
  80. }
  81. else
  82. {
  83. _seedData[i * 12 + 10] = 0;
  84. _seedData[i * 12 + 11] = 0;
  85. }
  86. i++;
  87. }
  88. }
  89. @Override
  90. public void writeImpl()
  91. {
  92. writeC(0xFE); // Id
  93. writeH(0x26); // SubId
  94. writeD(_manorId); // manor id
  95. writeD(_count); // size
  96. for (int i = 0; i < _count; i++)
  97. {
  98. writeD((int) _seedData[i * 12 + 0]); // seed id
  99. writeD((int) _seedData[i * 12 + 1]); // level
  100. writeC(1);
  101. writeD((int) _seedData[i * 12 + 2]); // reward 1 id
  102. writeC(1);
  103. writeD((int) _seedData[i * 12 + 3]); // reward 2 id
  104. writeD((int)_seedData[i * 12 + 4]); // next sale limit
  105. writeD((int)_seedData[i * 12 + 5]); // price for castle to produce 1
  106. writeD((int)_seedData[i * 12 + 6]); // min seed price
  107. writeD((int)_seedData[i * 12 + 7]); // max seed price
  108. writeQ(_seedData[i * 12 + 8]); // today sales
  109. writeQ(_seedData[i * 12 + 9]); // today price
  110. writeQ(_seedData[i * 12 + 10]); // next sales
  111. writeQ(_seedData[i * 12 + 11]); // next price
  112. }
  113. }
  114. @Override
  115. public String getType()
  116. {
  117. return _S__FE_1F_EXSHOWSEEDSETTING;
  118. }
  119. }