001 002 import java.io.IOException; 003 import java.util.ArrayList; 004 import java.util.HashMap; 005 import java.util.HashSet; 006 import java.util.Iterator; 007 import java.util.List; 008 import java.util.Map; 009 import java.util.Set; 010 011 public class ly 012 implements cq { 013 014 private Set a = new HashSet(); 015 private me b; 016 private cq c; 017 private bj d; 018 private Map e = new HashMap(); 019 private List f = new ArrayList(); 020 private gc g; 021 022 public ly(gc paramgc, bj parambj, cq paramcq) { 023 b = new lz(paramgc, new byte[32768], 0, 0); 024 025 g = paramgc; 026 d = parambj; 027 c = paramcq; 028 } 029 030 public boolean a(int paramInt1, int paramInt2) { 031 mi localmi = new mi(paramInt1, paramInt2); 032 return e.containsKey(localmi); 033 } 034 035 public void c(int paramInt1, int paramInt2) { 036 int i = paramInt1 * 16 + 8 - g.m; 037 int j = paramInt2 * 16 + 8 - g.o; 038 int k = 128; 039 if ((i < -k) || (i > k) || (j < -k) || (j > k)) { 040 a.add(new mi(paramInt1, paramInt2)); 041 } 042 } 043 044 public me d(int paramInt1, int paramInt2) { 045 mi localmi = new mi(paramInt1, paramInt2); 046 a.remove(new mi(paramInt1, paramInt2)); 047 048 me localme = (me) e.get(localmi); 049 if (localme == null) { 050 localme = e(paramInt1, paramInt2); 051 if (localme == null) { 052 if (c == null) { 053 localme = b; 054 } else { 055 localme = c.b(paramInt1, paramInt2); 056 } 057 058 } 059 060 e.put(localmi, localme); 061 f.add(localme); 062 063 if (localme != null) { 064 localme.c(); 065 localme.d(); 066 } 067 068 if ((!localme.n) && (a(paramInt1 + 1, paramInt2 + 1)) && (a(paramInt1, paramInt2 + 1)) && (a(paramInt1 + 1, paramInt2))) { 069 a(this, paramInt1, paramInt2); 070 } 071 if ((a(paramInt1 - 1, paramInt2)) && (!b(paramInt1 - 1, paramInt2).n) && (a(paramInt1 - 1, paramInt2 + 1)) && (a(paramInt1, paramInt2 + 1)) && (a(paramInt1 - 1, paramInt2))) { 072 a(this, paramInt1 - 1, paramInt2); 073 } 074 if ((a(paramInt1, paramInt2 - 1)) && (!b(paramInt1, paramInt2 - 1).n) && (a(paramInt1 + 1, paramInt2 - 1)) && (a(paramInt1, paramInt2 - 1)) && (a(paramInt1 + 1, paramInt2))) { 075 a(this, paramInt1, paramInt2 - 1); 076 } 077 if ((a(paramInt1 - 1, paramInt2 - 1)) && (!b(paramInt1 - 1, paramInt2 - 1).n) && (a(paramInt1 - 1, paramInt2 - 1)) && (a(paramInt1, paramInt2 - 1)) && (a(paramInt1 - 1, paramInt2))) { 078 a(this, paramInt1 - 1, paramInt2 - 1); 079 } 080 081 } 082 083 return localme; 084 } 085 086 public me b(int paramInt1, int paramInt2) { 087 mi localmi = new mi(paramInt1, paramInt2); 088 me localme = (me) e.get(localmi); 089 090 if (localme == null) { 091 if (g.x) { 092 return d(paramInt1, paramInt2); 093 } 094 return b; 095 } 096 097 return localme; 098 } 099 100 private me e(int paramInt1, int paramInt2) { 101 if (d == null) { 102 return null; 103 } 104 try { 105 me localme = d.a(g, paramInt1, paramInt2); 106 if (localme != null) { 107 localme.r = g.e; 108 } 109 return localme; 110 } catch (Exception localException) { 111 localException.printStackTrace(); 112 } 113 return null; 114 } 115 116 private void a(me paramme) { 117 if (d == null) { 118 return; 119 } 120 try { 121 d.b(g, paramme); 122 } catch (Exception localException) { 123 localException.printStackTrace(); 124 } 125 } 126 127 private void b(me paramme) { 128 if (d == null) { 129 return; 130 } 131 // hMod: fix decompiler error, comment this out. 132 paramme.r = g.e; 133 d.a(g, paramme); 134 } 135 136 public void a(cq paramcq, int paramInt1, int paramInt2) { 137 me localme = b(paramInt1, paramInt2); 138 if (!localme.n) { 139 localme.n = true; 140 if (c != null) { 141 c.a(paramcq, paramInt1, paramInt2); 142 localme.f(); 143 } 144 } 145 } 146 147 public boolean a(boolean paramBoolean, lk paramlk) { 148 int i = 0; 149 for (int j = 0; j < f.size(); j++) { 150 me localme = (me) f.get(j); 151 if ((paramBoolean) && (!localme.p)) { 152 a(localme); 153 } 154 if (localme.a(paramBoolean)) { 155 b(localme); 156 localme.o = false; 157 i++; 158 if ((i == 24) && (!paramBoolean)) { 159 return false; 160 } 161 } 162 } 163 164 if (paramBoolean) { 165 if (d == null) { 166 return true; 167 } 168 d.b(); 169 } 170 return true; 171 } 172 // hMod: Load status 173 boolean loaded = false; 174 175 public boolean a() { 176 // hMod: Load once! 177 if (!loaded) { 178 etc.getLoader(); 179 loaded = true; 180 } 181 if (!g.C) { 182 for (int i = 0; i < 100; i++) { 183 if (!a.isEmpty()) { 184 mi localmi = (mi) a.iterator().next(); 185 186 me localme = b(localmi.a, localmi.b); 187 localme.e(); 188 b(localme); 189 a(localme); 190 a.remove(localmi); 191 192 e.remove(localmi); 193 f.remove(localme); 194 } 195 } 196 197 if (d != null) { 198 d.a(); 199 } 200 } 201 202 return c.a(); 203 } 204 205 public boolean b() { 206 return !g.C; 207 } 208 }