Java 枚举活用

Java 枚举活用

  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 }

 

转载于:https://www.cnblogs.com/tonycody/p/3334013.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110009.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Gstreamer中加入�x265编解码器

    Gstreamer中加入�x265编解码器

    2021年12月6日
    48
  • 简单理解常量、常量池、运行时常量池和字符串常量池

    简单理解常量、常量池、运行时常量池和字符串常量池1、常量常量在java中就值的是一般的字面量,比如字符串,整数,浮点数等等数据。简单理解java中什么叫常量2、常量池,也叫静态常量池,说常量池一定要指明是编译器生产

    2022年7月28日
    4
  • wing是什么_可分开四叶草项链

    wing是什么_可分开四叶草项链在 Mars 星球上,每个 Mars 人都随身佩带着一串能量项链,在项链上有 N 颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是 Mars 人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为 m,尾标记为 r,后一颗能量珠的头标记为 r,尾标记为 n,则聚合后释放的能量为 m×r×n(Mars 单位),新产

    2022年8月8日
    1
  • CMD进入mysql及mysql字符集设置

    CMD进入mysql及mysql字符集设置1.开始-运行-cmd-回车 或者windows+r,进入电脑或者服务器的cmd,2.执行netstartmysql,启动mysql服务(netstopmysql为停止服务),3.1找到自己mysql安装目录的bin目录(我的是C:\ProgramFiles(x86)\MySQL\MySQLServer5.1\bin),操作顺序如下图 3.2在路径栏输入cmd,     …

    2022年5月20日
    35
  • reference preparation_Preferences

    reference preparation_Preferences在上篇文章中我们讲述的是Android5.1Settings的源码解析http://blog.csdn.net/dongxianfei/article/details/51979922,其中在介绍到Android的SubSetting时,我们说到基本上都是使用的PreferenceFragment技术,今天我们就来了解一下关于PreferenceFragment相关的技术吧。

    2022年9月7日
    0
  • Android程序员如何制定自己的职业规划,拒绝做码农[通俗易懂]

    Android程序员如何制定自己的职业规划,拒绝做码农[通俗易懂]无论是程序员还是任何其他的职业,我认为都应该有清晰长远的职业规划。虽然说计划没有变化快,但如果没有计划就更谈不上计划了。没有职业规划的人,在工作上基本都是为了完成任务而做,很难得到提升,因为没有目标,所以人就是一种得过且过的状态。所以作为一个有眼光的人,应该有自己长远的职业规划,即使没有长远的职业规划,也应该有短期的规划,这样人做事才有动力,有目标。程序员一直都是一个热门话题,因为工资比较高,…

    2022年4月28日
    164

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号