Crossfire JXClient, Trunk
Pickup.java
Go to the documentation of this file.
1 /*
2  * This file is part of JXClient, the Fullscreen Java Crossfire Client.
3  *
4  * JXClient is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * JXClient is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with JXClient; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  * Copyright (C) 2005-2008 Yann Chachkoff
19  * Copyright (C) 2006-2017,2019-2023 Andreas Kirschbaum
20  * Copyright (C) 2010-2012,2014-2018,2020-2023 Nicolas Weeger
21  */
22 
23 package com.realtime.crossfire.jxclient.settings.options;
24 
26 import java.util.Collection;
27 import java.util.LinkedList;
28 import org.jetbrains.annotations.NotNull;
29 
34 public class Pickup {
35 
39  public static final long PU_NOTHING = 0;
40 
44  public static final long PU_EVERYTHING = 4;
45 
49  private static final long PU_RATIO = 0x0000000FL;
50 
54  private static final long PU_DEBUG = 0x10000000L;
55 
59  public static final long PU_NEW_MODE = 0x80000000L;
60 
64  @NotNull
65  private final Collection<PickupOption> pickupOptions = new LinkedList<>();
66 
70  @NotNull
71  private final CommandQueue commandQueue;
72 
76  private long pickupMode = PU_NOTHING;
77 
84  public Pickup(@NotNull final CommandQueue commandQueue, @NotNull final OptionManager optionManager) throws OptionException {
85  this.commandQueue = commandQueue;
86  // optionManager.addOption("pickup_ratio0", "Pickup mode: weight/value off", newPickupOption(PU_RATIO, 0));
87  // optionManager.addOption("pickup_ratio5", "Pickup mode: weight/value >= 5", newPickupOption(PU_RATIO, 1));
88  // optionManager.addOption("pickup_ratio10", "Pickup mode: weight/value >= 10", newPickupOption(PU_RATIO, 2));
89  // optionManager.addOption("pickup_ratio15", "Pickup mode: weight/value >= 15", newPickupOption(PU_RATIO, 3));
90  // optionManager.addOption("pickup_ratio20", "Pickup mode: weight/value >= 20", newPickupOption(PU_RATIO, 4));
91  // optionManager.addOption("pickup_ratio25", "Pickup mode: weight/value >= 25", newPickupOption(PU_RATIO, 5));
92  // optionManager.addOption("pickup_ratio30", "Pickup mode: weight/value >= 30", newPickupOption(PU_RATIO, 6));
93  // optionManager.addOption("pickup_ratio35", "Pickup mode: weight/value >= 35", newPickupOption(PU_RATIO, 7));
94  // optionManager.addOption("pickup_ratio40", "Pickup mode: weight/value >= 40", newPickupOption(PU_RATIO, 8));
95  // optionManager.addOption("pickup_ratio45", "Pickup mode: weight/value >= 45", newPickupOption(PU_RATIO, 9));
96  // optionManager.addOption("pickup_ratio50", "Pickup mode: weight/value >= 50", newPickupOption(PU_RATIO, 10));
97  // optionManager.addOption("pickup_ratio55", "Pickup mode: weight/value >= 55", newPickupOption(PU_RATIO, 11));
98  // optionManager.addOption("pickup_ratio60", "Pickup mode: weight/value >= 60", newPickupOption(PU_RATIO, 12));
99  // optionManager.addOption("pickup_ratio65", "Pickup mode: weight/value >= 65", newPickupOption(PU_RATIO, 13));
100  // optionManager.addOption("pickup_ratio70", "Pickup mode: weight/value >= 70", newPickupOption(PU_RATIO, 14));
101  // optionManager.addOption("pickup_ratio75", "Pickup mode: weight/value >= 75", newPickupOption(PU_RATIO, 15));
102  optionManager.addOption("pickup_nothing", "Pickup mode: nothing.", newPickupOptionOldMode(PU_NOTHING, "<html>Picks up no items."));
103  optionManager.addOption("pickup_everything", "Pickup mode: everything.", newPickupOptionOldMode(PU_EVERYTHING, "<html>Picks up all items."));
104  optionManager.addOption("pickup_food", "Pickup mode: food.", newPickupOptionNewMode(0x00000010L, "<html>Picks up food items.<br>Flesh items are not included."));
105  optionManager.addOption("pickup_drink", "Pickup mode: drinks.", newPickupOptionNewMode(0x00000020L, "<html>Picks up drinkable items."));
106  optionManager.addOption("pickup_valuables", "Pickup mode: valuables.", newPickupOptionNewMode(0x00000040L, "<html>Picks up money and gems."));
107  optionManager.addOption("pickup_bow", "Pickup mode: bows.", newPickupOptionNewMode(0x00000080L, "<html>Picks up bows and crossbows."));
108  optionManager.addOption("pickup_arrow", "Pickup mode: arrows.", newPickupOptionNewMode(0x00000100L, "<html>Picks up arrows and bolts."));
109  optionManager.addOption("pickup_helmet", "Pickup mode: helmets.", newPickupOptionNewMode(0x00000200L, "<html>Picks up helmets."));
110  optionManager.addOption("pickup_shield", "Pickup mode: shields.", newPickupOptionNewMode(0x00000400L, "<html>Picks up shields."));
111  optionManager.addOption("pickup_armour", "Pickup mode: armors.", newPickupOptionNewMode(0x00000800L, "<html>Picks up armors."));
112  optionManager.addOption("pickup_boots", "Pickup mode: boots.", newPickupOptionNewMode(0x00001000L, "<html>Picks up boots."));
113  optionManager.addOption("pickup_gloves", "Pickup mode: gloves.", newPickupOptionNewMode(0x00002000L, "<html>Picks up gloves."));
114  optionManager.addOption("pickup_cloak", "Pickup mode: cloaks.", newPickupOptionNewMode(0x00004000L, "<html>Picks up cloaks."));
115  optionManager.addOption("pickup_key", "Pickup mode: keys.", newPickupOptionNewMode(0x00008000L, "<html>Picks up keys."));
116  optionManager.addOption("pickup_missile_weapon", "Pickup mode: missile weapons.", newPickupOptionNewMode(0x00010000L, "<html>Picks up missile weapons."));
117  optionManager.addOption("pickup_melee_weapon", "Pickup mode: melee weapons.", newPickupOptionNewMode(0x00020000L, "<html>Picks up melee weapons."));
118  optionManager.addOption("pickup_magical", "Pickup mode: magical items.", newPickupOptionNewMode(0x00040000L, "<html>Picks up magical items."));
119  optionManager.addOption("pickup_potion", "Pickup mode: potions.", newPickupOptionNewMode(0x00080000L, "<html>Picks up potions."));
120  optionManager.addOption("pickup_spellbook", "Pickup mode: spellbooks.", newPickupOptionNewMode(0x00100000L, "<html>Picks up spellbooks and prayer books."));
121  optionManager.addOption("pickup_skillscroll", "Pickup mode: skillscrolls.", newPickupOptionNewMode(0x00200000L, "<html>Picks up skillscrolls."));
122  optionManager.addOption("pickup_readables", "Pickup mode: readables.", newPickupOptionNewMode(0x00400000L, "<html>Picks up readables."));
123  optionManager.addOption("pickup_magic_device", "Pickup mode: magic devices.", newPickupOptionNewMode(0x00800000L, "<html>Picks up magic devices."));
124  optionManager.addOption("pickup_not_cursed", "Pickup mode: not cursed items.", newPickupOptionNewMode(0x01000000L, "<html>Ignores cursed items."));
125  optionManager.addOption("pickup_jewels", "Pickup mode: jewels.", newPickupOptionNewMode(0x02000000L, "<html>Picks up rings and amulets."));
126  optionManager.addOption("pickup_flesh", "Pickup mode: flesh.", newPickupOptionNewMode(0x04000000L, "<html>Picks up flesh items."));
127  optionManager.addOption("pickup_containers", "Pickup mode: container.", newPickupOptionNewMode(0x08000000L, "<html>Picks up containers."));
128  optionManager.addOption("pickup_inhibit", "Pickup mode: inhibit pickup.", newPickupOptionNewMode(0x20000000L, "<html>Disables pickup mode."));
129  optionManager.addOption("pickup_stop", "Pickup mode: stop before pickup.", newPickupOptionNewMode(0x40000000L, "<html>Stops running when picking up items."));
130  }
131 
138  @NotNull
139  private PickupOption newPickupOptionOldMode(final long mode, @NotNull final String tooltipText) {
140  final PickupOption pickupOption = new PickupOptionOldMode(this, mode, tooltipText);
141  pickupOptions.add(pickupOption);
142  return pickupOption;
143  }
144 
151  @NotNull
152  private PickupOption newPickupOptionNewMode(final long option, @NotNull final String tooltipText) {
153  final PickupOption pickupOption = new PickupOptionNewMode(this, option, tooltipText);
154  pickupOptions.add(pickupOption);
155  return pickupOption;
156  }
157 
164  public void updatePickupMode(final long pickupMode, final boolean sendToServer) {
165  long effectivePickupMode = pickupMode&0xFFFFFFFFL;
166  if ((effectivePickupMode&PU_NEW_MODE) != 0) {
167  effectivePickupMode &= ~(PU_DEBUG|PU_RATIO);
168  }
169  if (effectivePickupMode == PU_NEW_MODE) {
170  effectivePickupMode = PU_NOTHING;
171  }
172  if (this.pickupMode == effectivePickupMode) {
173  return;
174  }
175  this.pickupMode = effectivePickupMode;
176  if (sendToServer) {
177  commandQueue.sendNcom(true, 1, "pickup "+effectivePickupMode);
178  }
179  for (PickupOption pickupOption : pickupOptions) {
180  pickupOption.setPickupMode(effectivePickupMode);
181  }
182  }
183 
188  public long getPickupMode() {
189  return pickupMode;
190  }
191 
196  public void setPickupModeOldMode(final long pickupMode) {
198  }
199 
205  public void setPickupModeNewMode(final long pickupMode, final boolean set) {
206  long newPickupMode = this.pickupMode;
207  //noinspection IfMayBeConditional
208  if (set) {
209  if ((newPickupMode&PU_NEW_MODE) == 0) {
210  newPickupMode = PU_NEW_MODE;
211  }
212  newPickupMode |= pickupMode;
213  } else {
214  if ((newPickupMode&PU_NEW_MODE) != 0) {
215  newPickupMode &= ~pickupMode;
216  }
217  }
218  updatePickupMode(newPickupMode, true);
219  }
220 
221 }
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.settings.options.PickupOptionNewMode
Definition: PickupOptionNewMode.java:32
com.realtime.crossfire.jxclient.settings.options.PickupOptionOldMode
Definition: PickupOptionOldMode.java:32
com.realtime.crossfire.jxclient.settings.options.Pickup.PU_EVERYTHING
static final long PU_EVERYTHING
Definition: Pickup.java:44
com.realtime.crossfire.jxclient.settings.options.Pickup.PU_DEBUG
static final long PU_DEBUG
Definition: Pickup.java:54
com.realtime.crossfire.jxclient.settings.options.Pickup.setPickupModeOldMode
void setPickupModeOldMode(final long pickupMode)
Definition: Pickup.java:196
com.realtime.crossfire.jxclient.settings.options.OptionException
Definition: OptionException.java:31
com.realtime.crossfire.jxclient.settings.options.Pickup.getPickupMode
long getPickupMode()
Definition: Pickup.java:188
com.realtime.crossfire.jxclient.settings.options.Pickup.updatePickupMode
void updatePickupMode(final long pickupMode, final boolean sendToServer)
Definition: Pickup.java:164
com.realtime.crossfire.jxclient.settings.options.Pickup.setPickupModeNewMode
void setPickupModeNewMode(final long pickupMode, final boolean set)
Definition: Pickup.java:205
com.realtime.crossfire.jxclient.settings.options.Pickup.PU_NEW_MODE
static final long PU_NEW_MODE
Definition: Pickup.java:59
com.realtime.crossfire.jxclient.settings.options.Pickup.commandQueue
final CommandQueue commandQueue
Definition: Pickup.java:71
com.realtime.crossfire.jxclient.queue.CommandQueue
Definition: CommandQueue.java:38
com.realtime.crossfire.jxclient.settings.options.Pickup.Pickup
Pickup(@NotNull final CommandQueue commandQueue, @NotNull final OptionManager optionManager)
Definition: Pickup.java:84
com.realtime.crossfire.jxclient.settings.options.Pickup.pickupMode
long pickupMode
Definition: Pickup.java:76
com.realtime.crossfire.jxclient.settings.options.Pickup
Definition: Pickup.java:34
com.realtime.crossfire.jxclient.queue
Definition: CommandQueue.java:23
com.realtime.crossfire.jxclient.settings.options.Pickup.newPickupOptionNewMode
PickupOption newPickupOptionNewMode(final long option, @NotNull final String tooltipText)
Definition: Pickup.java:152
com.realtime.crossfire
com.realtime
com.realtime.crossfire.jxclient.queue.CommandQueue.sendNcom
void sendNcom(final boolean mustSend, @NotNull final String command)
Definition: CommandQueue.java:184
com
com.realtime.crossfire.jxclient.settings.options.OptionManager
Definition: OptionManager.java:36
com.realtime.crossfire.jxclient.settings.options.Pickup.newPickupOptionOldMode
PickupOption newPickupOptionOldMode(final long mode, @NotNull final String tooltipText)
Definition: Pickup.java:139
com.realtime.crossfire.jxclient.settings.options.Pickup.pickupOptions
final Collection< PickupOption > pickupOptions
Definition: Pickup.java:65
com.realtime.crossfire.jxclient.settings.options.Pickup.PU_NOTHING
static final long PU_NOTHING
Definition: Pickup.java:39
com.realtime.crossfire.jxclient.settings.options.PickupOption
Definition: PickupOption.java:8
com.realtime.crossfire.jxclient.settings.options.Pickup.PU_RATIO
static final long PU_RATIO
Definition: Pickup.java:49