Java 枚举活用

时间:2021-04-28 14:55:11
 /**
* 联盟神兽、神兽资源枚举
*
* @author TonyCody
* @author 13-9-22
* @time 下午5:35
*/
public enum LegionDogzType { FOOD(1) {
@Override
public int getResource(LegionDogzVO dogz) {
return dogz.getFood();
} @Override
public boolean isCDUp(UserLimitVO ul) {
return cdUp(this, ul);
} @Override
public int getCDTime(UserLimitVO ul) {
return ul.getDogzFoodSec();
} @Override
public void increateCDTime(UserLimitVO ul, int sec) {
ul.setDogzFoodSec(sec);
} @Override
public void increateResource(LegionDogzVO dogz, int value) {
dogz.setFood(dogz.getFood() + value);
}
},
WOOD(2) {
@Override
public int getResource(LegionDogzVO dogz) {
return dogz.getWood();
} @Override
public int getCDTime(UserLimitVO ul) {
return ul.getDogzWoodSec();
} @Override
public boolean isCDUp(UserLimitVO ul) {
return cdUp(this, ul);
} @Override
public void increateCDTime(UserLimitVO ul, int sec) {
ul.setDogzWoodSec(sec);
} @Override
public void increateResource(LegionDogzVO dogz, int value) {
dogz.setWood(dogz.getWood() + value);
}
},
STONE(3) {
@Override
public int getResource(LegionDogzVO dogz) {
return dogz.getStone();
} @Override
public int getCDTime(UserLimitVO ul) {
return ul.getDogzStoneSec();
} @Override
public boolean isCDUp(UserLimitVO ul) {
return cdUp(this, ul);
} @Override
public void increateCDTime(UserLimitVO ul, int sec) {
ul.setDogzStoneSec(sec);
} @Override
public void increateResource(LegionDogzVO dogz, int value) {
dogz.setStone(dogz.getStone() + value);
}
},
BRONZE(4) {
@Override
public int getResource(LegionDogzVO dogz) {
return dogz.getBronze();
} @Override
public int getCDTime(UserLimitVO ul) {
return ul.getDogzBronzeSec();
} @Override
public boolean isCDUp(UserLimitVO ul) {
return cdUp(this, ul);
} @Override
public void increateCDTime(UserLimitVO ul, int sec) {
ul.setDogzBronzeSec(sec);
} @Override
public void increateResource(LegionDogzVO dogz, int value) {
dogz.setBronze(dogz.getBronze() + value);
}
},
COPPERS(5) {
@Override
public int getResource(LegionDogzVO dogz) {
return dogz.getCoppers();
} @Override
public int getCDTime(UserLimitVO ul) {
return ul.getDogzCoppersSec();
} @Override
public boolean isCDUp(UserLimitVO ul) {
return cdUp(this, ul);
} @Override
public void increateCDTime(UserLimitVO ul, int sec) {
ul.setDogzCoppersSec(sec);
} @Override
public void increateResource(LegionDogzVO dogz, int value) {
dogz.setCoppers(dogz.getCoppers() + value);
}
}; public static LegionDogzType getLegionDogzType(int type) {
for (LegionDogzType e : LegionDogzType.values()) {
if (e.getType() == type) {
return e;
}
}
return null;
} /**
* 增加资源
*
* @param dogz
* @param value
*/
public abstract void increateResource(LegionDogzVO dogz, int value); /**
* 获取资源
*
* @param dogz
*/
public abstract int getResource(LegionDogzVO dogz); /**
* 设置 CD 时间
*
* @param ul
* @param sec
*/
public abstract void increateCDTime(UserLimitVO ul, int sec); /**
* 获取 CD 时间
*
* @param ul
*
* @return
*/
public abstract int getCDTime(UserLimitVO ul); /**
* 是否到 CD 时间
*
* @param ul
*
* @return
*/
public abstract boolean isCDUp(UserLimitVO ul); private byte type; protected byte getType() {
return type;
} protected void setType(byte type) {
this.type = type;
} private LegionDogzType(int type) {
this.type = (byte) type;
} protected boolean cdUp(LegionDogzType type, UserLimitVO ul) {
if (type.getCDTime(ul) > 0) {
if (type.getCDTime(ul) - DateUtil.getNowSec() > 0) {
return false;
} else {
type.increateCDTime(ul, 0);
}
}
return true;
}
}