ArmorSetsTable.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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.datatables;
  16. import java.io.File;
  17. import java.util.HashMap;
  18. import java.util.Map;
  19. import java.util.logging.Level;
  20. import org.w3c.dom.Document;
  21. import org.w3c.dom.NamedNodeMap;
  22. import org.w3c.dom.Node;
  23. import com.l2jserver.Config;
  24. import com.l2jserver.gameserver.engines.DocumentParser;
  25. import com.l2jserver.gameserver.model.L2ArmorSet;
  26. import com.l2jserver.gameserver.model.holders.SkillHolder;
  27. /**
  28. * @author godson, Luno, UnAfraid
  29. */
  30. public class ArmorSetsTable extends DocumentParser
  31. {
  32. private Map<Integer, L2ArmorSet> _armorSets;
  33. public static ArmorSetsTable getInstance()
  34. {
  35. return SingletonHolder._instance;
  36. }
  37. private ArmorSetsTable()
  38. {
  39. _armorSets = new HashMap<>();
  40. load();
  41. }
  42. private void load()
  43. {
  44. loadDirectory(new File(Config.DATAPACK_ROOT, "data/stats/armorsets"));
  45. _log.log(Level.INFO, getClass().getSimpleName() + ": Loaded " + _armorSets.size() + " Armor sets.");
  46. }
  47. @Override
  48. protected void parseDoc(Document doc)
  49. {
  50. NamedNodeMap attrs;
  51. L2ArmorSet set;
  52. for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
  53. {
  54. if ("list".equalsIgnoreCase(n.getNodeName()))
  55. {
  56. for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
  57. {
  58. if ("set".equalsIgnoreCase(d.getNodeName()))
  59. {
  60. set = new L2ArmorSet();
  61. for (Node a = d.getFirstChild(); a != null; a = a.getNextSibling())
  62. {
  63. attrs = a.getAttributes();
  64. switch (a.getNodeName())
  65. {
  66. case "chest":
  67. {
  68. set.addChest(getIntValue(attrs.getNamedItem("id")));
  69. break;
  70. }
  71. case "feet":
  72. {
  73. set.addFeet(getIntValue(attrs.getNamedItem("id")));
  74. break;
  75. }
  76. case "gloves":
  77. {
  78. set.addGloves(getIntValue(attrs.getNamedItem("id")));
  79. break;
  80. }
  81. case "head":
  82. {
  83. set.addHead(getIntValue(attrs.getNamedItem("id")));
  84. break;
  85. }
  86. case "legs":
  87. {
  88. set.addLegs(getIntValue(attrs.getNamedItem("id")));
  89. break;
  90. }
  91. case "shield":
  92. {
  93. set.addShield(getIntValue(attrs.getNamedItem("id")));
  94. break;
  95. }
  96. case "skill":
  97. {
  98. int skillId = getIntValue(attrs.getNamedItem("id"));
  99. int skillLevel = getIntValue(attrs.getNamedItem("level"));
  100. set.addSkill(new SkillHolder(skillId, skillLevel));
  101. break;
  102. }
  103. case "shield_skill":
  104. {
  105. int skillId = getIntValue(attrs.getNamedItem("id"));
  106. int skillLevel = getIntValue(attrs.getNamedItem("level"));
  107. set.addShieldSkill(new SkillHolder(skillId, skillLevel));
  108. break;
  109. }
  110. case "enchant6skill":
  111. {
  112. int skillId = getIntValue(attrs.getNamedItem("id"));
  113. int skillLevel = getIntValue(attrs.getNamedItem("level"));
  114. set.addEnchant6Skill(new SkillHolder(skillId, skillLevel));
  115. break;
  116. }
  117. case "con":
  118. {
  119. // TODO: Implement me
  120. break;
  121. }
  122. case "dex":
  123. {
  124. // TODO: Implement me
  125. break;
  126. }
  127. case "str":
  128. {
  129. // TODO: Implement me
  130. break;
  131. }
  132. case "men":
  133. {
  134. // TODO: Implement me
  135. break;
  136. }
  137. case "wit":
  138. {
  139. // TODO: Implement me
  140. break;
  141. }
  142. case "int":
  143. {
  144. // TODO: Implement me
  145. break;
  146. }
  147. }
  148. }
  149. _armorSets.put(set.getChestId(), set);
  150. }
  151. }
  152. }
  153. }
  154. }
  155. private int getIntValue(Node n)
  156. {
  157. return Integer.parseInt(n.getNodeValue());
  158. }
  159. public boolean setExists(int chestId)
  160. {
  161. return _armorSets.containsKey(chestId);
  162. }
  163. public L2ArmorSet getSet(int chestId)
  164. {
  165. return _armorSets.get(chestId);
  166. }
  167. @SuppressWarnings("synthetic-access")
  168. private static class SingletonHolder
  169. {
  170. protected static final ArmorSetsTable _instance = new ArmorSetsTable();
  171. }
  172. }