001    public class ji
002      implements mn, Container<jl>
003    {
004      public jl[] a = new jl[36];
005      public jl[] b = new jl[4];
006    
007      public int c = 0;
008      private hl e;
009      private jl f;
010      public boolean d = false;
011    private String name = "Inventory";
012      public ji(hl paramhl) {
013        e = paramhl;
014      }
015    
016      public jl[] getContents() {
017            return a;
018        }
019    
020        public void setContents(jl[] values) {
021            a = values;
022        }
023    
024        public jl getContentsAt(int index) {
025            return a(index);
026        }
027    
028        public void setContentsAt(int index, jl value) {
029            a(index, value);
030        }
031    
032        public int getContentsSize() {
033            return h_();
034        }
035    
036        public String getName() {
037            return name;
038        }
039    
040        public void setName(String value) {
041            name = value;
042        }
043    
044      public jl e() {
045        return a[c];
046      }
047    
048      private int d(int paramInt) {
049        for (int i = 0; i < a.length; i++) {
050          if ((a[i] != null) && (a[i].c == paramInt)) return i;
051        }
052        return -1;
053      }
054    
055      private int c(jl paramjl) {
056        for (int i = 0; i < a.length; i++) {
057          if ((a[i] != null) && (a[i].c == paramjl.c) && (a[i].c()) && (a[i].a < a[i].b()) && (a[i].a < c()) && ((!a[i].e()) || (a[i].h() == paramjl.h())))
058          {
059            return i;
060          }
061        }
062        return -1;
063      }
064    
065      private int j() {
066        for (int i = 0; i < a.length; i++) {
067          if (a[i] == null) return i;
068        }
069        return -1;
070      }
071    
072      private int d(jl paramjl)
073      {
074        int i = paramjl.c;
075        int j = paramjl.a;
076    
077        int k = c(paramjl);
078        if (k < 0) k = j();
079        if (k < 0) return j;
080        if (a[k] == null) {
081          a[k] = new jl(i, 0, paramjl.h());
082        }
083    
084        int m = j;
085        if (m > a[k].b() - a[k].a) {
086          m = a[k].b() - a[k].a;
087        }
088        if (m > c() - a[k].a) {
089          m = c() - a[k].a;
090        }
091    
092        if (m == 0) return j;
093    
094        j -= m;
095        a[k].a += m;
096        a[k].b = 5;
097    
098        return j;
099      }
100    
101      public void f() {
102        for (int i = 0; i < a.length; i++) {
103          if ((a[i] == null) || (a[i].b <= 0)) continue; a[i].b -= 1;
104        }
105      }
106    
107      public boolean b(int paramInt) {
108        int i = d(paramInt);
109        if (i < 0) return false;
110        if (--a[i].a <= 0) a[i] = null;
111    
112        return true;
113      }
114    
115      public boolean a(jl paramjl)
116      {
117        if (!paramjl.f()) {
118          paramjl.a = d(paramjl);
119          if (paramjl.a == 0) return true;
120        }
121    
122        int i = j();
123        if (i >= 0) {
124          a[i] = paramjl;
125          a[i].b = 5;
126          return true;
127        }
128        return false;
129      }
130    
131      public jl b(int paramInt1, int paramInt2) {
132        jl[] arrayOfjl = a;
133        if (paramInt1 >= a.length) {
134          arrayOfjl = b;
135          paramInt1 -= a.length;
136        }
137    
138        if (arrayOfjl[paramInt1] != null) {
139          if (arrayOfjl[paramInt1].a <= paramInt2) {
140            jl localjl = arrayOfjl[paramInt1];
141            arrayOfjl[paramInt1] = null;
142            return localjl;
143          }
144          jl localjl = arrayOfjl[paramInt1].a(paramInt2);
145          if (arrayOfjl[paramInt1].a == 0) arrayOfjl[paramInt1] = null;
146          return localjl;
147        }
148    
149        return null;
150      }
151    
152      public void a(int paramInt, jl paramjl) {
153        jl[] arrayOfjl = a;
154        if (paramInt >= arrayOfjl.length) {
155          paramInt -= arrayOfjl.length;
156          arrayOfjl = b;
157        }
158    
159        arrayOfjl[paramInt] = paramjl;
160      }
161    
162      public float a(hr paramhr) {
163        float f1 = 1.0F;
164        if (a[c] != null) f1 *= a[c].a(paramhr);
165        return f1;
166      }
167    
168      public fh a(fh paramfh)
169      {
170        ah localah;
171        for (int i = 0; i < a.length; i++) {
172          if (a[i] != null) {
173            localah = new ah();
174            localah.a("Slot", (byte)i);
175            a[i].a(localah);
176            paramfh.a(localah);
177          }
178        }
179        for (int i = 0; i < b.length; i++) {
180          if (b[i] != null) {
181            localah = new ah();
182            localah.a("Slot", (byte)(i + 100));
183            b[i].a(localah);
184            paramfh.a(localah);
185          }
186        }
187        return paramfh;
188      }
189    
190      public void b(fh paramfh) {
191        a = new jl[36];
192        b = new jl[4];
193        for (int i = 0; i < paramfh.b(); i++) {
194          ah localah = (ah)paramfh.a(i);
195          int j = localah.b("Slot") & 0xFF;
196          jl localjl = new jl(localah);
197          if (localjl.a() != null) {
198            if ((j >= 0) && (j < a.length)) a[j] = localjl;
199            if ((j < 100) || (j >= b.length + 100)) continue; b[(j - 100)] = localjl;
200          }
201        }
202      }
203    
204      public int h_() {
205        return a.length + 4;
206      }
207    
208      public jl a(int paramInt) {
209        jl[] arrayOfjl = a;
210        if (paramInt >= arrayOfjl.length) {
211          paramInt -= arrayOfjl.length;
212          arrayOfjl = b;
213        }
214    
215        return arrayOfjl[paramInt];
216      }
217    
218      public String b() {
219        return getName(); //hMod: override with getName()
220      }
221    
222      public int c() {
223        return 64;
224      }
225    
226      public int a(fe paramfe) {
227        jl localjl = a(c);
228        if (localjl != null) return localjl.a(paramfe);
229        return 1;
230      }
231    
232      public boolean b(hr paramhr) {
233        if ((paramhr.bt != mh.d) && (paramhr.bt != mh.e) && (paramhr.bt != mh.t) && (paramhr.bt != mh.s)) return true;
234    
235        jl localjl = a(c);
236        if (localjl != null) return localjl.b(paramhr);
237        return false;
238      }
239    
240      public int g()
241      {
242        int i = 0;
243        int j = 0;
244        int k = 0;
245        for (int m = 0; m < b.length; m++) {
246          if ((b[m] != null) && ((b[m].a() instanceof jj))) {
247            int n = b[m].i();
248            int i1 = b[m].g();
249    
250            int i2 = n - i1;
251            j += i2;
252            k += n;
253    
254            int i3 = ((jj)b[m].a()).bh;
255    
256            i += i3;
257          }
258        }
259        if (k == 0) return 0;
260        return (i - 1) * j / k + 1;
261      }
262    
263      public void c(int paramInt) {
264        for (int i = 0; i < b.length; i++)
265          if ((b[i] != null) && ((b[i].a() instanceof jj))) {
266            b[i].b(paramInt);
267            if (b[i].a == 0) {
268              b[i].a(e);
269              b[i] = null;
270            }
271          }
272      }
273    
274      public void h()
275      {
276        for (int i = 0; i < a.length; i++) {
277          if (a[i] != null) {
278            e.a(a[i], true);
279            a[i] = null;
280          }
281        }
282        for (int i = 0; i < b.length; i++)
283          if (b[i] != null) {
284            e.a(b[i], true);
285            b[i] = null;
286          }
287      }
288    
289      public void d()
290      {
291        d = true;
292      }
293    
294      public void b(jl paramjl)
295      {
296        f = paramjl;
297        e.a(paramjl);
298      }
299    
300      public jl i() {
301        return f;
302      }
303    
304      public boolean a_(hl paramhl) {
305        if (e.G) return false;
306        return paramhl.b((fe)e) <= 64.0D;
307      }
308    }