Advertisement
Guest User

Untitled

a guest
May 5th, 2018
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.34 KB | None | 0 0
  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 ru.catssoftware.gameserver.instancemanager;
  16.  
  17. import javolution.util.FastMap;
  18.  
  19.  
  20. import org.apache.log4j.Logger;
  21.  
  22.  
  23. import ru.catssoftware.Config;
  24. import ru.catssoftware.gameserver.model.L2Character;
  25. import ru.catssoftware.gameserver.model.L2Object;
  26. import ru.catssoftware.gameserver.model.entity.Town;
  27. import ru.catssoftware.gameserver.model.mapregion.L2MapRegion;
  28. import ru.catssoftware.gameserver.model.mapregion.L2MapRegionRestart;
  29. import ru.catssoftware.gameserver.model.zone.L2Zone;
  30.  
  31. public class TownManager
  32. {
  33. protected static Logger _log = Logger.getLogger(TownManager.class.getName());
  34.  
  35. private static TownManager _instance;
  36.  
  37. public static final TownManager getInstance()
  38. {
  39. if (_instance == null)
  40. {
  41. _instance = new TownManager();
  42. }
  43. return _instance;
  44. }
  45.  
  46. private FastMap<Integer, Town> _towns;
  47.  
  48. public void registerTown(L2Zone zone)
  49. {
  50. Town t = new Town(zone);
  51. t.registerZone(zone);
  52. getTowns().put(zone.getTownId(), t);
  53. }
  54.  
  55. /** Return true if object is inside zone */
  56. public final boolean checkIfInZone(L2Object obj)
  57. {
  58. return (getTown(obj) != null);
  59. }
  60.  
  61. /** Return true if object is inside zone */
  62. public final boolean checkIfInZone(int x, int y, int z)
  63. {
  64. return (getTown(x, y, z) != null);
  65. }
  66.  
  67. public String getTownName(int townId)
  68. {
  69. String nearestTown;
  70.  
  71. switch (townId)
  72. {
  73. case 0:
  74. nearestTown = "Talking Island Village";
  75. break;
  76. case 1:
  77. nearestTown = "Elven Village";
  78. break;
  79. case 2:
  80. nearestTown = "Dark Elven Village";
  81. break;
  82. case 3:
  83. nearestTown = "Orc Village";
  84. break;
  85. case 4:
  86. nearestTown = "Dwarven Village";
  87. break;
  88. case 5:
  89. nearestTown = "Town of Gludio";
  90. break;
  91. case 6:
  92. nearestTown = "Gludin Village";
  93. break;
  94. case 7:
  95. nearestTown = "Town of Dion";
  96. break;
  97. case 8:
  98. nearestTown = "Town of Giran";
  99. break;
  100. case 9:
  101. nearestTown = "Town of Oren";
  102. break;
  103. case 10:
  104. nearestTown = "Town of Aden";
  105. break;
  106. case 11:
  107. nearestTown = "Hunters Village";
  108. break;
  109. case 12:
  110. nearestTown = "Giran Harbor";
  111. break;
  112. case 13:
  113. nearestTown = "Heine";
  114. break;
  115. case 14:
  116. nearestTown = "Rune Township";
  117. break;
  118. case 15:
  119. nearestTown = "Town of Goddard";
  120. break;
  121. case 16:
  122. nearestTown = "Town of Schuttgart";
  123. break;
  124. case 17:
  125. nearestTown = "Dimensional Gap";
  126. break;
  127. case 18:
  128. nearestTown = "Primeval Isle Wharf";
  129. break;
  130. case 19:
  131. nearestTown = "Floran Village";
  132. break;
  133. case 20:
  134. nearestTown = "Kamael Village";
  135. break;
  136. case 21:
  137. nearestTown = "Fantasy Isle";
  138. break;
  139. default:
  140. nearestTown = "";
  141. break;
  142. }
  143. return nearestTown;
  144. }
  145.  
  146. public int getRedirectTownNumber(int townId)
  147. {
  148. int redirectTownId = 8;
  149.  
  150. switch (townId)
  151. {
  152. case 5:
  153. redirectTownId = 6;
  154. break; // Gludio => Gludin
  155. case 7:
  156. redirectTownId = 5;
  157. break; // Dion => Gludio
  158. case 8:
  159. redirectTownId = 12;
  160. break; // Giran => Giran Harbor
  161. case 9:
  162. redirectTownId = 11;
  163. break; // Oren => HV
  164. case 10:
  165. redirectTownId = 9;
  166. break; // Aden => Oren
  167. case 15:
  168. redirectTownId = 14;
  169. break; // Goddard => Rune
  170. case 14:
  171. redirectTownId = 15;
  172. break; // Rune => Goddard
  173. case 13:
  174. redirectTownId = 12;
  175. break; // Heine => Giran Harbor
  176. case 16:
  177. redirectTownId = 14;
  178. break; // Schuttgart => Rune
  179. case 17:
  180. redirectTownId = 9;
  181. break; // Ivory Tower => Oren
  182. case 18:
  183. redirectTownId = 14;
  184. break; // Primeval Isle Wharf => Rune
  185. }
  186.  
  187. return redirectTownId;
  188. }
  189.  
  190. public final Town getClosestTown(L2Object activeObject)
  191. {
  192. return getClosestTown(activeObject.getPosition().getX(), activeObject.getPosition().getY(), activeObject.getPosition().getZ());
  193. }
  194.  
  195. public final Town getTownByMaprestart(L2MapRegionRestart restart)
  196. {
  197. if (restart == null)
  198. return getTown(Config.ALT_DEFAULT_RESTARTTOWN);
  199.  
  200. switch (restart.getBbsId())
  201. {
  202. case 1: //Talking Island
  203. return getTown(0);
  204. case 2: //Gludin
  205. return getTown(6);
  206. case 3: //Darkelfen Village
  207. return getTown(2);
  208. case 4: //Elfen Village
  209. return getTown(1);
  210. case 5: //Dion
  211. return getTown(7);
  212. case 6: //Giran
  213. return getTown(8);
  214. case 7: //Dimensional Gap
  215. return getTown(17);
  216. case 8: //Orc Village
  217. return getTown(3);
  218. case 9: //Dwarfen Village
  219. return getTown(4);
  220. case 10: //Oren Villag
  221. return getTown(9);
  222. case 11: //Hunters Village
  223. return getTown(11);
  224. case 12: //Heine
  225. return getTown(13);
  226. case 13: //Aden
  227. return getTown(10);
  228. case 14: //Rune
  229. return getTown(14);
  230. case 15: //Goddard
  231. return getTown(15);
  232. case 16: //Schuttgart
  233. return getTown(16);
  234. case 17: // Dimensional Gap
  235. return getTown(17);
  236. case 18: // Primeval Isle
  237. return getTown(18);
  238. case 19: // Kamael Village
  239. return getTown(20);
  240. case 20: // Fantasy Isle
  241. return getTown(21);
  242. default:
  243. return getTown(Config.ALT_DEFAULT_RESTARTTOWN);
  244. }
  245. }
  246.  
  247. public final Town getClosestTown(int x, int y, int z)
  248. {
  249. L2MapRegion region = MapRegionManager.getInstance().getRegion(x, y, z);
  250.  
  251. L2MapRegionRestart restart = null;
  252. if (region != null)
  253. {
  254. restart = MapRegionManager.getInstance().getRestartLocation(region.getRestartId());
  255. }
  256. else
  257. _log.info("No L2MapRegion defined at " + x + " " + y + " " + z);
  258. return getTownByMaprestart(restart);
  259. }
  260.  
  261. public final boolean townHasCastleInSiege(int townId)
  262. {
  263. Town town = getTown(townId);
  264. return (town != null && town.hasCastleInSiege());
  265. }
  266.  
  267. public final boolean townHasCastleInSiege(int x, int y, int z)
  268. {
  269. Town town = getClosestTown(x, y, z);
  270. return (town != null && town.hasCastleInSiege());
  271. }
  272.  
  273. public final Town getTown(int townId)
  274. {
  275. return getTowns().get(townId);
  276. }
  277.  
  278. public final Town getTown(L2Object activeObject)
  279. {
  280. return getTown(activeObject.getX(), activeObject.getY(), activeObject.getZ());
  281. }
  282.  
  283. public final Town getTown(int x, int y)
  284. {
  285. for (Town town : getTowns().values())
  286. {
  287. if (town != null && town.checkIfInZone(x, y))
  288. return town;
  289. }
  290. return null;
  291. }
  292.  
  293. public final Town getTown(int x, int y, int z)
  294. {
  295. for (Town town : getTowns().values())
  296. {
  297. if (town != null && town.checkIfInZone(x, y, z))
  298. return town;
  299. }
  300. return null;
  301. }
  302.  
  303. public final FastMap<Integer, Town> getTowns()
  304. {
  305. if (_towns == null)
  306. _towns = new FastMap<Integer, Town>();
  307.  
  308. return _towns;
  309. }
  310.  
  311. public String getClosestTownName(L2Character activeChar)
  312. {
  313. return getTownName(getClosestTown(activeChar).getTownId());
  314. }
  315. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement