OSDN Git Service

8a916a4dc5f30d91561c74ad0f2bf8bce0dbf59f
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / BoneType.java
1 /*
2  * bone type
3  *
4  * License : The MIT License
5  * Copyright(c) 2010 MikuToga Partners
6  */
7
8 package jp.sourceforge.mikutoga.pmd;
9
10 import java.util.Locale;
11 import java.util.ResourceBundle;
12
13 /**
14  * ボーン種別。
15  * <ul>
16  * <li>0x00:回転
17  * <li>0x01:回転/移動
18  * <li>0x02:IK
19  * <li>0x03:不明
20  * <li>0x04:IK影響下(回転)
21  * <li>0x05:回転影響下
22  * <li>0x06:IK接続先
23  * <li>0x07:非表示
24  * <li>0x08:捩り
25  * <li>0x09:回転連動
26  * </ul>
27  */
28 public enum BoneType {
29
30     /** 回転。 */
31     ROTATE(0x00),
32     /** 回転/移動。 */
33     ROTMOV(0x01),
34     /** IK。 */
35     IK(0x02),
36     /** 不明。 */
37     UNKNOWN(0x03),
38     /** IK影響下(回転)。 */
39     UNDERIK(0x04),
40     /** 回転影響下。 */
41     UNDERROT(0x05),
42     /** IK接続先。 */
43     IKCONNECTED(0x06),
44     /** 非表示。 */
45     HIDDEN(0x07),
46     /** 捩り。 */
47     TWIST(0x08),
48     /** 回転連動。 */
49     LINKEDROT(0x09),
50     ;
51
52     private static final String FAMILY_NAME =
53             "jp.sourceforge.mikutoga.pmd.resources.BoneTypeName";
54
55     private final byte encoded;
56
57     /**
58      * コンストラクタ。
59      * @param code 符号化int値
60      */
61     private BoneType(int code){
62         this((byte)code);
63         return;
64     }
65
66     /**
67      * コンストラクタ。
68      * @param code 符号化byte値
69      */
70     private BoneType(byte code){
71         this.encoded = code;
72         return;
73     }
74
75     /**
76      * byte値からデコードする。
77      * @param code byte値
78      * @return デコードされた列挙子。該当するものがなければnull
79      */
80     public static BoneType decode(byte code){
81         BoneType result = null;
82
83         for(BoneType type : values()){
84             if(type.encode() == code){
85                 result = type;
86                 break;
87             }
88         }
89
90         return result;
91     }
92
93     /**
94      * byte値にエンコードする。
95      * @return byte値
96      */
97     public byte encode(){
98         return this.encoded;
99     }
100
101     /**
102      * デフォルトロケールでの表示名を返す。
103      * @return 表示名
104      */
105     public String getGuiName(){
106         Locale locale = Locale.getDefault();
107         return getGuiName(locale);
108     }
109
110     /**
111      * ロケールに準じた表示名を返す。
112      * @param locale ロケール。nullならデフォルトロケールと解釈される。
113      * @return 表示名
114      */
115     public String getGuiName(Locale locale){
116         if(locale == null) return getGuiName();
117         ResourceBundle rb = ResourceBundle.getBundle(FAMILY_NAME, locale);
118         String key = name();
119         String result = rb.getString(key);
120         return result;
121     }
122
123 }