Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 93.02 KB | None | 0 0
  1. package com.wurmonline.server.questions;
  2.  
  3. import java.util.logging.*;
  4. import com.wurmonline.server.*;
  5. import com.wurmonline.server.endgames.*;
  6. import com.wurmonline.server.zones.*;
  7. import com.wurmonline.server.behaviours.*;
  8. import com.wurmonline.server.villages.*;
  9. import java.util.*;
  10. import com.wurmonline.server.players.*;
  11. import com.wurmonline.server.items.*;
  12. import com.wurmonline.server.structures.*;
  13. import com.wurmonline.server.creatures.*;
  14.  
  15. public class ManageObjectList extends Question
  16. {
  17. private static final Logger logger;
  18. private static final String red = "color=\"255,127,127\"";
  19. private static final String green = "color=\"127,255,127\"";
  20. private static final String orange = "color=\"255,177,40\"";
  21. private final Player player;
  22. private final Type objectType;
  23. private final boolean fromList;
  24. private final int sortBy;
  25. private String searchName;
  26. private final boolean includeAll;
  27. private PermissionsPlayerList.ISettings[] objects;
  28. private boolean showingQueue;
  29. private boolean inQueue;
  30. private boolean waitAccept;
  31. private boolean inProgress;
  32. private boolean delivered;
  33. private boolean rejected;
  34. private boolean cancelled;
  35.  
  36. public ManageObjectList(final Creature aResponder, final Type aType) {
  37. this(aResponder, aType, -10L, false, 1, "", true);
  38. }
  39.  
  40. public ManageObjectList(final Creature aResponder, final Type aType, final long parent, final boolean wasFromList, final int aSortBy, final String searchFor, final boolean aIncludeAll) {
  41. super(aResponder, getTitle(aResponder, aType, parent, wasFromList, searchFor), getQuestion(aResponder, aType, parent, wasFromList, searchFor), 121, parent);
  42. this.objects = null;
  43. this.showingQueue = false;
  44. this.inQueue = true;
  45. this.waitAccept = false;
  46. this.inProgress = false;
  47. this.delivered = false;
  48. this.rejected = false;
  49. this.cancelled = false;
  50. this.player = (Player)this.getResponder();
  51. this.fromList = wasFromList;
  52. this.objectType = aType;
  53. this.sortBy = aSortBy;
  54. this.searchName = searchFor;
  55. this.includeAll = aIncludeAll;
  56. }
  57.  
  58. public ManageObjectList(final Creature aResponder, final Type aType, final long parent, final boolean wasFromList, final int aSortBy, final String searchFor, final boolean aIncludeAll, final boolean inqueue, final boolean waitaccept, final boolean inprogress, final boolean delivered, final boolean rejected, final boolean cancelled) {
  59. super(aResponder, getTitle(aResponder, aType, parent, wasFromList, searchFor), getQuestion(aResponder, aType, parent, wasFromList, searchFor), 121, parent);
  60. this.objects = null;
  61. this.showingQueue = false;
  62. this.inQueue = true;
  63. this.waitAccept = false;
  64. this.inProgress = false;
  65. this.delivered = false;
  66. this.rejected = false;
  67. this.cancelled = false;
  68. this.player = (Player)this.getResponder();
  69. this.fromList = wasFromList;
  70. this.objectType = aType;
  71. this.sortBy = aSortBy;
  72. this.searchName = searchFor;
  73. this.includeAll = aIncludeAll;
  74. this.showingQueue = (aType == Type.WAGONER);
  75. this.inQueue = inqueue;
  76. this.waitAccept = waitaccept;
  77. this.inProgress = inprogress;
  78. this.delivered = delivered;
  79. this.rejected = rejected;
  80. this.cancelled = cancelled;
  81. }
  82.  
  83. private static String getTitle(final Creature aResponder, final Type aType, final long parent, final boolean wasFromList, final String lookingFor) {
  84. if (aType == Type.DOOR) {
  85. try {
  86. final Structure structure = Structures.getStructure(parent);
  87. return structure.getName() + "'s List of doors";
  88. }
  89. catch (NoSuchStructureException e) {
  90. return aResponder.getName() + "'s List of " + aType.getTitle() + "s";
  91. }
  92. }
  93. if (aType == Type.SEARCH) {
  94. return "Player Search";
  95. }
  96. if (aType == Type.REPLY) {
  97. return "Search Result for " + lookingFor;
  98. }
  99. if (aType == Type.SMALL_CART || aType == Type.LARGE_CART || aType == Type.WAGON || aType == Type.SHIP_CARRIER || aType == Type.CREATURE_CARRIER) {
  100. return aResponder.getName() + "'s List of Small Carts, Large Carts, Wagons and Carriers";
  101. }
  102. if (aType == Type.WAGONER && wasFromList) {
  103. final Wagoner wagoner = Wagoner.getWagoner(parent);
  104. return "Wagoners " + wagoner.getName() + "'s Queue";
  105. }
  106. return aResponder.getName() + "'s List of " + aType.getTitle() + "s";
  107. }
  108.  
  109. private static String getQuestion(final Creature aResponder, final Type aType, final long parent, final boolean wasFromList, final String lookingFor) {
  110. if (aType == Type.DOOR) {
  111. try {
  112. final Structure structure = Structures.getStructure(parent);
  113. return "Manage List of Doors for " + structure.getName();
  114. }
  115. catch (NoSuchStructureException e) {
  116. return "Manage Your List of " + aType.getTitle() + "s";
  117. }
  118. }
  119. if (aType == Type.SEARCH) {
  120. return "Player Search";
  121. }
  122. if (aType == Type.REPLY) {
  123. return "Search Result for " + lookingFor;
  124. }
  125. if (aType == Type.SMALL_CART || aType == Type.LARGE_CART || aType == Type.WAGON || aType == Type.SHIP_CARRIER || aType == Type.CREATURE_CARRIER) {
  126. return "Manage Your List of Small Carts, Large Carts, Wagons and Carriers";
  127. }
  128. if (aType == Type.WAGONER && wasFromList) {
  129. final Wagoner wagoner = Wagoner.getWagoner(parent);
  130. return "Viewing " + wagoner.getName() + "'s Queue";
  131. }
  132. return "Manage Your List of " + aType.getTitle() + "s";
  133. }
  134.  
  135. @Override
  136. public void answer(final Properties aAnswer) {
  137. this.setAnswer(aAnswer);
  138. final boolean managePermissions = this.getBooleanProp("permissions");
  139. final boolean manageDoors = this.getBooleanProp("doors");
  140. final boolean back = this.getBooleanProp("back");
  141. final boolean close = this.getBooleanProp("close");
  142. final boolean search = this.getBooleanProp("search");
  143. final boolean remall = this.getBooleanProp("remall");
  144. final boolean findAnimal = this.getBooleanProp("find");
  145. // added stuff here
  146. final boolean findCart = this.getBooleanProp("findCart");
  147. final boolean findShip = this.getBooleanProp("findShip");
  148. final boolean inc = this.getBooleanProp("inc");
  149. final boolean exc = this.getBooleanProp("exc");
  150. final boolean queue = this.getBooleanProp("queue");
  151. final boolean viewDelivery = this.getBooleanProp("delivery");
  152. if (close) {
  153. return;
  154. }
  155. if (inc) {
  156. final ManageObjectList mol = new ManageObjectList(this.player, this.objectType, this.target, this.fromList, this.sortBy, this.searchName, true);
  157. mol.sendQuestion();
  158. return;
  159. }
  160. if (exc) {
  161. final ManageObjectList mol = new ManageObjectList(this.player, this.objectType, this.target, this.fromList, this.sortBy, this.searchName, false);
  162. mol.sendQuestion();
  163. return;
  164. }
  165. if (back) {
  166. if (this.objectType == Type.DOOR) {
  167. final ManageObjectList mol = new ManageObjectList(this.player, Type.BUILDING, this.target, false, 1, "", this.includeAll);
  168. mol.sendQuestion();
  169. return;
  170. }
  171. if (this.objectType == Type.WAGONER) {
  172. final ManageObjectList mol = new ManageObjectList(this.player, Type.WAGONER, this.target, false, 1, "", this.includeAll);
  173. mol.sendQuestion();
  174. return;
  175. }
  176. if (this.objectType == Type.DELIVERY) {
  177. final ManageObjectList mol = new ManageObjectList(this.player, Type.WAGONER, this.target, false, 1, "", this.includeAll);
  178. mol.sendQuestion2();
  179. return;
  180. }
  181. if (this.objectType == Type.REPLY) {
  182. final ManageObjectList mol = new ManageObjectList(this.player, Type.SEARCH);
  183. mol.sendQuestion();
  184. return;
  185. }
  186. }
  187. if (search) {
  188. final String who = aAnswer.getProperty("who");
  189. final String lookingFor = LoginHandler.raiseFirstLetter(who);
  190. final long lookId = PlayerInfoFactory.getWurmId(lookingFor);
  191. final ManageObjectList mol2 = new ManageObjectList(this.player, Type.REPLY, lookId, true, 1, lookingFor, this.includeAll);
  192. mol2.sendQuestion();
  193. return;
  194. }
  195. if (remall) {
  196. for (final PermissionsPlayerList.ISettings is : this.objects) {
  197. if (!is.isActualOwner(this.target)) {
  198. is.removeGuest(this.target);
  199. this.player.getCommunicator().sendNormalServerMessage("You removed " + this.searchName + " from " + is.getTypeName() + " (" + is.getObjectName() + ")");
  200. }
  201. }
  202. }
  203. // added findCart || findShip
  204. if (managePermissions || manageDoors || findAnimal || findCart || findShip || queue || viewDelivery) {
  205. final String sel = aAnswer.getProperty("sel");
  206. final long selId = Long.parseLong(sel);
  207. if (selId == -10L) {
  208. this.player.getCommunicator().sendNormalServerMessage("You decide to do nothing.");
  209. return;
  210. }
  211. if (managePermissions) {
  212. final int ct = WurmId.getType(selId);
  213. if (ct == 1) {
  214. try {
  215. final Creature creature = Creatures.getInstance().getCreature(selId);
  216. if (creature.isWagoner()) {
  217. final ManagePermissions mp = new ManagePermissions(this.player, Type.WAGONER, creature, true, this.target, false, this.objectType, "");
  218. mp.sendQuestion();
  219. }
  220. else {
  221. final Vehicle vehicle = Vehicles.getVehicle(creature);
  222. if (vehicle == null) {
  223. final ManagePermissions mp2 = new ManagePermissions(this.player, Type.ANIMAL0, creature, true, this.target, false, this.objectType, "");
  224. mp2.sendQuestion();
  225. }
  226. else if (vehicle.isUnmountable()) {
  227. final ManagePermissions mp2 = new ManagePermissions(this.player, Type.ANIMAL0, creature, true, this.target, false, this.objectType, "");
  228. mp2.sendQuestion();
  229. }
  230. else if (vehicle.getMaxPassengers() == 0) {
  231. final ManagePermissions mp2 = new ManagePermissions(this.player, Type.ANIMAL1, creature, true, this.target, false, this.objectType, "");
  232. mp2.sendQuestion();
  233. }
  234. else {
  235. final ManagePermissions mp2 = new ManagePermissions(this.player, Type.ANIMAL2, creature, true, this.target, false, this.objectType, "");
  236. mp2.sendQuestion();
  237. }
  238. }
  239. }
  240. catch (NoSuchCreatureException nsce) {
  241. this.player.getCommunicator().sendNormalServerMessage("Cannot find animal, it was here a minute ago!");
  242. ManageObjectList.logger.log(Level.WARNING, "Cannot find animal, it was here a minute ago! Id:" + selId, nsce);
  243. }
  244. }
  245. else if (ct == 4) {
  246. try {
  247. final PermissionsPlayerList.ISettings theItem = Structures.getStructure(selId);
  248. final ManagePermissions mp = new ManagePermissions(this.player, Type.BUILDING, theItem, true, this.target, false, this.objectType, "");
  249. mp.sendQuestion();
  250. }
  251. catch (NoSuchStructureException nsse) {
  252. this.player.getCommunicator().sendNormalServerMessage("Cannot find structure, it was here a minute ago!");
  253. ManageObjectList.logger.log(Level.WARNING, "Cannot find structure, it was here a minute ago! Id:" + selId, nsse);
  254. }
  255. }
  256. else if (ct == 5) {
  257. try {
  258. final Structure structure = Structures.getStructure(this.target);
  259. for (final Door door : structure.getAllDoors()) {
  260. if (door.getWurmId() == selId) {
  261. final ManagePermissions mp3 = new ManagePermissions(this.player, Type.DOOR, door, true, this.target, this.fromList, this.objectType, "");
  262. mp3.sendQuestion();
  263. return;
  264. }
  265. }
  266. this.player.getCommunicator().sendNormalServerMessage("Cannot find door, it was here a minute ago!");
  267. ManageObjectList.logger.log(Level.WARNING, "Cannot find door, it was here a minute ago! Id:" + selId);
  268. }
  269. catch (NoSuchStructureException nsse) {
  270. this.player.getCommunicator().sendNormalServerMessage("Cannot find structure, it was here a minute ago!");
  271. ManageObjectList.logger.log(Level.WARNING, "Cannot find structure, it was here a minute ago! Id:" + selId, nsse);
  272. }
  273. }
  274. else if (ct == 7) {
  275. final FenceGate gate = FenceGate.getFenceGate(selId);
  276. if (gate != null) {
  277. final ManagePermissions mp = new ManagePermissions(this.player, Type.GATE, gate, true, this.target, this.fromList, this.objectType, "");
  278. mp.sendQuestion();
  279. }
  280. else {
  281. this.player.getCommunicator().sendNormalServerMessage("Cannot find gate, it was here a minute ago!");
  282. }
  283. }
  284. else if (ct == 2) {
  285. try {
  286. final Item item = Items.getItem(selId);
  287. Type itemType = Type.SHIP;
  288. if (item.getTemplateId() == 186) {
  289. itemType = Type.SMALL_CART;
  290. }
  291. else if (item.getTemplateId() == 539) {
  292. itemType = Type.LARGE_CART;
  293. }
  294. else if (item.getTemplateId() == 850) {
  295. itemType = Type.WAGON;
  296. }
  297. else if (item.getTemplateId() == 853) {
  298. itemType = Type.SHIP_CARRIER;
  299. }
  300. else if (item.getTemplateId() == 1410) {
  301. itemType = Type.CREATURE_CARRIER;
  302. }
  303. final ManagePermissions mp2 = new ManagePermissions(this.player, itemType, item, true, this.target, this.fromList, this.objectType, "");
  304. mp2.sendQuestion();
  305. }
  306. catch (NoSuchItemException e) {
  307. this.player.getCommunicator().sendNormalServerMessage("Cannot find vehicle, it was here a minute ago!");
  308. }
  309. }
  310. else if (ct == 3) {
  311. final MineDoorPermission mineDoor = MineDoorPermission.getPermission(selId);
  312. if (mineDoor != null) {
  313. final ManagePermissions mp = new ManagePermissions(this.player, Type.MINEDOOR, mineDoor, true, this.target, this.fromList, this.objectType, "");
  314. mp.sendQuestion();
  315. }
  316. else {
  317. this.player.getCommunicator().sendNormalServerMessage("Cannot find minedoor, it was here a minute ago!");
  318. }
  319. }
  320. else {
  321. this.player.getCommunicator().sendNormalServerMessage("Unknown object!");
  322. }
  323. return;
  324. }
  325. if (manageDoors) {
  326. final ManageObjectList mol3 = new ManageObjectList(this.player, Type.DOOR, selId, true, 1, "", this.includeAll);
  327. mol3.sendQuestion();
  328. }
  329. else if (findAnimal && !Servers.isThisAPvpServer()) {
  330. try {
  331. final Creature creature2 = Creatures.getInstance().getCreature(selId);
  332. final int centerx = creature2.getTileX();
  333. final int centery = creature2.getTileY();
  334. final int dx = Math.abs(centerx - this.player.getTileX());
  335. final int dy = Math.abs(centery - this.player.getTileY());
  336. final int mindist = (int)Math.sqrt(dx * dx + dy * dy);
  337. final int dir = MethodsCreatures.getDir(this.player, centerx, centery);
  338. if (DbCreatureStatus.getIsLoaded(creature2.getWurmId()) == 0) {
  339. final String direction = MethodsCreatures.getLocationStringFor(this.player.getStatus().getRotation(), dir, "you");
  340. final String toReturn = EndGameItems.getDistanceString(mindist, creature2.getName(), direction, false);
  341. this.player.getCommunicator().sendNormalServerMessage(toReturn);
  342. }
  343. else {
  344. this.player.getCommunicator().sendNormalServerMessage("This creature is loaded in a cage, or on another server.");
  345. }
  346. }
  347. catch (NoSuchCreatureException nsce2) {
  348. this.player.getCommunicator().sendNormalServerMessage("Cannot find animal, it was here a minute ago!");
  349. ManageObjectList.logger.log(Level.WARNING, "Cannot find animal, it was here a minute ago! Id:" + selId, nsce2);
  350. }
  351. }
  352. // added stuff here
  353. else if (findCart && !Servers.isThisAPvpServer()) {
  354. try {
  355. final Item item = Items.getItem(selId);
  356. final int centerx = item.getTileX();
  357. final int centery = item.getTileY();
  358. this.player.getCommunicator().sendNormalServerMessage(String.format("The %s is located at X: %d, Y: %d", item.getName(), centerx, centery));
  359. if (!item.isOnSurface()) {
  360. this.player.getCommunicator().sendNormalServerMessage("The vehicle is underground.");
  361. }
  362. }
  363. catch (NoSuchItemException nsce2) {
  364. this.player.getCommunicator().sendNormalServerMessage("Cannot find vehicle, it was here a minute ago!");
  365. ManageObjectList.logger.log(Level.WARNING, "Cannot find vehicle, it was here a minute ago! Id:" + selId, nsce2);
  366. }
  367. }
  368. else if (findShip && !Servers.isThisAPvpServer()) {
  369. try {
  370. final Item item = Items.getItem(selId);
  371. final int centerx = item.getTileX();
  372. final int centery = item.getTileY();
  373. this.player.getCommunicator().sendNormalServerMessage(String.format("The %s is located at X: %d, Y: %d", item.getName(), centerx, centery));
  374. if (!item.isOnSurface()) {
  375. this.player.getCommunicator().sendNormalServerMessage("The ship is underground.");
  376. }
  377. }
  378. catch (NoSuchItemException nsce2) {
  379. this.player.getCommunicator().sendNormalServerMessage("Cannot find ship, it was here a minute ago!");
  380. ManageObjectList.logger.log(Level.WARNING, "Cannot find ship, it was here a minute ago! Id:" + selId, nsce2);
  381. }
  382. }
  383. else {
  384. if (queue && this.objectType == Type.WAGONER) {
  385. this.inQueue = this.getBooleanProp("inqueue");
  386. this.waitAccept = this.getBooleanProp("waitaccept");
  387. this.inProgress = this.getBooleanProp("inprogress");
  388. this.delivered = this.getBooleanProp("delivered");
  389. this.rejected = this.getBooleanProp("rejected");
  390. this.cancelled = this.getBooleanProp("cancelled");
  391. final ManageObjectList mol3 = new ManageObjectList(this.player, Type.WAGONER, selId, true, 1, "", this.includeAll, this.inQueue, this.waitAccept, this.inProgress, this.delivered, this.rejected, this.cancelled);
  392. mol3.sendQuestion2();
  393. return;
  394. }
  395. this.inQueue = this.getBooleanProp("inqueue");
  396. this.waitAccept = this.getBooleanProp("waitaccept");
  397. this.inProgress = this.getBooleanProp("inprogress");
  398. this.delivered = this.getBooleanProp("delivered");
  399. this.rejected = this.getBooleanProp("rejected");
  400. this.cancelled = this.getBooleanProp("cancelled");
  401. final ManageObjectList mol3 = new ManageObjectList(this.player, Type.DELIVERY, selId, true, 1, "", this.includeAll, this.inQueue, this.waitAccept, this.inProgress, this.delivered, this.rejected, this.cancelled);
  402. mol3.sendQuestion3();
  403. return;
  404. }
  405. }
  406. for (final String key : this.getAnswer().stringPropertyNames()) {
  407. if (key.startsWith("sort")) {
  408. final String sid = key.substring(4);
  409. final int newSort = Integer.parseInt(sid);
  410. if (this.showingQueue) {
  411. final ManageObjectList mol2 = new ManageObjectList(this.player, this.objectType, this.target, this.fromList, newSort, this.searchName, this.includeAll, this.inQueue, this.waitAccept, this.inProgress, this.delivered, this.rejected, this.cancelled);
  412. mol2.sendQuestion2();
  413. return;
  414. }
  415. if (this.objectType == Type.DELIVERY) {
  416. final ManageObjectList mol2 = new ManageObjectList(this.player, this.objectType, this.target, this.fromList, newSort, this.searchName, this.includeAll, this.inQueue, this.waitAccept, this.inProgress, this.delivered, this.rejected, this.cancelled);
  417. mol2.sendQuestion3();
  418. return;
  419. }
  420. final ManageObjectList mol2 = new ManageObjectList(this.player, this.objectType, this.target, this.fromList, newSort, this.searchName, this.includeAll);
  421. mol2.sendQuestion();
  422. return;
  423. }
  424. }
  425. if (this.objectType == Type.BUILDING) {
  426. for (final String key : this.getAnswer().stringPropertyNames()) {
  427. if (key.startsWith("demolish")) {
  428. final String sid = key.substring(8);
  429. final long id = Long.parseLong(sid);
  430. try {
  431. final Structure structure2 = Structures.getStructure(id);
  432. if (structure2.isOnSurface()) {
  433. Zones.flash(structure2.getCenterX(), structure2.getCenterY(), false);
  434. }
  435. structure2.totallyDestroy();
  436. }
  437. catch (NoSuchStructureException nsse2) {
  438. this.player.getCommunicator().sendNormalServerMessage("Cannot find structure, it was here a minute ago!");
  439. ManageObjectList.logger.log(Level.WARNING, "Cannot find structure, it was here a minute ago! Id:" + id, nsse2);
  440. }
  441. }
  442. }
  443. }
  444. else if (this.objectType == Type.WAGONER) {
  445. for (final String key : this.getAnswer().stringPropertyNames()) {
  446. if (key.startsWith("dismiss")) {
  447. final String sid = key.substring(7);
  448. final long id = Long.parseLong(sid);
  449. try {
  450. final Creature creature3 = Creatures.getInstance().getCreature(id);
  451. final Wagoner wagoner = creature3.getWagoner();
  452. if (wagoner.getVillageId() == -1) {
  453. this.player.getCommunicator().sendNormalServerMessage("Wagoner is already dismissing!");
  454. }
  455. else {
  456. final WagonerDismissQuestion wdq = new WagonerDismissQuestion(this.getResponder(), wagoner);
  457. wdq.sendQuestion();
  458. }
  459. }
  460. catch (NoSuchCreatureException nsse3) {
  461. this.player.getCommunicator().sendNormalServerMessage("Cannot find wagoner, it was here a minute ago!");
  462. ManageObjectList.logger.log(Level.WARNING, "Cannot find wagoner, it was here a minute ago! Id:" + id, nsse3);
  463. }
  464. }
  465. }
  466. }
  467. else if (this.objectType == Type.ANIMAL0 || this.objectType == Type.ANIMAL1 || this.objectType == Type.ANIMAL2) {
  468. for (final String key : this.getAnswer().stringPropertyNames()) {
  469. if (key.startsWith("uncarefor")) {
  470. final String sid = key.substring(9);
  471. final long id = Long.parseLong(sid);
  472. try {
  473. final int tc = Creatures.getInstance().getNumberOfCreaturesProtectedBy(this.player.getWurmId());
  474. final int max = this.player.getNumberOfPossibleCreatureTakenCareOf();
  475. final Creature animal = Creatures.getInstance().getCreature(id);
  476. if (animal.getCareTakerId() == this.player.getWurmId()) {
  477. Creatures.getInstance().setCreatureProtected(animal, -10L, false);
  478. this.player.getCommunicator().sendNormalServerMessage("You let " + animal.getName() + " go in order to care for other creatures. You may care for " + (max - tc + 1) + " more creatures.");
  479. }
  480. else {
  481. this.player.getCommunicator().sendNormalServerMessage("You are not caring for this animal!");
  482. }
  483. }
  484. catch (NoSuchCreatureException nsce3) {
  485. ManageObjectList.logger.log(Level.WARNING, nsce3.getMessage(), nsce3);
  486. }
  487. }
  488. if (key.startsWith("unbrand")) {
  489. final String sid = key.substring(7);
  490. final long id = Long.parseLong(sid);
  491. try {
  492. final Creature animal2 = Creatures.getInstance().getCreature(id);
  493. final Brand brand = Creatures.getInstance().getBrand(animal2.getWurmId());
  494. if (brand != null) {
  495. if (animal2.getBrandVillage() == this.player.getCitizenVillage()) {
  496. if (this.player.getCitizenVillage().isActionAllowed((short)484, this.player)) {
  497. brand.deleteBrand();
  498. if (animal2.getVisionArea() != null) {
  499. animal2.getVisionArea().broadCastUpdateSelectBar(animal2.getWurmId());
  500. }
  501. }
  502. else {
  503. this.player.getCommunicator().sendNormalServerMessage("You need to have deed permission to remove a brand.");
  504. }
  505. }
  506. else {
  507. this.player.getCommunicator().sendNormalServerMessage("You need to be in same village as the brand on the animal.");
  508. }
  509. }
  510. else {
  511. this.player.getCommunicator().sendNormalServerMessage("That animal is not branded.");
  512. }
  513. }
  514. catch (NoSuchCreatureException nsce3) {
  515. ManageObjectList.logger.log(Level.WARNING, nsce3.getMessage(), nsce3);
  516. }
  517. }
  518. if (key.startsWith("untame")) {
  519. final String sid = key.substring(6);
  520. final long id = Long.parseLong(sid);
  521. try {
  522. final Creature animal2 = Creatures.getInstance().getCreature(id);
  523. if (animal2.getDominator() == this.player) {
  524. if (DbCreatureStatus.getIsLoaded(animal2.getWurmId()) == 1) {
  525. this.player.getCommunicator().sendNormalServerMessage("This animal is caged, remove it first.", (byte)3);
  526. return;
  527. }
  528. final Creature pet = this.player.getPet();
  529. if (animal2.cantRideUntame()) {
  530. assert pet != null;
  531. final Vehicle cret = Vehicles.getVehicleForId(pet.getWurmId());
  532. if (cret != null) {
  533. cret.kickAll();
  534. }
  535. }
  536. animal2.setDominator(-10L);
  537. this.player.setPet(-10L);
  538. this.player.getCommunicator().sendNormalServerMessage("You no longer have this animal tamed!");
  539. }
  540. else {
  541. this.player.getCommunicator().sendNormalServerMessage("You do not have this animal tamed!");
  542. }
  543. }
  544. catch (NoSuchCreatureException nsce3) {
  545. ManageObjectList.logger.log(Level.WARNING, nsce3.getMessage(), nsce3);
  546. }
  547. }
  548. }
  549. }
  550. }
  551.  
  552. @Override
  553. public void sendQuestion() {
  554. int width = 300;
  555. final StringBuilder buf = new StringBuilder();
  556. final String closeBtn = "harray{" + (((this.objectType == Type.DOOR || this.objectType == Type.REPLY) && this.fromList) ? "button{text=\"Back\";id=\"back\"};" : "") + "label{text=\" \"};button{text=\"Close\";id=\"close\"};label{text=\" \"}};";
  557. buf.append("border{border{size=\"20,20\";null;null;label{type='bold';text=\"" + this.question + "\"};" + closeBtn + "null;}null;scroll{vertical=\"true\";horizontal=\"false\";varray{rescale=\"true\";passthrough{id=\"id\";text=\"" + this.getId() + "\"}");
  558. String extraButton = "";
  559. if (this.objectType == Type.SEARCH) {
  560. buf.append("text{text=\"Allow searching for all objects that the player has permissions and you can manage.\"}");
  561. buf.append("harray{label{text=\"Look For Player \"}input{id=\"who\"}}");
  562. buf.append("text{text=\"\"}");
  563. buf.append("harray{button{text=\"Search\";id=\"search\";default=\"true\"}};");
  564. buf.append("}};null;null;}");
  565. this.getResponder().getCommunicator().sendBml(300, 160, true, true, buf.toString(), 200, 200, 200, this.title);
  566. return;
  567. }
  568. if (this.objectType == Type.REPLY) {
  569. if (this.target == -10L) {
  570. buf.append("label{text=\"No such Player\"}");
  571. buf.append("}};null;null;}");
  572. this.getResponder().getCommunicator().sendBml(300, 150, true, true, buf.toString(), 200, 200, 200, this.title);
  573. return;
  574. }
  575. final Village vill = this.getResponder().getCitizenVillage();
  576. final int vid = (vill != null && vill.getRoleFor(this.getResponder()).mayManageAllowedObjects()) ? vill.getId() : -1;
  577. final Set<PermissionsPlayerList.ISettings> result = new HashSet<PermissionsPlayerList.ISettings>();
  578. this.objects = Creatures.getManagedAnimalsFor(this.player, vid, true);
  579. for (final PermissionsPlayerList.ISettings is : this.objects) {
  580. if (is.isGuest(this.target)) {
  581. result.add(is);
  582. }
  583. }
  584. this.objects = Structures.getManagedBuildingsFor(this.player, vid, true);
  585. for (final PermissionsPlayerList.ISettings is : this.objects) {
  586. if (is.isGuest(this.target)) {
  587. result.add(is);
  588. }
  589. }
  590. this.objects = FenceGate.getManagedGatesFor(this.player, vid, true);
  591. for (final PermissionsPlayerList.ISettings is : this.objects) {
  592. if (is.isGuest(this.target)) {
  593. result.add(is);
  594. }
  595. }
  596. this.objects = Items.getManagedCartsFor(this.player, true);
  597. for (final PermissionsPlayerList.ISettings is : this.objects) {
  598. if (is.isGuest(this.target)) {
  599. result.add(is);
  600. }
  601. }
  602. this.objects = MineDoorPermission.getManagedMineDoorsFor(this.player, vid, true);
  603. for (final PermissionsPlayerList.ISettings is : this.objects) {
  604. if (is.isGuest(this.target)) {
  605. result.add(is);
  606. }
  607. }
  608. this.objects = Items.getManagedShipsFor(this.player, true);
  609. for (final PermissionsPlayerList.ISettings is : this.objects) {
  610. if (is.isGuest(this.target)) {
  611. result.add(is);
  612. }
  613. }
  614. this.objects = result.toArray(new PermissionsPlayerList.ISettings[result.size()]);
  615. buf.append("text{text=\"List of objects that player '" + this.searchName + "' has permissions for that you may manage.\"}");
  616. final int absSortBy = Math.abs(this.sortBy);
  617. final int upDown = Integer.signum(this.sortBy);
  618. buf.append("table{rows=\"1\";cols=\"5\";label{text=\"\"};" + this.colHeader("Name", 1, this.sortBy) + this.colHeader("Type", 2, this.sortBy) + this.colHeader("Owner?", 3, this.sortBy) + "label{type=\"bold\";text=\"\"};");
  619. switch (absSortBy) {
  620. case 1: {
  621. Arrays.sort(this.objects, new Comparator<PermissionsPlayerList.ISettings>() {
  622. @Override
  623. public int compare(final PermissionsPlayerList.ISettings param1, final PermissionsPlayerList.ISettings param2) {
  624. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  625. }
  626. });
  627. break;
  628. }
  629. case 2: {
  630. Arrays.sort(this.objects, new Comparator<PermissionsPlayerList.ISettings>() {
  631. @Override
  632. public int compare(final PermissionsPlayerList.ISettings param1, final PermissionsPlayerList.ISettings param2) {
  633. return param1.getTypeName().compareTo(param2.getTypeName()) * upDown;
  634. }
  635. });
  636. break;
  637. }
  638. case 3: {
  639. Arrays.sort(this.objects, new Comparator<PermissionsPlayerList.ISettings>() {
  640. @Override
  641. public int compare(final PermissionsPlayerList.ISettings param1, final PermissionsPlayerList.ISettings param2) {
  642. if (param1.isActualOwner(ManageObjectList.this.target) == param2.isActualOwner(ManageObjectList.this.target)) {
  643. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  644. }
  645. if (param1.isActualOwner(ManageObjectList.this.target)) {
  646. return -1 * upDown;
  647. }
  648. return 1 * upDown;
  649. }
  650. });
  651. break;
  652. }
  653. }
  654. for (final PermissionsPlayerList.ISettings object : this.objects) {
  655. buf.append("radio{group=\"sel\";id=\"" + object.getWurmId() + "\";text=\"\"}label{text=\"" + object.getObjectName() + "\"};label{text=\"" + object.getTypeName() + "\"};label{" + this.showBoolean(object.isActualOwner(this.target)) + "};label{text=\"\"}");
  656. }
  657. buf.append("}");
  658. if (result.size() > 0) {
  659. extraButton = ";label{text=\" \"};button{text=\"Remove all Permissions\";id=\"remall\"}";
  660. }
  661. }
  662. else if (this.objectType == Type.ANIMAL0 || this.objectType == Type.ANIMAL1 || this.objectType == Type.ANIMAL2) {
  663. buf.append(this.makeAnimalList());
  664. if (!Servers.isThisAPvpServer()) {
  665. extraButton = ";label{text=\" \"};button{text=\"Give direction to\";id=\"find\"}";
  666. }
  667. width = 550;
  668. }
  669. else if (this.objectType == Type.BUILDING) {
  670. buf.append(this.makeBuildingList());
  671. extraButton = ";label{text=\" \"};button{text=\"Manage All Doors\";id=\"doors\"}";
  672. width = 500;
  673. }
  674. // added stuff here
  675. else if (this.objectType == Type.LARGE_CART || this.objectType == Type.SMALL_CART || this.objectType == Type.WAGON || this.objectType == Type.SHIP_CARRIER || this.objectType == Type.CREATURE_CARRIER) {
  676. buf.append(this.makeLandVehicleList());
  677. if (!Servers.isThisAPvpServer()) {
  678. extraButton = ";label{text=\" \"};button{text=\"Find this vehicle\";id=\"findCart\"}";
  679. }
  680. width = 500;
  681. }
  682. else if (this.objectType == Type.DOOR) {
  683. buf.append(this.makeDoorList());
  684. width = 500;
  685. }
  686. else if (this.objectType == Type.GATE) {
  687. buf.append(this.makeGateList());
  688. width = 600;
  689. }
  690. else if (this.objectType == Type.MINEDOOR) {
  691. buf.append(this.makeMineDoorList());
  692. width = 400;
  693. }
  694. // added stuff here
  695. else if (this.objectType == Type.SHIP) {
  696. buf.append(this.makeShipList());
  697. if (!Servers.isThisAPvpServer()) {
  698. extraButton = ";label{text=\" \"};button{text=\"Find this ship\";id=\"findShip\"}";
  699. }
  700. width = 500;
  701. }
  702. else if (this.objectType == Type.WAGONER) {
  703. buf.append(this.makeWagonerList());
  704. width = 600;
  705. }
  706. buf.append("radio{group=\"sel\";id=\"-10\";selected=\"true\";text=\"None\"}");
  707. buf.append("text{text=\"\"}");
  708. buf.append("harray{button{text=\"Manage Permissions\";id=\"permissions\"}" + extraButton + "};");
  709. if (this.objectType == Type.WAGONER) {
  710. buf.append("text{text=\"\"}");
  711. buf.append("harray{button{text=\"View Deliveries\";id=\"queue\"};label{text=\" filter by \"};checkbox{id=\"inqueue\";text=\"In queue \"" + (this.inQueue ? ";selected=\"true\"" : "") + "};checkbox{id=\"waitaccept\";text=\"Waiting for accept \"" + (this.waitAccept ? ";selected=\"true\"" : "") + "};checkbox{id=\"inprogress\";text=\"In Progress \"" + (this.inProgress ? ";selected=\"true\"" : "") + "};checkbox{id=\"delivered\";text=\"Delivered \"" + (this.delivered ? ";selected=\"true\"" : "") + "};checkbox{id=\"rejected\";text=\"Rejected \"" + (this.rejected ? ";selected=\"true\"" : "") + "};checkbox{id=\"cancelled\";text=\"Cancelled \"" + (this.cancelled ? ";selected=\"true\"" : "") + "};};");
  712. }
  713. buf.append("}};null;null;}");
  714. this.getResponder().getCommunicator().sendBml(width, 400, true, true, buf.toString(), 200, 200, 200, this.title);
  715. }
  716.  
  717. private void sendQuestion2() {
  718. final StringBuilder buf = new StringBuilder();
  719. final String closeBtn = "harray{button{text=\"Back\";id=\"back\"};label{text=\" \"};button{text=\"Close\";id=\"close\"};label{text=\" \"}};";
  720. buf.append("border{border{size=\"20,20\";null;null;label{type='bold';text=\"" + this.question + "\"};" + "harray{button{text=\"Back\";id=\"back\"};label{text=\" \"};button{text=\"Close\";id=\"close\"};label{text=\" \"}};" + "null;}null;scroll{vertical=\"true\";horizontal=\"false\";varray{rescale=\"true\";passthrough{id=\"id\";text=\"" + this.getId() + "\"}");
  721. final int absSortBy = Math.abs(this.sortBy);
  722. final int upDown = Integer.signum(this.sortBy);
  723. final Delivery[] deliveries = Delivery.getDeliveriesFor(this.target, this.inQueue, this.waitAccept, this.inProgress, this.rejected, this.delivered);
  724. buf.append("table{rows=\"1\";cols=\"6\";label{text=\"\"};" + this.colHeader("id", 1, this.sortBy) + this.colHeader("Sender", 2, this.sortBy) + this.colHeader("Receiver", 3, this.sortBy) + this.colHeader("State", 4, this.sortBy) + "label{text=\"\"};");
  725. switch (absSortBy) {
  726. case 1: {
  727. Arrays.sort(deliveries, new Comparator<Delivery>() {
  728. @Override
  729. public int compare(final Delivery param1, final Delivery param2) {
  730. final long value1 = param1.getDeliveryId();
  731. final long value2 = param2.getDeliveryId();
  732. if (value1 == value2) {
  733. return 0;
  734. }
  735. if (value1 < value2) {
  736. return -1 * upDown;
  737. }
  738. return 1 * upDown;
  739. }
  740. });
  741. break;
  742. }
  743. case 2: {
  744. Arrays.sort(deliveries, new Comparator<Delivery>() {
  745. @Override
  746. public int compare(final Delivery param1, final Delivery param2) {
  747. return param1.getSenderName().compareTo(param2.getSenderName()) * upDown;
  748. }
  749. });
  750. break;
  751. }
  752. case 3: {
  753. Arrays.sort(deliveries, new Comparator<Delivery>() {
  754. @Override
  755. public int compare(final Delivery param1, final Delivery param2) {
  756. return param1.getReceiverName().compareTo(param2.getReceiverName()) * upDown;
  757. }
  758. });
  759. break;
  760. }
  761. case 4: {
  762. Arrays.sort(deliveries, new Comparator<Delivery>() {
  763. @Override
  764. public int compare(final Delivery param1, final Delivery param2) {
  765. return param1.getStateName().compareTo(param2.getStateName()) * upDown;
  766. }
  767. });
  768. break;
  769. }
  770. }
  771. for (final Delivery delivery : deliveries) {
  772. buf.append("radio{group=\"sel\";id=\"" + delivery.getDeliveryId() + "\";text=\"\"}label{text=\"" + delivery.getDeliveryId() + "\"};label{text=\"" + delivery.getSenderName() + "\"};label{text=\"" + delivery.getReceiverName() + "\"};label{text=\"" + delivery.getStateName() + "\"};label{text=\" \"};");
  773. }
  774. buf.append("}");
  775. buf.append("radio{group=\"sel\";id=\"-10\";selected=\"true\";text=\"None\"}");
  776. buf.append("text{text=\"\"}");
  777. buf.append("harray{button{text=\"View Delivery\";id=\"delivery\"};};");
  778. buf.append("}};null;null;}");
  779. this.getResponder().getCommunicator().sendBml(400, 400, true, true, buf.toString(), 200, 200, 200, this.title);
  780. }
  781.  
  782. private void sendQuestion3() {
  783. final StringBuilder buf = new StringBuilder();
  784. final String closeBtn = "harray{button{text=\"Back\";id=\"back\"};label{text=\" \"};button{text=\"Close\";id=\"close\"};label{text=\" \"}};";
  785. buf.append("border{border{size=\"20,20\";null;null;label{type='bold';text=\"" + this.question + "\"};" + "harray{button{text=\"Back\";id=\"back\"};label{text=\" \"};button{text=\"Close\";id=\"close\"};label{text=\" \"}};" + "null;}null;scroll{vertical=\"true\";horizontal=\"false\";varray{rescale=\"true\";passthrough{id=\"id\";text=\"" + this.getId() + "\"}");
  786. final Delivery delivery = Delivery.getDelivery(this.target);
  787. buf.append("table{rows=\"1\";cols=\"4\";");
  788. buf.append("label{text=\"\"};label{text=\"Id\"};label{text=\"\"};label{text=\"" + delivery.getDeliveryId() + "\"};");
  789. buf.append("label{text=\"\"};label{text=\"Sender\"};label{text=\"\"};label{text=\"" + delivery.getSenderName() + "\"};");
  790. buf.append("label{text=\"\"};label{text=\"Receiver\"};label{text=\"\"};label{text=\"" + delivery.getReceiverName() + "\"};");
  791. buf.append("label{text=\"\"};label{text=\"State\"};label{text=\"\"};label{text=\"" + delivery.getStateName() + "\"};");
  792. buf.append("label{text=\"\"};label{text=\"Delivery setup\"};label{text=\"@\"};label{text=\"" + delivery.getStringWaitingForAccept() + "\"};");
  793. String reason = "Accepted";
  794. switch (delivery.getState()) {
  795. case 6:
  796. case 11: {
  797. reason = "Timed Out";
  798. break;
  799. }
  800. case 5:
  801. case 8: {
  802. reason = "Rejected";
  803. break;
  804. }
  805. case 9:
  806. case 10: {
  807. reason = "Cancelled";
  808. break;
  809. }
  810. }
  811. buf.append("label{text=\"\"};label{text=\"" + reason + "\"};label{text=\"@\"};label{text=\"" + delivery.getStringAcceptedOrRejected() + "\"};");
  812. buf.append("label{text=\"\"};label{text=\"Delivery started\"};label{text=\"@\"};label{text=\"" + delivery.getStringDeliveryStarted() + "\"};");
  813. buf.append("label{text=\"\"};label{text=\"Crates picked up\"};label{text=\"@\"};label{text=\"" + delivery.getStringPickedUp() + "\"};");
  814. buf.append("label{text=\"\"};label{text=\"Crates delivered\"};label{text=\"@\"};label{text=\"" + delivery.getStringDelivered() + "\"};");
  815. buf.append("}");
  816. buf.append("}};null;null;}");
  817. this.getResponder().getCommunicator().sendBml(400, 400, true, true, buf.toString(), 200, 200, 200, this.title);
  818. }
  819.  
  820. private String makeAnimalList() {
  821. final StringBuilder buf = new StringBuilder();
  822. final Village vill = this.getResponder().getCitizenVillage();
  823. final int vid = (vill != null && vill.getRoleFor(this.getResponder()).mayManageAllowedObjects()) ? vill.getId() : -1;
  824. buf.append("text{text=\"As well as the list containing any animals that you care for, and any tamed animals you have. It also includes any animals that are branded to your village that have 'Settlement may manage' Permission set to your village so long as you have the 'Manage Allowed Objects' settlement permission.\"}");
  825. buf.append("text{text=\"\"}");
  826. final Creature[] animals = Creatures.getManagedAnimalsFor(this.player, vid, this.includeAll);
  827. final int absSortBy = Math.abs(this.sortBy);
  828. final int upDown = Integer.signum(this.sortBy);
  829. buf.append("table{rows=\"1\";cols=\"8\";label{text=\"\"};" + this.colHeader("Name", 1, this.sortBy) + this.colHeader("Animal Type", 2, this.sortBy) + this.colHeader("On Deed?", 3, this.sortBy) + this.colHeader("Hitched?", 4, this.sortBy) + this.colHeader("Cared For?", 5, this.sortBy) + this.colHeader("Branded?", 6, this.sortBy) + this.colHeader("Tamed?", 7, this.sortBy));
  830. switch (absSortBy) {
  831. case 1: {
  832. Arrays.sort(animals, new Comparator<Creature>() {
  833. @Override
  834. public int compare(final Creature param1, final Creature param2) {
  835. return param1.getName().compareTo(param2.getName()) * upDown;
  836. }
  837. });
  838. break;
  839. }
  840. case 2: {
  841. Arrays.sort(animals, new Comparator<Creature>() {
  842. @Override
  843. public int compare(final Creature param1, final Creature param2) {
  844. return param1.getTypeName().compareTo(param2.getTypeName()) * upDown;
  845. }
  846. });
  847. break;
  848. }
  849. case 3: {
  850. Arrays.sort(animals, new Comparator<Creature>() {
  851. @Override
  852. public int compare(final Creature param1, final Creature param2) {
  853. if (param1.isOnDeed() == param2.isOnDeed()) {
  854. return param1.getName().compareTo(param2.getName()) * upDown;
  855. }
  856. if (param1.isOnDeed()) {
  857. return 1 * upDown;
  858. }
  859. return -1 * upDown;
  860. }
  861. });
  862. break;
  863. }
  864. case 4: {
  865. Arrays.sort(animals, new Comparator<Creature>() {
  866. @Override
  867. public int compare(final Creature param1, final Creature param2) {
  868. if (param1.isHitched() == param2.isHitched()) {
  869. return param1.getName().compareTo(param2.getName()) * upDown;
  870. }
  871. if (param1.isHitched()) {
  872. return 1 * upDown;
  873. }
  874. return -1 * upDown;
  875. }
  876. });
  877. break;
  878. }
  879. case 5: {
  880. Arrays.sort(animals, new Comparator<Creature>() {
  881. @Override
  882. public int compare(final Creature param1, final Creature param2) {
  883. if (param1.isCaredFor(ManageObjectList.this.player) == param2.isCaredFor(ManageObjectList.this.player)) {
  884. return param1.getName().compareTo(param2.getName()) * upDown;
  885. }
  886. if (param1.isCaredFor(ManageObjectList.this.player)) {
  887. return 1 * upDown;
  888. }
  889. return -1 * upDown;
  890. }
  891. });
  892. break;
  893. }
  894. case 6: {
  895. Arrays.sort(animals, new Comparator<Creature>() {
  896. @Override
  897. public int compare(final Creature param1, final Creature param2) {
  898. if (param1.isBrandedBy(vid) == param2.isBrandedBy(vid)) {
  899. return param1.getName().compareTo(param2.getName()) * upDown;
  900. }
  901. if (param1.isBrandedBy(vid)) {
  902. return 1 * upDown;
  903. }
  904. return -1 * upDown;
  905. }
  906. });
  907. break;
  908. }
  909. case 7: {
  910. Arrays.sort(animals, new Comparator<Creature>() {
  911. @Override
  912. public int compare(final Creature param1, final Creature param2) {
  913. if (param1.isDominated() == param2.isDominated()) {
  914. return param1.getName().compareTo(param2.getName()) * upDown;
  915. }
  916. if (param1.isDominated()) {
  917. return 1 * upDown;
  918. }
  919. return -1 * upDown;
  920. }
  921. });
  922. break;
  923. }
  924. }
  925. for (final Creature animal : animals) {
  926. buf.append((animal.canHavePermissions() ? ("radio{group=\"sel\";id=\"" + animal.getWurmId() + "\";text=\"\"}") : "label{text=\"\"};") + "label{text=\"" + animal.getName() + "\"};label{text=\"" + animal.getTypeName() + "\"};" + (animal.isBranded() ? ("label{" + this.showBoolean(animal.isOnDeed()) + "};") : "label{text=\"not branded\"};") + "label{" + this.showBoolean(animal.isHitched()) + "};");
  927. if (animal.isCaredFor(this.player)) {
  928. buf.append(this.unCareForButton(animal));
  929. }
  930. else {
  931. buf.append("label{" + this.showBoolean(animal.getCareTakerId() != -10L) + "};");
  932. }
  933. if (animal.isBranded() && animal.getBrandVillage() == this.player.getCitizenVillage() && this.player.getCitizenVillage().isActionAllowed((short)484, this.player)) {
  934. buf.append(this.unBrandButton(animal));
  935. }
  936. else {
  937. buf.append("label{" + this.showBoolean(animal.isBranded()) + "};");
  938. }
  939. if (animal.isDominated() && animal.getDominator() == this.player) {
  940. buf.append(this.unTameButton(animal));
  941. }
  942. else {
  943. buf.append("label{" + this.showBoolean(animal.isDominated()) + "};");
  944. }
  945. }
  946. buf.append("}");
  947. return buf.toString();
  948. }
  949.  
  950. private String unCareForButton(final Creature animal) {
  951. final StringBuilder buf = new StringBuilder();
  952. buf.append("harray{button{text=\"Un-Care For\";id=\"uncarefor" + animal.getWurmId() + "\";confirm=\"You are about to un care for " + animal.getName() + ".\";question=\"Do you really want to do that?\"}label{text=\" \"}}");
  953. return buf.toString();
  954. }
  955.  
  956. private String unBrandButton(final Creature animal) {
  957. final StringBuilder buf = new StringBuilder();
  958. buf.append("harray{button{text=\"Un-Brand\";id=\"unbrand" + animal.getWurmId() + "\";confirm=\"You are about to remove the brand from " + animal.getName() + ".\";question=\"Do you really want to do that?\"}label{text=\" \"}}");
  959. return buf.toString();
  960. }
  961.  
  962. private String unTameButton(final Creature animal) {
  963. final StringBuilder buf = new StringBuilder();
  964. buf.append("harray{button{text=\"Un-Tame\";id=\"untame" + animal.getWurmId() + "\";confirm=\"You are about to un tame " + animal.getName() + ".\";question=\"Do you really want to do that?\"}label{text=\" \"}}");
  965. return buf.toString();
  966. }
  967.  
  968. private String makeBuildingList() {
  969. final StringBuilder buf = new StringBuilder();
  970. buf.append("text{text=\"List includes any buildings that you are the owner of plus any buildings in your settlment that have 'Settlement may manage' Permission set to your village so long as you have the 'Manage Allowed Objects' settlement permission.\"}");
  971. buf.append("text{text=\"\"}");
  972. final Village vill = this.getResponder().getCitizenVillage();
  973. final int vid = (vill != null && vill.getRoleFor(this.getResponder()).mayManageAllowedObjects()) ? vill.getId() : -1;
  974. final Structure[] structures = Structures.getManagedBuildingsFor(this.player, vid, this.includeAll);
  975. final int absSortBy = Math.abs(this.sortBy);
  976. final int upDown = Integer.signum(this.sortBy);
  977. buf.append("table{rows=\"1\";cols=\"7\";label{text=\"\"};" + this.colHeader("Name", 1, this.sortBy) + this.colHeader("Owner?", 2, this.sortBy) + this.colHeader("Doors have locks?", 3, this.sortBy) + this.colHeader("On Deed?", 4, this.sortBy) + this.colHeader("Deed Managed?", 5, this.sortBy) + "label{type=\"bold\";text=\"\"};");
  978. switch (absSortBy) {
  979. case 1: {
  980. Arrays.sort(structures, new Comparator<Structure>() {
  981. @Override
  982. public int compare(final Structure param1, final Structure param2) {
  983. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  984. }
  985. });
  986. break;
  987. }
  988. case 2: {
  989. Arrays.sort(structures, new Comparator<Structure>() {
  990. @Override
  991. public int compare(final Structure param1, final Structure param2) {
  992. if (param1.isActualOwner(ManageObjectList.this.player.getWurmId()) == param2.isActualOwner(ManageObjectList.this.player.getWurmId())) {
  993. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  994. }
  995. if (param1.isActualOwner(ManageObjectList.this.player.getWurmId())) {
  996. return -1 * upDown;
  997. }
  998. return 1 * upDown;
  999. }
  1000. });
  1001. break;
  1002. }
  1003. case 3: {
  1004. Arrays.sort(structures, new Comparator<Structure>() {
  1005. @Override
  1006. public int compare(final Structure param1, final Structure param2) {
  1007. final int value1 = (param1.getAllDoors().length == 0) ? 0 : (param1.isLockable() ? 1 : 2);
  1008. final int value2 = (param2.getAllDoors().length == 0) ? 0 : (param2.isLockable() ? 1 : 2);
  1009. if (value1 == value2) {
  1010. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1011. }
  1012. if (value1 < value2) {
  1013. return 1 * upDown;
  1014. }
  1015. return -1 * upDown;
  1016. }
  1017. });
  1018. break;
  1019. }
  1020. case 4: {
  1021. Arrays.sort(structures, new Comparator<Structure>() {
  1022. @Override
  1023. public int compare(final Structure param1, final Structure param2) {
  1024. final int value1 = (param1.getVillage() != null) ? param1.getVillage().getId() : 0;
  1025. final int value2 = (param2.getVillage() != null) ? param2.getVillage().getId() : 0;
  1026. if (value1 == value2) {
  1027. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1028. }
  1029. if (value1 < value2) {
  1030. return 1 * upDown;
  1031. }
  1032. return -1 * upDown;
  1033. }
  1034. });
  1035. break;
  1036. }
  1037. case 5: {
  1038. Arrays.sort(structures, new Comparator<Structure>() {
  1039. @Override
  1040. public int compare(final Structure param1, final Structure param2) {
  1041. if (param1.isManaged() == param2.isManaged()) {
  1042. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1043. }
  1044. if (param1.isManaged()) {
  1045. return -1 * upDown;
  1046. }
  1047. return 1 * upDown;
  1048. }
  1049. });
  1050. break;
  1051. }
  1052. }
  1053. for (final Structure structure : structures) {
  1054. buf.append((structure.canHavePermissions() ? ("radio{group=\"sel\";id=\"" + structure.getWurmId() + "\";text=\"\"}") : "label{text=\"\"};") + "label{text=\"" + structure.getObjectName() + "\"};label{" + this.showBoolean(structure.isActualOwner(this.player.getWurmId())) + "};");
  1055. if (structure.getAllDoors().length == 0) {
  1056. buf.append("label{color=\"255,177,40\"text=\"No lockable doors.\"};");
  1057. }
  1058. else if (structure.isLockable()) {
  1059. buf.append("label{color=\"127,255,127\"text=\"true\"};");
  1060. }
  1061. else {
  1062. buf.append("label{color=\"255,127,127\"text=\"Not all doors have locks.\"};");
  1063. }
  1064. buf.append("label{" + this.showBoolean(structure.getVillage() != null) + "};");
  1065. buf.append("label{" + this.showBoolean(structure.isManaged()) + "};");
  1066. if (structure.isOwner(this.player.getWurmId())) {
  1067. buf.append("harray{label{text=\" \"};button{text=\"Demolish\";id=\"demolish" + structure.getWurmId() + "\";confirm=\"You are about to blow up the building '" + structure.getObjectName() + "'.\";question=\"Do you really want to do that?\"}label{text=\" \"}}");
  1068. }
  1069. else {
  1070. buf.append("label{text=\" \"}");
  1071. }
  1072. }
  1073. buf.append("}");
  1074. return buf.toString();
  1075. }
  1076.  
  1077. private String makeDoorList() {
  1078. final StringBuilder buf = new StringBuilder();
  1079. try {
  1080. final Structure structure = Structures.getStructure(this.target);
  1081. buf.append("text{text=\"List includes all doors in this building if you are the owner, or any doors in this building that have the 'Building may manage' Permission so long as you have the 'Manage Permissions' building permission.\"}");
  1082. buf.append("text{text=\"Note: Owner of the Door is the Owner of the bulding.\"}");
  1083. buf.append("text{text=\"\"}");
  1084. buf.append("text{type=\"bold\";text=\"List of Doors that you may manage in this building.\"}");
  1085. if (this.includeAll) {
  1086. buf.append(this.extraButton("Exclude Doors without locks", "exc"));
  1087. }
  1088. else {
  1089. buf.append(this.extraButton("Include Doors without locks", "inc"));
  1090. }
  1091. final Door[] doors = structure.getAllDoors(this.includeAll);
  1092. final int absSortBy = Math.abs(this.sortBy);
  1093. final int upDown = Integer.signum(this.sortBy);
  1094. buf.append("table{rows=\"1\";cols=\"7\";label{text=\"\"};" + this.colHeader("Name", 1, this.sortBy) + this.colHeader("Door Type", 2, this.sortBy) + this.colHeader("Level", 3, this.sortBy) + this.colHeader("Has Lock?", 4, this.sortBy) + this.colHeader("Locked?", 5, this.sortBy) + this.colHeader("Building Managed?", 6, this.sortBy));
  1095. Arrays.sort(doors, new Comparator<Door>() {
  1096. @Override
  1097. public int compare(final Door param1, final Door param2) {
  1098. if (param1.getFloorLevel() == param2.getFloorLevel()) {
  1099. final int comp = param1.getTypeName().compareTo(param2.getTypeName());
  1100. if (comp == 0) {
  1101. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1102. }
  1103. return comp * upDown;
  1104. }
  1105. else {
  1106. if (param1.getFloorLevel() < param2.getFloorLevel()) {
  1107. return 1 * upDown;
  1108. }
  1109. return -1 * upDown;
  1110. }
  1111. }
  1112. });
  1113. switch (absSortBy) {
  1114. case 1: {
  1115. Arrays.sort(doors, new Comparator<Door>() {
  1116. @Override
  1117. public int compare(final Door param1, final Door param2) {
  1118. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1119. }
  1120. });
  1121. break;
  1122. }
  1123. case 2: {
  1124. Arrays.sort(doors, new Comparator<Door>() {
  1125. @Override
  1126. public int compare(final Door param1, final Door param2) {
  1127. return param1.getTypeName().compareTo(param2.getTypeName()) * upDown;
  1128. }
  1129. });
  1130. break;
  1131. }
  1132. case 3: {
  1133. Arrays.sort(doors, new Comparator<Door>() {
  1134. @Override
  1135. public int compare(final Door param1, final Door param2) {
  1136. if (param1.getFloorLevel() == param2.getFloorLevel()) {
  1137. return 0;
  1138. }
  1139. if (param1.getFloorLevel() < param2.getFloorLevel()) {
  1140. return 1 * upDown;
  1141. }
  1142. return -1 * upDown;
  1143. }
  1144. });
  1145. break;
  1146. }
  1147. case 4: {
  1148. Arrays.sort(doors, new Comparator<Door>() {
  1149. @Override
  1150. public int compare(final Door param1, final Door param2) {
  1151. if (param1.hasLock() == param2.hasLock()) {
  1152. return 0;
  1153. }
  1154. if (param1.hasLock()) {
  1155. return -1 * upDown;
  1156. }
  1157. return 1 * upDown;
  1158. }
  1159. });
  1160. break;
  1161. }
  1162. case 5: {
  1163. Arrays.sort(doors, new Comparator<Door>() {
  1164. @Override
  1165. public int compare(final Door param1, final Door param2) {
  1166. if (param1.isLocked() == param2.isLocked()) {
  1167. return 0;
  1168. }
  1169. if (param1.isLocked()) {
  1170. return -1 * upDown;
  1171. }
  1172. return 1 * upDown;
  1173. }
  1174. });
  1175. break;
  1176. }
  1177. case 6: {
  1178. Arrays.sort(doors, new Comparator<Door>() {
  1179. @Override
  1180. public int compare(final Door param1, final Door param2) {
  1181. if (param1.isManaged() == param2.isManaged()) {
  1182. return 0;
  1183. }
  1184. if (param1.isManaged()) {
  1185. return -1 * upDown;
  1186. }
  1187. return 1 * upDown;
  1188. }
  1189. });
  1190. break;
  1191. }
  1192. }
  1193. for (final Door door : doors) {
  1194. buf.append((door.canHavePermissions() ? ("radio{group=\"sel\";id=\"" + door.getWurmId() + "\";text=\"\"}") : "label{text=\"\"}") + "label{text=\"" + door.getObjectName() + "\"};label{text=\"" + door.getTypeName() + "\"};label{text=\"" + door.getFloorLevel() + "\"};label{" + this.showBoolean(door.hasLock()) + "};label{" + this.showBoolean(door.isLocked()) + "};label{" + this.showBoolean(door.isManaged()) + "};");
  1195. }
  1196. buf.append("}");
  1197. }
  1198. catch (NoSuchStructureException nsse) {
  1199. ManageObjectList.logger.log(Level.WARNING, "Cannot find structure, it was here a minute ago! Id:" + this.target, nsse);
  1200. buf.append("text{text=\"Cannot find structure, it was here a minute ago!\"}");
  1201. }
  1202. return buf.toString();
  1203. }
  1204.  
  1205. private String makeGateList() {
  1206. final StringBuilder buf = new StringBuilder();
  1207. buf.append("text{text=\"As well as the list containing any gates that you are the owner of their lock it also includes any gate that have 'Settlement may manage' Permission set to your village so long as you have the 'Manage Allowed Objects' settlement permission.\"}");
  1208. final Village vill = this.getResponder().getCitizenVillage();
  1209. if (vill != null && vill.isMayor(this.player)) {
  1210. buf.append("text{text=\"As you are a mayor, the list will have all gates on your deed.\"}");
  1211. }
  1212. buf.append("text{text=\"\"}");
  1213. if (this.includeAll) {
  1214. buf.append(this.extraButton("Exclude Gates without locks", "exc"));
  1215. }
  1216. else {
  1217. buf.append(this.extraButton("Include Gates without locks", "inc"));
  1218. }
  1219. final int vid = (vill != null && vill.getRoleFor(this.getResponder()).mayManageAllowedObjects()) ? vill.getId() : -1;
  1220. final FenceGate[] gates = FenceGate.getManagedGatesFor(this.player, vid, this.includeAll);
  1221. final int absSortBy = Math.abs(this.sortBy);
  1222. final int upDown = Integer.signum(this.sortBy);
  1223. buf.append("table{rows=\"1\";cols=\"9\";label{text=\"\"};" + this.colHeader("Name", 1, this.sortBy) + this.colHeader("Gate Type", 2, this.sortBy) + this.colHeader("Level", 3, this.sortBy) + this.colHeader("Has Lock?", 4, this.sortBy) + this.colHeader("Locked?", 5, this.sortBy) + this.colHeader("Owner?", 6, this.sortBy) + this.colHeader("On Deed?", 7, this.sortBy) + this.colHeader("Deed Managed?", 8, this.sortBy));
  1224. Arrays.sort(gates, new Comparator<FenceGate>() {
  1225. @Override
  1226. public int compare(final FenceGate param1, final FenceGate param2) {
  1227. if (param1.getFloorLevel() == param2.getFloorLevel()) {
  1228. final int comp = param1.getTypeName().compareTo(param2.getTypeName());
  1229. if (comp == 0) {
  1230. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1231. }
  1232. return comp * upDown;
  1233. }
  1234. else {
  1235. if (param1.getFloorLevel() < param2.getFloorLevel()) {
  1236. return 1 * upDown;
  1237. }
  1238. return -1 * upDown;
  1239. }
  1240. }
  1241. });
  1242. switch (absSortBy) {
  1243. case 1: {
  1244. Arrays.sort(gates, new Comparator<FenceGate>() {
  1245. @Override
  1246. public int compare(final FenceGate param1, final FenceGate param2) {
  1247. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1248. }
  1249. });
  1250. break;
  1251. }
  1252. case 2: {
  1253. Arrays.sort(gates, new Comparator<FenceGate>() {
  1254. @Override
  1255. public int compare(final FenceGate param1, final FenceGate param2) {
  1256. return param1.getTypeName().compareTo(param2.getTypeName()) * upDown;
  1257. }
  1258. });
  1259. break;
  1260. }
  1261. case 3: {
  1262. Arrays.sort(gates, new Comparator<FenceGate>() {
  1263. @Override
  1264. public int compare(final FenceGate param1, final FenceGate param2) {
  1265. if (param1.getFloorLevel() == param2.getFloorLevel()) {
  1266. return 0;
  1267. }
  1268. if (param1.getFloorLevel() < param2.getFloorLevel()) {
  1269. return 1 * upDown;
  1270. }
  1271. return -1 * upDown;
  1272. }
  1273. });
  1274. break;
  1275. }
  1276. case 4: {
  1277. Arrays.sort(gates, new Comparator<FenceGate>() {
  1278. @Override
  1279. public int compare(final FenceGate param1, final FenceGate param2) {
  1280. if (param1.hasLock() == param2.hasLock()) {
  1281. return 0;
  1282. }
  1283. if (param1.hasLock()) {
  1284. return -1 * upDown;
  1285. }
  1286. return 1 * upDown;
  1287. }
  1288. });
  1289. break;
  1290. }
  1291. case 5: {
  1292. Arrays.sort(gates, new Comparator<FenceGate>() {
  1293. @Override
  1294. public int compare(final FenceGate param1, final FenceGate param2) {
  1295. if (param1.isLocked() == param2.isLocked()) {
  1296. return 0;
  1297. }
  1298. if (param1.isLocked()) {
  1299. return -1 * upDown;
  1300. }
  1301. return 1 * upDown;
  1302. }
  1303. });
  1304. break;
  1305. }
  1306. case 6: {
  1307. Arrays.sort(gates, new Comparator<FenceGate>() {
  1308. @Override
  1309. public int compare(final FenceGate param1, final FenceGate param2) {
  1310. if (param1.isActualOwner(ManageObjectList.this.player.getWurmId()) == param2.isActualOwner(ManageObjectList.this.player.getWurmId())) {
  1311. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1312. }
  1313. if (param1.isActualOwner(ManageObjectList.this.player.getWurmId())) {
  1314. return -1 * upDown;
  1315. }
  1316. return 1 * upDown;
  1317. }
  1318. });
  1319. break;
  1320. }
  1321. case 7: {
  1322. Arrays.sort(gates, new Comparator<FenceGate>() {
  1323. @Override
  1324. public int compare(final FenceGate param1, final FenceGate param2) {
  1325. final int value1 = (param1.getVillage() != null) ? param1.getVillage().getId() : 0;
  1326. final int value2 = (param2.getVillage() != null) ? param2.getVillage().getId() : 0;
  1327. if (value1 == value2) {
  1328. return 0;
  1329. }
  1330. if (value1 < value2) {
  1331. return -1 * upDown;
  1332. }
  1333. return 1 * upDown;
  1334. }
  1335. });
  1336. break;
  1337. }
  1338. case 8: {
  1339. Arrays.sort(gates, new Comparator<FenceGate>() {
  1340. @Override
  1341. public int compare(final FenceGate param1, final FenceGate param2) {
  1342. if (param1.isManaged() == param2.isManaged()) {
  1343. return 0;
  1344. }
  1345. if (param1.isManaged()) {
  1346. return -1 * upDown;
  1347. }
  1348. return 1 * upDown;
  1349. }
  1350. });
  1351. break;
  1352. }
  1353. }
  1354. for (final FenceGate gate : gates) {
  1355. buf.append((gate.canHavePermissions() ? ("radio{group=\"sel\";id=\"" + gate.getWurmId() + "\";text=\"\"}") : "label{text=\"\"}") + "label{text=\"" + gate.getObjectName() + "\"};label{text=\"" + gate.getTypeName() + "\"};label{text=\"" + gate.getFloorLevel() + "\"};label{" + this.showBoolean(gate.hasLock()) + "};label{" + this.showBoolean(gate.isLocked()) + "};label{" + this.showBoolean(gate.isActualOwner(this.player.getWurmId())) + "};label{" + this.showBoolean(gate.getVillage() != null) + "};label{" + this.showBoolean(gate.isManaged()) + "};");
  1356. }
  1357. buf.append("}");
  1358. return buf.toString();
  1359. }
  1360.  
  1361. private String makeLandVehicleList() {
  1362. final StringBuilder buf = new StringBuilder();
  1363. buf.append("text{text=\"List contains the Small Carts, Large Carts, Wagons and Carriers that you can manage.\"}");
  1364. buf.append("text{text=\"\"}");
  1365. buf.append("text{type=\"bold\";text=\"List of Small Carts, Large Carts, Wagons and Carriers that you may manage.\"}");
  1366. if (this.includeAll) {
  1367. buf.append(this.extraButton("Exclude Vehicles without locks", "exc"));
  1368. }
  1369. else {
  1370. buf.append(this.extraButton("Include Vehicles without locks", "inc"));
  1371. }
  1372. final Item[] items = Items.getManagedCartsFor(this.player, this.includeAll);
  1373. final int absSortBy = Math.abs(this.sortBy);
  1374. final int upDown = Integer.signum(this.sortBy);
  1375. buf.append("table{rows=\"1\";cols=\"6\";label{text=\"\"};" + this.colHeader("Name", 1, this.sortBy) + this.colHeader("Type", 2, this.sortBy) + this.colHeader("Owner?", 3, this.sortBy) + this.colHeader("Locked?", 4, this.sortBy) + "label{type=\"bold\";text=\"\"};");
  1376. switch (absSortBy) {
  1377. case 1: {
  1378. Arrays.sort(items, new Comparator<Item>() {
  1379. @Override
  1380. public int compare(final Item param1, final Item param2) {
  1381. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1382. }
  1383. });
  1384. break;
  1385. }
  1386. case 2: {
  1387. Arrays.sort(items, new Comparator<Item>() {
  1388. @Override
  1389. public int compare(final Item param1, final Item param2) {
  1390. return param1.getTypeName().compareTo(param2.getTypeName()) * upDown;
  1391. }
  1392. });
  1393. break;
  1394. }
  1395. case 3: {
  1396. Arrays.sort(items, new Comparator<Item>() {
  1397. @Override
  1398. public int compare(final Item param1, final Item param2) {
  1399. if (param1.isActualOwner(ManageObjectList.this.player.getWurmId()) == param2.isActualOwner(ManageObjectList.this.player.getWurmId())) {
  1400. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1401. }
  1402. if (param1.isActualOwner(ManageObjectList.this.player.getWurmId())) {
  1403. return -1 * upDown;
  1404. }
  1405. return 1 * upDown;
  1406. }
  1407. });
  1408. break;
  1409. }
  1410. case 4: {
  1411. Arrays.sort(items, new Comparator<Item>() {
  1412. @Override
  1413. public int compare(final Item param1, final Item param2) {
  1414. if (param1.isLocked() == param2.isLocked()) {
  1415. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1416. }
  1417. if (param1.isLocked()) {
  1418. return -1 * upDown;
  1419. }
  1420. return 1 * upDown;
  1421. }
  1422. });
  1423. break;
  1424. }
  1425. }
  1426. for (final Item item : items) {
  1427. buf.append((item.canHavePermissions() ? ("radio{group=\"sel\";id=\"" + item.getWurmId() + "\";text=\"\"}") : "label{text=\"\"}") + "label{text=\"" + item.getObjectName() + "\"};" + addRariryColour(item, item.getTypeName()) + "label{" + this.showBoolean(item.isActualOwner(this.player.getWurmId())) + "};label{" + this.showBoolean(item.isLocked()) + "};label{text=\"\"};");
  1428. }
  1429. buf.append("}");
  1430. return buf.toString();
  1431. }
  1432.  
  1433. private String makeMineDoorList() {
  1434. final Village vill = this.getResponder().getCitizenVillage();
  1435. final StringBuilder buf = new StringBuilder();
  1436. buf.append("text{text=\"As well as the list containing any mine doors that you are the owner of it also includes any mine doors that have 'Settlement may manage' Permission set to your village so long as you have the 'Manage Allowed Objects' settlement permission.\"}");
  1437. if (vill != null && vill.isMayor(this.player)) {
  1438. buf.append("text{text=\"As you are a mayor, the list will have all minedoors on your deed.\"}");
  1439. }
  1440. buf.append("text{text=\"\"}");
  1441. final int vid = (vill != null && vill.getRoleFor(this.getResponder()).mayManageAllowedObjects()) ? vill.getId() : -1;
  1442. final MineDoorPermission[] mineDoors = MineDoorPermission.getManagedMineDoorsFor(this.player, vid, this.includeAll);
  1443. final int absSortBy = Math.abs(this.sortBy);
  1444. final int upDown = Integer.signum(this.sortBy);
  1445. buf.append("table{rows=\"1\";cols=\"7\";label{text=\"\"};" + this.colHeader("Name", 1, this.sortBy) + this.colHeader("Door Type", 2, this.sortBy) + this.colHeader("Owner?", 3, this.sortBy) + this.colHeader("On Deed?", 4, this.sortBy) + this.colHeader("Deed Managed?", 5, this.sortBy) + "label{type=\"bold\";text=\"\"};");
  1446. switch (absSortBy) {
  1447. case 1: {
  1448. Arrays.sort(mineDoors, new Comparator<MineDoorPermission>() {
  1449. @Override
  1450. public int compare(final MineDoorPermission param1, final MineDoorPermission param2) {
  1451. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1452. }
  1453. });
  1454. break;
  1455. }
  1456. case 2: {
  1457. Arrays.sort(mineDoors, new Comparator<MineDoorPermission>() {
  1458. @Override
  1459. public int compare(final MineDoorPermission param1, final MineDoorPermission param2) {
  1460. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1461. }
  1462. });
  1463. break;
  1464. }
  1465. case 3: {
  1466. Arrays.sort(mineDoors, new Comparator<MineDoorPermission>() {
  1467. @Override
  1468. public int compare(final MineDoorPermission param1, final MineDoorPermission param2) {
  1469. if (param1.isActualOwner(ManageObjectList.this.player.getWurmId()) == param2.isActualOwner(ManageObjectList.this.player.getWurmId())) {
  1470. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1471. }
  1472. if (param1.isActualOwner(ManageObjectList.this.player.getWurmId())) {
  1473. return -1 * upDown;
  1474. }
  1475. return 1 * upDown;
  1476. }
  1477. });
  1478. break;
  1479. }
  1480. case 4: {
  1481. Arrays.sort(mineDoors, new Comparator<MineDoorPermission>() {
  1482. @Override
  1483. public int compare(final MineDoorPermission param1, final MineDoorPermission param2) {
  1484. final int value1 = (param1.getVillage() != null) ? param1.getVillage().getId() : 0;
  1485. final int value2 = (param2.getVillage() != null) ? param2.getVillage().getId() : 0;
  1486. if (value1 == value2) {
  1487. return 0;
  1488. }
  1489. if (value1 < value2) {
  1490. return -1 * upDown;
  1491. }
  1492. return 1 * upDown;
  1493. }
  1494. });
  1495. break;
  1496. }
  1497. case 5: {
  1498. Arrays.sort(mineDoors, new Comparator<MineDoorPermission>() {
  1499. @Override
  1500. public int compare(final MineDoorPermission param1, final MineDoorPermission param2) {
  1501. if (param1.isManaged() == param2.isManaged()) {
  1502. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1503. }
  1504. if (param1.isManaged()) {
  1505. return -1 * upDown;
  1506. }
  1507. return 1 * upDown;
  1508. }
  1509. });
  1510. break;
  1511. }
  1512. }
  1513. for (final MineDoorPermission mineDoor : mineDoors) {
  1514. buf.append((mineDoor.canHavePermissions() ? ("radio{group=\"sel\";id=\"" + mineDoor.getWurmId() + "\";text=\"\"}") : "label{text=\"\"}") + "label{text=\"" + mineDoor.getObjectName() + "\"};label{text=\"" + mineDoor.getTypeName() + "\"};label{" + this.showBoolean(mineDoor.isActualOwner(this.player.getWurmId())) + "};label{" + this.showBoolean(mineDoor.getVillage() != null) + "};label{" + this.showBoolean(mineDoor.isManaged()) + "};label{text=\" \"}");
  1515. }
  1516. buf.append("}");
  1517. return buf.toString();
  1518. }
  1519.  
  1520. private String makeShipList() {
  1521. final StringBuilder buf = new StringBuilder();
  1522. buf.append("text{text=\"List contains the Ships that you can manage.\"}");
  1523. buf.append("text{text=\"\"}");
  1524. buf.append("text{type=\"bold\";text=\"Will have List of Ships that you may manage.\"}");
  1525. if (this.includeAll) {
  1526. buf.append(this.extraButton("Exclude ships without locks", "exc"));
  1527. }
  1528. else {
  1529. buf.append(this.extraButton("Include ships without locks", "inc"));
  1530. }
  1531. final Item[] items = Items.getManagedShipsFor(this.player, this.includeAll);
  1532. final int absSortBy = Math.abs(this.sortBy);
  1533. final int upDown = Integer.signum(this.sortBy);
  1534. buf.append("table{rows=\"1\";cols=\"6\";label{text=\"\"};" + this.colHeader("Name", 1, this.sortBy) + this.colHeader("Type", 2, this.sortBy) + this.colHeader("Owner?", 3, this.sortBy) + this.colHeader("Locked?", 4, this.sortBy) + "label{type=\"bold\";text=\"\"};");
  1535. switch (absSortBy) {
  1536. case 1: {
  1537. Arrays.sort(items, new Comparator<Item>() {
  1538. @Override
  1539. public int compare(final Item param1, final Item param2) {
  1540. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1541. }
  1542. });
  1543. break;
  1544. }
  1545. case 2: {
  1546. Arrays.sort(items, new Comparator<Item>() {
  1547. @Override
  1548. public int compare(final Item param1, final Item param2) {
  1549. return param1.getTypeName().compareTo(param2.getTypeName()) * upDown;
  1550. }
  1551. });
  1552. break;
  1553. }
  1554. case 3: {
  1555. Arrays.sort(items, new Comparator<Item>() {
  1556. @Override
  1557. public int compare(final Item param1, final Item param2) {
  1558. if (param1.isActualOwner(ManageObjectList.this.player.getWurmId()) == param2.isActualOwner(ManageObjectList.this.player.getWurmId())) {
  1559. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1560. }
  1561. if (param1.isActualOwner(ManageObjectList.this.player.getWurmId())) {
  1562. return -1 * upDown;
  1563. }
  1564. return 1 * upDown;
  1565. }
  1566. });
  1567. break;
  1568. }
  1569. case 4: {
  1570. Arrays.sort(items, new Comparator<Item>() {
  1571. @Override
  1572. public int compare(final Item param1, final Item param2) {
  1573. if (param1.isLocked() == param2.isLocked()) {
  1574. return param1.getObjectName().compareTo(param2.getObjectName()) * upDown;
  1575. }
  1576. if (param1.isLocked()) {
  1577. return -1 * upDown;
  1578. }
  1579. return 1 * upDown;
  1580. }
  1581. });
  1582. break;
  1583. }
  1584. }
  1585. for (final Item item : items) {
  1586. buf.append((item.canHavePermissions() ? ("radio{group=\"sel\";id=\"" + item.getWurmId() + "\";text=\"\"}") : "label{text=\"\"}") + "label{text=\"" + item.getObjectName() + "\"};" + addRariryColour(item, item.getTypeName()) + "label{" + this.showBoolean(item.isActualOwner(this.player.getWurmId())) + "};label{" + this.showBoolean(item.isLocked()) + "};label{text=\"\"};");
  1587. }
  1588. buf.append("}");
  1589. return buf.toString();
  1590. }
  1591.  
  1592. private String makeWagonerList() {
  1593. final StringBuilder buf = new StringBuilder();
  1594. final int vid = -1;
  1595. final Creature[] animals = Creatures.getManagedWagonersFor(this.player, -1);
  1596. final int absSortBy = Math.abs(this.sortBy);
  1597. final int upDown = Integer.signum(this.sortBy);
  1598. buf.append("table{rows=\"1\";cols=\"6\";label{text=\"\"};" + this.colHeader("Name", 1, this.sortBy) + this.colHeader("State", 2, this.sortBy) + this.colHeader("Queue", 3, this.sortBy) + "label{text=\"\"};label{text=\"\"};");
  1599. switch (absSortBy) {
  1600. case 1: {
  1601. Arrays.sort(animals, new Comparator<Creature>() {
  1602. @Override
  1603. public int compare(final Creature param1, final Creature param2) {
  1604. return param1.getName().compareTo(param2.getName()) * upDown;
  1605. }
  1606. });
  1607. break;
  1608. }
  1609. case 2: {
  1610. Arrays.sort(animals, new Comparator<Creature>() {
  1611. @Override
  1612. public int compare(final Creature param1, final Creature param2) {
  1613. return param1.getWagoner().getStateName().compareTo(param2.getWagoner().getStateName()) * upDown;
  1614. }
  1615. });
  1616. break;
  1617. }
  1618. case 3: {
  1619. Arrays.sort(animals, new Comparator<Creature>() {
  1620. @Override
  1621. public int compare(final Creature param1, final Creature param2) {
  1622. final int value1 = param1.getWagoner().getQueueLength();
  1623. final int value2 = param2.getWagoner().getQueueLength();
  1624. if (value1 == value2) {
  1625. return 0;
  1626. }
  1627. if (value1 < value2) {
  1628. return -1 * upDown;
  1629. }
  1630. return 1 * upDown;
  1631. }
  1632. });
  1633. break;
  1634. }
  1635. }
  1636. for (final Creature animal : animals) {
  1637. final Wagoner wagoner = animal.getWagoner();
  1638. final int queueLength = Delivery.getQueueLength(wagoner.getWurmId());
  1639. buf.append((animal.canHavePermissions() ? ("radio{group=\"sel\";id=\"" + animal.getWurmId() + "\";text=\"\"}") : "label{text=\"\"};") + "label{text=\"" + animal.getName() + "\"};label{text=\"" + wagoner.getStateName() + "\"};" + ((queueLength == 0) ? "label{text=\"empty\"};" : ("label{text=\"" + queueLength + "\"};")) + "label{text=\" \"};");
  1640. if (animal.mayManage(this.getResponder())) {
  1641. if (wagoner.getVillageId() == -1) {
  1642. buf.append("label{\"Dismissing.\"};");
  1643. }
  1644. else {
  1645. buf.append(this.dismissButton(animal));
  1646. }
  1647. }
  1648. else {
  1649. buf.append("label{\"\"};");
  1650. }
  1651. }
  1652. buf.append("}");
  1653. return buf.toString();
  1654. }
  1655.  
  1656. private String dismissButton(final Creature animal) {
  1657. final StringBuilder buf = new StringBuilder();
  1658. buf.append("harray{button{text=\"Dismiss\";id=\"dismiss" + animal.getWurmId() + "\";}label{text=\" \"}}");
  1659. return buf.toString();
  1660. }
  1661.  
  1662. private String extraButton(final String txt, final String id) {
  1663. final StringBuilder buf = new StringBuilder();
  1664. buf.append("harray{label{text=\"Filter list:\"};button{text=\"" + txt + "\";id=\"" + id + "\"}};");
  1665. return buf.toString();
  1666. }
  1667.  
  1668. public static String addRariryColour(final Item item, final String name) {
  1669. final StringBuilder buf = new StringBuilder();
  1670. if (item.getRarity() == 1) {
  1671. buf.append("label{color=\"66,153,225\";text=\"rare " + name + "\"};");
  1672. }
  1673. else if (item.getRarity() == 2) {
  1674. buf.append("label{color=\"0,255,255\";text=\"supreme " + name + "\"};");
  1675. }
  1676. else if (item.getRarity() == 3) {
  1677. buf.append("label{color=\"255,0,255\";text=\"fantastic " + name + "\"};");
  1678. }
  1679. else {
  1680. buf.append("label{text=\"" + name + "\"};");
  1681. }
  1682. return buf.toString();
  1683. }
  1684.  
  1685. private String showBoolean(final boolean flag) {
  1686. final StringBuilder buf = new StringBuilder();
  1687. if (flag) {
  1688. buf.append("color=\"127,255,127\"");
  1689. }
  1690. else {
  1691. buf.append("color=\"255,127,127\"");
  1692. }
  1693. buf.append("text=\"" + flag + "\"");
  1694. return buf.toString();
  1695. }
  1696.  
  1697. static {
  1698. logger = Logger.getLogger(ManageObjectList.class.getName());
  1699. }
  1700.  
  1701. public enum Type
  1702. {
  1703. ANIMAL0("Animal", (Permissions.IPermission[])AnimalSettings.Animal0Permissions.values()),
  1704. ANIMAL1("Animal", (Permissions.IPermission[])AnimalSettings.Animal1Permissions.values()),
  1705. ANIMAL2("Animal", (Permissions.IPermission[])AnimalSettings.Animal2Permissions.values()),
  1706. WAGONER("Wagoner", (Permissions.IPermission[])AnimalSettings.WagonerPermissions.values()),
  1707. DELIVERY("Wagoner", (Permissions.IPermission[])AnimalSettings.WagonerPermissions.values()),
  1708. BUILDING("Building", (Permissions.IPermission[])StructureSettings.StructurePermissions.values()),
  1709. LARGE_CART("Large Cart", (Permissions.IPermission[])ItemSettings.VehiclePermissions.values()),
  1710. DOOR("Door", (Permissions.IPermission[])DoorSettings.DoorPermissions.values()),
  1711. GATE("Gate", (Permissions.IPermission[])DoorSettings.GatePermissions.values()),
  1712. MINEDOOR("Minedoor", (Permissions.IPermission[])MineDoorSettings.MinedoorPermissions.values()),
  1713. SHIP("Ship", (Permissions.IPermission[])ItemSettings.VehiclePermissions.values()),
  1714. WAGON("Wagon", (Permissions.IPermission[])ItemSettings.WagonPermissions.values()),
  1715. SHIP_CARRIER("Ship Carrier", (Permissions.IPermission[])ItemSettings.ShipTransporterPermissions.values()),
  1716. CREATURE_CARRIER("Creature Carrier", (Permissions.IPermission[])ItemSettings.CreatureTransporterPermissions.values()),
  1717. SMALL_CART("Small Cart", (Permissions.IPermission[])ItemSettings.SmallCartPermissions.values()),
  1718. ITEM("Item", (Permissions.IPermission[])ItemSettings.ItemPermissions.values()),
  1719. BED("Bed", (Permissions.IPermission[])ItemSettings.BedPermissions.values()),
  1720. MESSAGE_BOARD("Village Message Board", (Permissions.IPermission[])ItemSettings.MessageBoardPermissions.values()),
  1721. CORPSE("Corpse", (Permissions.IPermission[])ItemSettings.CorpsePermissions.values()),
  1722. SEARCH("Search", (Permissions.IPermission[])null),
  1723. REPLY("Reply", (Permissions.IPermission[])null);
  1724.  
  1725. private final String title;
  1726. private final Permissions.IPermission[] enumValues;
  1727.  
  1728. private Type(final String aTitle, final Permissions.IPermission[] values) {
  1729. this.title = aTitle;
  1730. this.enumValues = values;
  1731. }
  1732.  
  1733. public String getTitle() {
  1734. return this.title;
  1735. }
  1736.  
  1737. public Permissions.IPermission[] getEnumValues() {
  1738. return this.enumValues;
  1739. }
  1740. }
  1741. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement