-
Notifications
You must be signed in to change notification settings - Fork 0
/
Item.java
80 lines (73 loc) · 1.91 KB
/
Item.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
* Copyright 2017 Billy Brown
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
class Item implements Cloneable {
public static enum Slot {
HEAD,
HAND,
BODY,
BELT,
FEET,
USE // Not equipped but used
}
public static enum Modifier {
STATS, HEALTH, SPEED, ATTACK, DEFENCE
}
public final String name;
public final Slot slot;
public final int weight;
public final Modifier effect;
public final Stats modifiers;
public final int modifier;
public Item(
final String name,
final Slot slot,
final int weight,
final Stats mods) {
this.name = name;
this.slot = slot;
this.weight = weight;
effect = Modifier.STATS;
modifiers = mods;
modifier = 0;
}
public Item(
final String name,
final Slot slot,
final int weight,
final Modifier effect,
final int modifier) {
this.name = name;
this.slot = slot;
this.weight = weight;
this.effect = effect;
this.modifier = modifier;
modifiers = null;
}
@Override
public Item clone() {
return effect == Modifier.STATS
? new Item(name, slot, weight, modifiers)
: new Item(name, slot, weight, effect, modifier);
}
@Override
public String toString() {
String result = name;
result += " [" + slot.toString().toLowerCase();
result += "] " + weight + "kg";
if (effect == Modifier.STATS) {
result += modifiers.STR() != 0 ? " STR: +" + modifiers.STR() : "";
result += modifiers.DEX() != 0 ? " DEX: +" + modifiers.DEX() : "";
result += modifiers.CON() != 0 ? " CON: +" + modifiers.CON() : "";
} else {
if (modifier > 0) {
result += " " + effect.toString().toLowerCase();
result += ": +" + modifier;
}
}
return result;
}
}