Files
2009scape/Server/src/main/content/data/LightSource.java
T
Ceikry a100affda2 Repository reorganisation
Unified kotlin and java into just src/main
Unified the rs09 and core packages
Took all content out of the core package, and placed it into the new content package
Reorganised all source code relating to content to be easier to find and explore
2023-01-26 13:59:28 +00:00

202 lines
4.8 KiB
Java

package content.data;
import core.game.node.entity.player.Player;
import core.game.node.item.Item;
import org.rs09.consts.Components;
import static org.rs09.consts.Items.*;
/**
* Represents a light source.
* @author Vexia
* @author Emperor
*/
public enum LightSource {
CANDLE(1, new Item(CANDLE_36, 1), new Item(LIT_CANDLE_33, 1), true, Components.DARKNESS_MEDIUM_98),
BLACK_CANDLE(1, new Item(BLACK_CANDLE_38, 1), new Item(LIT_BLACK_CANDLE_32, 1), true, Components.DARKNESS_MEDIUM_98),
TORCH(1, new Item(UNLIT_TORCH_596, 1), new Item(LIT_TORCH_594, 1), true, Components.DARKNESS_MEDIUM_98),
CANDLE_LANTERN(4, new Item(CANDLE_LANTERN_4527, 1), new Item(CANDLE_LANTERN_4531, 1), false, Components.DARKNESS_MEDIUM_98),
OIL_LAMP(12, new Item(OIL_LAMP_4522, 1), new Item(OIL_LAMP_4524, 1), true, Components.DARKNESS_LIGHT_97),
OIL_LANTERN(26, new Item(OIL_LANTERN_4535, 1), new Item(OIL_LANTERN_4539, 1), false, Components.DARKNESS_LIGHT_97),
BULLSEYE_LANTERN(49, new Item(BULLSEYE_LANTERN_4548, 1), new Item(BULLSEYE_LANTERN_4550, 1), false, -1),
SAPPHIRE_LANTERN(49, new Item(SAPPHIRE_LANTERN_4701, 1), new Item(SAPPHIRE_LANTERN_4702, 1), false, -1),
EMERALD_LANTERN(49, new Item(EMERALD_LANTERN_9064, 1), new Item(EMERALD_LANTERN_9065, 1), false, -1),
MINING_HELMET(65, new Item(MINING_HELMET_5014, 1), new Item(MINING_HELMET_5013, 1), false, Components.DARKNESS_LIGHT_97);
/**
* Represents the level required.
*/
private int level;
/**
* Represents the raw item.
*/
private Item raw;
/**
* Represents the product.
*/
private Item product;
/**
* If the light source is open (eg. candles, torches, ...).
*/
private final boolean open;
/**
* The interface id.
*/
private final int interfaceId;
/**
* Constructs a new {@code LightSource} {@code Object}.
* @param level the level.
* @param raw the raw.
* @param product the product.
* @param open If it's an open light source.
* @param interfaceId The overlay interface id to display.
*/
LightSource(int level, Item raw, Item product, boolean open, int interfaceId) {
this.level = level;
this.raw = raw;
this.product = product;
this.open = open;
this.interfaceId = interfaceId;
}
/**
* Checks if the player has a lit light source.
* @param player The player.
* @return {@code True} if so.
*/
public static boolean hasActiveLightSource(Player player) {
return getActiveLightSource(player) != null;
}
/**
* Gets the light source used by the player.
* @param player The player.
* @return The light source object, or null if the player didn't have any
* light source.
*/
public static LightSource getActiveLightSource(Player player) {
LightSource source;
for (Item item : player.getInventory().toArray()) {
if (item != null && (source = forProductId(item.getId())) != null) {
return source;
}
}
for (Item item : player.getEquipment().toArray()) {
if (item != null && (source = forProductId(item.getId())) != null) {
return source;
}
}
return null;
}
/**
* Gets the light source by the id.
* @param id the id.
* @return the source.
*/
public static LightSource forId(int id) {
for (LightSource light : LightSource.values()) {
if (light.raw.getId() == id) {
return light;
}
}
return null;
}
/**
* Gets the light souce by the product id.
* @param id the id.
* @return the light source.
*/
public static LightSource forProductId(int id) {
for (LightSource light : LightSource.values()) {
if (light.product.getId() == id) {
return light;
}
}
return null;
}
/**
* Gets the strength of the light source (1=dim, 2=medium, 3=bright).
* @return The strength.
*/
public int getStrength() {
switch (interfaceId) {
case Components.DARKNESS_LIGHT_97:
return 1;
case Components.DARKNESS_MEDIUM_98:
return 2;
case -1:
return 3;
}
return 0;
}
/**
* Gets the name of the light source.
* @return The name.
*/
public String getName() {
return super.name().toLowerCase().replaceAll("_", " ");
}
/**
* Gets the raw item.
* @return the raw.
*/
public Item getRaw() {
return raw;
}
/**
* Gets the product.
* @return the product.
*/
public Item getProduct() {
return product;
}
/**
* Gets the level.
* @return the level.
*/
public int getLevel() {
return level;
}
/**
* Gets the open.
* @return The open.
*/
public boolean isOpen() {
return open;
}
/**
* Gets the interfaceId.
* @return The interfaceId.
*/
public int getInterfaceId() {
return interfaceId;
}
/**
* Gets the ids of the raw items.
* @return The raw item ids.
*/
public static int[] getRawIds() {
int array[] = new int[LightSource.values().length];
for (int i = 0; i < LightSource.values().length -1; i++) {
array[i] = LightSource.values()[i].getRaw().getId();
}
return array;
}
}