OSDN Git Service

1.105.3-SNAPSHOT版開発開始
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / RigidBehaviorType.java
1 /*\r
2  * rigid behavior type\r
3  *\r
4  * License : The MIT License\r
5  * Copyright(c) 2010 MikuToga Partners\r
6  */\r
7 \r
8 package jp.sourceforge.mikutoga.pmd;\r
9 \r
10 import java.util.Locale;\r
11 import java.util.ResourceBundle;\r
12 \r
13 /**\r
14  * 剛体の振る舞い種別。\r
15  * <ul>\r
16  * <li>0x00:ボーン追従\r
17  * <li>0x01:物理演算\r
18  * <li>0x02:物理演算+ボーン位置合わせ\r
19  * </ul>\r
20  */\r
21 public enum RigidBehaviorType {\r
22 \r
23     /** ボーン追従。 */\r
24     FOLLOWBONE(0x00),\r
25     /** 物理演算。 */\r
26     ONLYDYNAMICS(0x01),\r
27     /** 物理演算+ボーン位置合わせ。 */\r
28     BONEDDYNAMICS(0x02),\r
29     ;\r
30 \r
31     private static final String FAMILY_NAME =\r
32         "jp.sourceforge.mikutoga.pmd.resources.RigidBehaviorTypeName";\r
33 \r
34     private final byte encoded;\r
35 \r
36     /**\r
37      * コンストラクタ。\r
38      * @param code 符号化int値\r
39      */\r
40     private RigidBehaviorType(int code){\r
41         this((byte)code);\r
42         return;\r
43     }\r
44 \r
45     /**\r
46      * コンストラクタ。\r
47      * @param code 符号化byte値\r
48      */\r
49     private RigidBehaviorType(byte code){\r
50         this.encoded = code;\r
51         return;\r
52     }\r
53 \r
54     /**\r
55      * byte値からデコードする。\r
56      * @param code byte値\r
57      * @return デコードされた列挙子。該当するものがなければnull\r
58      */\r
59     public static RigidBehaviorType decode(byte code){\r
60         RigidBehaviorType result = null;\r
61 \r
62         for(RigidBehaviorType type : values()){\r
63             if(type.encode() == code){\r
64                 result = type;\r
65                 break;\r
66             }\r
67         }\r
68 \r
69         return result;\r
70     }\r
71 \r
72     /**\r
73      * byte値にエンコードする。\r
74      * @return byte値\r
75      */\r
76     public byte encode(){\r
77         return this.encoded;\r
78     }\r
79 \r
80     /**\r
81      * デフォルトロケールでの表示名を返す。\r
82      * @return 表示名\r
83      */\r
84     public String getGuiName(){\r
85         Locale locale = Locale.getDefault();\r
86         return getGuiName(locale);\r
87     }\r
88 \r
89     /**\r
90      * ロケールに準じた表示名を返す。\r
91      * @param locale ロケール。nullならデフォルトロケールと解釈される。\r
92      * @return 表示名\r
93      */\r
94     public String getGuiName(Locale locale){\r
95         if(locale == null) return getGuiName();\r
96         ResourceBundle rb = ResourceBundle.getBundle(FAMILY_NAME, locale);\r
97         String key = name();\r
98         String result = rb.getString(key);\r
99         return result;\r
100     }\r
101 \r
102 }\r