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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JS 面试题 大全

    JS 面试题 大全1、介绍一下js的数据类型有哪些,值是如何存储的?2、说一下js的数据类型的转换都有哪些?3、如何去判断js数据类型?4、介绍js有哪些内置对象?5、javascript创建对象的几种方式?6、js获取原型的方法?7、什么是闭包,为什么要用它?8、三种事件模型是什么?9、哪些操作会造成内存泄漏?10、简述javascript中this的指向?![在这里插入图片描述](https://img-blog.csdnimg.cn/2021032219142296.png

    2022年8月26日
    8
  • 【spring-kafka】@KafkaListener详解与使用

    【spring-kafka】@KafkaListener详解与使用说明从2.2.4版开始,您可以直接在注释上指定Kafka使用者属性,这些属性将覆盖在使用者工厂中配置的具有相同名称的所有属性。您不能通过这种方式指定group.id和client.id属性。他们将被忽略;可以使用#{…​}或属性占位符(${…​})在SpEL上配置注释上的大多数属性。比如:@KafkaListener(id=”consumer-id”,topics=”SHI_TOPIC1″,concurrency=”${listen.concurrency:3}”,

    2022年10月14日
    2
  • android studio输出文字_androiditem长按删除

    android studio输出文字_androiditem长按删除用EditText实现textView长按复制效果,edittexttextview首先EditText是集成TextView的我们直接将?EditText设置为不可编辑来实现其中重点为:android:background=”@null”//背景设为null,去掉editText下划线android:textCursorDrawable=”@null”//游标设为null,去掉游…

    2022年9月29日
    1
  • android之View的启动过程[通俗易懂]

    程序里调用了onSizeChanged方法进行了一些设置,不知道onSizeChanged是在什么时候启动的,所以研究了一下View的启动流程代码如下:public class TestView extends View { public TestView(Context context) { super(context); Log.d(“mDebug”, “TestV

    2022年3月10日
    34
  • 股票API

    实时股票数据接口大全股票数据的获取目前有如下两种方法可以获取:1.http/javascript接口取数据2.web-service接口1.http/javascript接口取数据1.1Sina股票数据接口以大秦铁路(股票代码:601006)为例,如果要获取它的最新行情,只需访问新浪的股票数据接口:http://hq.sinajs…

    2022年4月7日
    64
  • minikube 安装指南

    minikube 安装指南

    2021年5月14日
    122

发表回复

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

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