Java列挙活用
26108 ワード
1 /**
2 * 、
3 *
4 * @author TonyCody
5 * @author 13-9-22
6 * @time 5:35
7 */
8 public enum LegionDogzType {
9
10 FOOD(1) {
11 @Override
12 public int getResource(LegionDogzVO dogz) {
13 return dogz.getFood();
14 }
15
16 @Override
17 public boolean isCDUp(UserLimitVO ul) {
18 return cdUp(this, ul);
19 }
20
21 @Override
22 public int getCDTime(UserLimitVO ul) {
23 return ul.getDogzFoodSec();
24 }
25
26 @Override
27 public void increateCDTime(UserLimitVO ul, int sec) {
28 ul.setDogzFoodSec(sec);
29 }
30
31 @Override
32 public void increateResource(LegionDogzVO dogz, int value) {
33 dogz.setFood(dogz.getFood() + value);
34 }
35 },
36 WOOD(2) {
37 @Override
38 public int getResource(LegionDogzVO dogz) {
39 return dogz.getWood();
40 }
41
42 @Override
43 public int getCDTime(UserLimitVO ul) {
44 return ul.getDogzWoodSec();
45 }
46
47 @Override
48 public boolean isCDUp(UserLimitVO ul) {
49 return cdUp(this, ul);
50 }
51
52 @Override
53 public void increateCDTime(UserLimitVO ul, int sec) {
54 ul.setDogzWoodSec(sec);
55 }
56
57 @Override
58 public void increateResource(LegionDogzVO dogz, int value) {
59 dogz.setWood(dogz.getWood() + value);
60 }
61 },
62 STONE(3) {
63 @Override
64 public int getResource(LegionDogzVO dogz) {
65 return dogz.getStone();
66 }
67
68 @Override
69 public int getCDTime(UserLimitVO ul) {
70 return ul.getDogzStoneSec();
71 }
72
73 @Override
74 public boolean isCDUp(UserLimitVO ul) {
75 return cdUp(this, ul);
76 }
77
78 @Override
79 public void increateCDTime(UserLimitVO ul, int sec) {
80 ul.setDogzStoneSec(sec);
81 }
82
83 @Override
84 public void increateResource(LegionDogzVO dogz, int value) {
85 dogz.setStone(dogz.getStone() + value);
86 }
87 },
88 BRONZE(4) {
89 @Override
90 public int getResource(LegionDogzVO dogz) {
91 return dogz.getBronze();
92 }
93
94 @Override
95 public int getCDTime(UserLimitVO ul) {
96 return ul.getDogzBronzeSec();
97 }
98
99 @Override
100 public boolean isCDUp(UserLimitVO ul) {
101 return cdUp(this, ul);
102 }
103
104 @Override
105 public void increateCDTime(UserLimitVO ul, int sec) {
106 ul.setDogzBronzeSec(sec);
107 }
108
109 @Override
110 public void increateResource(LegionDogzVO dogz, int value) {
111 dogz.setBronze(dogz.getBronze() + value);
112 }
113 },
114 COPPERS(5) {
115 @Override
116 public int getResource(LegionDogzVO dogz) {
117 return dogz.getCoppers();
118 }
119
120 @Override
121 public int getCDTime(UserLimitVO ul) {
122 return ul.getDogzCoppersSec();
123 }
124
125 @Override
126 public boolean isCDUp(UserLimitVO ul) {
127 return cdUp(this, ul);
128 }
129
130 @Override
131 public void increateCDTime(UserLimitVO ul, int sec) {
132 ul.setDogzCoppersSec(sec);
133 }
134
135 @Override
136 public void increateResource(LegionDogzVO dogz, int value) {
137 dogz.setCoppers(dogz.getCoppers() + value);
138 }
139 };
140
141 public static LegionDogzType getLegionDogzType(int type) {
142 for (LegionDogzType e : LegionDogzType.values()) {
143 if (e.getType() == type) {
144 return e;
145 }
146 }
147 return null;
148 }
149
150 /**
151 *
152 *
153 * @param dogz
154 * @param value
155 */
156 public abstract void increateResource(LegionDogzVO dogz, int value);
157
158 /**
159 *
160 *
161 * @param dogz
162 */
163 public abstract int getResource(LegionDogzVO dogz);
164
165 /**
166 * CD
167 *
168 * @param ul
169 * @param sec
170 */
171 public abstract void increateCDTime(UserLimitVO ul, int sec);
172
173 /**
174 * CD
175 *
176 * @param ul
177 *
178 * @return
179 */
180 public abstract int getCDTime(UserLimitVO ul);
181
182 /**
183 * CD
184 *
185 * @param ul
186 *
187 * @return
188 */
189 public abstract boolean isCDUp(UserLimitVO ul);
190
191 private byte type;
192
193 protected byte getType() {
194 return type;
195 }
196
197 protected void setType(byte type) {
198 this.type = type;
199 }
200
201 private LegionDogzType(int type) {
202 this.type = (byte) type;
203 }
204
205 protected boolean cdUp(LegionDogzType type, UserLimitVO ul) {
206 if (type.getCDTime(ul) > 0) {
207 if (type.getCDTime(ul) - DateUtil.getNowSec() > 0) {
208 return false;
209 } else {
210 type.increateCDTime(ul, 0);
211 }
212 }
213 return true;
214 }
215 }