-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathInventory.java
More file actions
134 lines (106 loc) · 2.7 KB
/
Inventory.java
File metadata and controls
134 lines (106 loc) · 2.7 KB
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
public class Inventory {
public static final int MAXITEMS=30;
public Inventory(){
maxItems=MAXITEMS;
items = new Item[maxItems];
}
public Inventory(int maxItems){
this.maxItems=maxItems;
items = new Item[maxItems];
}
/* public void setNewInventory(Item[] items){//TODO: resets inventory (should be done in initializations. might not be necessary at all)
for(int i=0;i<items.length;i++){
this.items[i]=items[i];
}
}*/
public String[] listInventory(){ //redundant?
String[] itemNames = new String[items.length];
for(int i=0;i<items.length;i++){
itemNames[i]=items[i].toString();
}
return itemNames;
}
public String toString(){ //idea: string array? (might be more versatile for displaying.)
if(isEmpty()){
return "(empty)";
}
String retVal = "";
int index = 0;
while (items[index]!=null){
if(items[index].equippable)
retVal+=((Equipment)items[index]);
else
retVal+=items[index].toString();
retVal+="\n";
index++;
}
return retVal;
}
public boolean isEmpty(){
return items[0]==null;
}
public boolean isFull(){
return items[maxItems-1]!=null;
}
public Item getItem(int index){
return items[index];
}
public void addItem(Item newItem){
int index=0;
while(items[index]!=null){
index++;
if(index >= maxItems){
System.out.println("No room."); //need a way to display in gui.
}
}
items[index]=newItem;
}
public void removeItem(int index){ //rough. Will need revising.
if(items[index]!=null){
while(items[index+1]!= null){
if(index+1==maxItems){
items[index]=items[index+1];
items[index+1]=null;
return;
}
items[index]=items[index+1];
index++;
}
items[index]=null;
}
}
public void removeItem(Item removedItem) { //special function with an item as an arg instead of an int. Will probably be useful.
int index=0;
while(items[index]!=removedItem&&items[index]!=null)
index++;
removeItem(index);
}
public Item takeItem(int index){
if(containsItem(index)){
Item takenItem=getItem(index); //will this work? might cause shallow copy/deep copy problems
removeItem(index);
return takenItem;
}
else
return null; //might need a better case for when the index is not correct for an item
}
private boolean containsItem(int index) {
if(index>=0&&index<maxItems&&items[index]!=null){
return true;
}
return false;
}
public Item topItem(){ //consider moving this to inventory, if it is ever used there
return items[0];
}
public int getMaxItems(){
return maxItems;
}
/*public void setItems(Item[] items) {
for(int i=0;i<items.length;i++){
this.items[i]=items[i];
}
}*/
private int maxItems;
protected Item [] items;
}