OSDN Git Service

キャラクターなんとか機Ver3系のレイヤー構成に変更
authorseraphy <seraphy@5b6e9025-a2e8-4882-b233-f889982098c5>
Sun, 6 Oct 2013 17:58:08 +0000 (17:58 +0000)
committerseraphy <seraphy@5b6e9025-a2e8-4882-b233-f889982098c5>
Sun, 6 Oct 2013 17:58:08 +0000 (17:58 +0000)
git-svn-id: https://svn.sourceforge.jp/svnroot/charactermanaj/trunk@55 5b6e9025-a2e8-4882-b233-f889982098c5

resources/schema/character2.xml [moved from resources/schema/character.xml with 97% similarity]
resources/schema/character3.xml [new file with mode: 0644]
src/charactermanaj/model/io/CharacterDataDefaultProvider.java
src/charactermanaj/model/util/MakeEmbeddedResource.java

similarity index 97%
rename from resources/schema/character.xml
rename to resources/schema/character2.xml
index f404a42..d0b8072 100644 (file)
 \r
     <name xml:lang="en">Default</name>\r
     <name xml:lang="ja">デフォルト</name>\r
-    \r
+\r
     <information>\r
        <author xml:lang="en">Unknown</author>\r
        <author xml:lang="ja">名無し</author>\r
        <description xml:lang="en"><![CDATA[default character]]></description>\r
-       <description xml:lang="ja"><![CDATA[デフォルトのキャラクター]]></description>\r
+       <description xml:lang="ja"><![CDATA[デフォルトのキャラクター(キャラクターなんとか機Ver2互換)]]></description>\r
     </information>\r
-    \r
+\r
     <image-size>\r
         <width>300</width>\r
         <height>400</height>\r
     </image-size>\r
-    \r
+\r
     <settings>\r
         <entry key="watch-dir">true</entry>\r
     </settings>\r
-    \r
+\r
     <categories>\r
         <category id="hair_front" multipleSelectable="false">\r
             <visible-rows>6</visible-rows>\r
             <display-name xml:lang="ja">服</display-name>\r
         </colorGroup>\r
     </colorGroups>\r
-    \r
+\r
     <recommendations>\r
         <recommendation>\r
             <description xml:lang="en">Originator (K.Hmix 1st Edition)</description>\r
diff --git a/resources/schema/character3.xml b/resources/schema/character3.xml
new file mode 100644 (file)
index 0000000..d346f49
--- /dev/null
@@ -0,0 +1,239 @@
+<?xml version="1.0"?>\r
+<character\r
+    xmlns="http://charactermanaj.sourceforge.jp/schema/charactermanaj"\r
+    xmlns:xml="http://www.w3.org/XML/1998/namespace"\r
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+    xsi:schemaLocation="http://charactermanaj.sourceforge.jp/schema/charactermanaj character.xsd"\r
+    version="1.0"\r
+    id="default"\r
+    rev="default">\r
+\r
+    <name xml:lang="en">Default</name>\r
+    <name xml:lang="ja">デフォルト</name>\r
+\r
+    <information>\r
+       <author xml:lang="en">Unknown</author>\r
+       <author xml:lang="ja">名無し</author>\r
+       <description xml:lang="en"><![CDATA[default character]]></description>\r
+       <description xml:lang="ja"><![CDATA[デフォルトのキャラクター(キャラクターなんとか機Ver3互換セット)]]></description>\r
+    </information>\r
+\r
+    <image-size>\r
+        <width>300</width>\r
+        <height>400</height>\r
+    </image-size>\r
+\r
+    <settings>\r
+        <entry key="watch-dir">true</entry>\r
+    </settings>\r
+    \r
+    <categories>\r
+        <category id="hair_front" multipleSelectable="false">\r
+            <visible-rows>6</visible-rows>\r
+            <display-name xml:lang="en">Hair - Front</display-name>\r
+            <display-name xml:lang="ja">髪型 - 手前</display-name>\r
+            <layers>\r
+                <layer id="hair_front">\r
+                    <display-name xml:lang="en">Variable</display-name>\r
+                    <display-name xml:lang="ja">可変色</display-name>\r
+                    <order>12</order>\r
+                    <colorGroup refid="color-hair" init-sync="true"/>\r
+                    <dir>hair_front</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+                <layer id="hair_front_accessory">\r
+                    <display-name xml:lang="en">Accessory</display-name>\r
+                    <display-name xml:lang="ja">アクセサリ</display-name>\r
+                    <order>13</order>\r
+                    <dir>hair_front_accessory</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+            </layers>\r
+        </category>\r
+        <category id="hair_back" multipleSelectable="false">\r
+            <visible-rows>6</visible-rows>\r
+            <display-name xml:lang="en">Hair - Back</display-name>\r
+            <display-name xml:lang="ja">髪型 - 後ろ</display-name>\r
+            <layers>\r
+                <layer id="hair_back">\r
+                    <display-name xml:lang="en">Variable</display-name>\r
+                    <display-name xml:lang="ja">可変色</display-name>\r
+                    <order>2</order>\r
+                    <colorGroup refid="color-hair" init-sync="true"/>\r
+                    <dir>hair_back</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+                <layer id="hair_back_accessory">\r
+                    <display-name xml:lang="en">Accessory</display-name>\r
+                    <display-name xml:lang="ja">アクセサリ</display-name>\r
+                    <order>3</order>\r
+                    <dir>hair_back_accessory</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+            </layers>\r
+        </category>\r
+        <category id="head" multipleSelectable="false">\r
+            <visible-rows>6</visible-rows>\r
+            <display-name xml:lang="en">Head</display-name>\r
+            <display-name xml:lang="ja">頭</display-name>\r
+            <layers>\r
+                <layer id="head">\r
+                    <display-name xml:lang="en">Head</display-name>\r
+                    <display-name xml:lang="ja">頭</display-name>\r
+                    <order>9</order>\r
+                    <colorGroup refid="color-skin" init-sync="true"/>\r
+                    <dir>head</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+            </layers>\r
+        </category>\r
+        <category id="face" multipleSelectable="false">\r
+            <visible-rows>6</visible-rows>\r
+            <display-name xml:lang="en">Expression</display-name>\r
+            <display-name xml:lang="ja">表情</display-name>\r
+            <layers>\r
+                <layer id="face_front">    \r
+                    <display-name xml:lang="en">Face</display-name>\r
+                    <display-name xml:lang="ja">表情</display-name>\r
+                    <order>14</order>\r
+                    <dir>face_front</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+                <layer id="face_back">\r
+                    <display-name xml:lang="en">Accessory</display-name>\r
+                    <display-name xml:lang="ja">アクセサリ</display-name>\r
+                    <order>11</order>\r
+                    <dir>face_back</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+            </layers>\r
+        </category>\r
+        <category id="eye" multipleSelectable="false">\r
+            <visible-rows>6</visible-rows>\r
+            <display-name xml:lang="en">Eyes</display-name>\r
+            <display-name xml:lang="ja">目</display-name>\r
+            <layers>\r
+                <layer id="eye">\r
+                    <display-name xml:lang="en">Eye</display-name>\r
+                    <display-name xml:lang="ja">目</display-name>\r
+                    <order>15</order>\r
+                    <dir>eye</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+                <layer id="eye_color">\r
+                    <display-name xml:lang="en">Eye</display-name>\r
+                    <display-name xml:lang="ja">可変色</display-name>\r
+                    <order>16</order>\r
+                    <colorGroup refid="color-eye" init-sync="true"/>\r
+                    <dir>eye_color</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+            </layers>\r
+        </category>\r
+        <category id="body" multipleSelectable="false">\r
+            <visible-rows>6</visible-rows>\r
+            <display-name xml:lang="en">Body</display-name>\r
+            <display-name xml:lang="ja">身体</display-name>\r
+            <layers>\r
+                <layer id="body_front_color">\r
+                    <display-name xml:lang="en">Variable</display-name>\r
+                    <display-name xml:lang="ja">可変色</display-name>\r
+                    <order>7</order>\r
+                    <colorGroup init-sync="true" refid="color-dress"/>\r
+                    <dir>body_front_color</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+                <layer id="body_front">\r
+                    <display-name xml:lang="en">Clothes</display-name>\r
+                    <display-name xml:lang="ja">ドレス</display-name>\r
+                    <order>6</order>\r
+                    <dir>body_front</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+                <layer id="body_back">\r
+                    <display-name xml:lang="en">Skin</display-name>\r
+                    <display-name xml:lang="ja">肌</display-name>\r
+                    <order>4</order>\r
+                    <colorGroup refid="color-skin" init-sync="true"/>\r
+                    <dir>body_back</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+            </layers>\r
+        </category>\r
+        <category id="accessory" multipleSelectable="true">\r
+            <visible-rows>10</visible-rows>\r
+            <display-name xml:lang="en">Accessory</display-name>\r
+            <display-name xml:lang="ja">アクセサリー</display-name>\r
+            <layers>\r
+                <layer id="accessory_front">\r
+                    <display-name xml:lang="en">Top</display-name>\r
+                    <display-name xml:lang="ja">最前面</display-name>\r
+                    <order>17</order>\r
+                    <dir>accessory_front</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+                <layer id="accessory_middle_front" >\r
+                    <display-name xml:lang="en">Middle(R)</display-name>\r
+                    <display-name xml:lang="ja">中間(R)</display-name>\r
+                    <order>10</order>\r
+                    <dir>accessory_middle_front</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+                <layer id="accessory_middle_back">\r
+                    <display-name xml:lang="en">Middle(L)</display-name>\r
+                    <display-name xml:lang="ja">中間(L)</display-name>\r
+                    <order>8</order>\r
+                    <dir>accessory_middle_back</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+                <layer id="accessory_underwear">\r
+                    <display-name xml:lang="en">Underwear</display-name>\r
+                    <display-name xml:lang="ja">アンダーウェア</display-name>\r
+                    <order>5</order>\r
+                    <dir>accessory_underwear</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+                <layer id="accessory_back">\r
+                    <display-name xml:lang="en">Back</display-name>\r
+                    <display-name xml:lang="ja">最背面</display-name>\r
+                    <order>1</order>\r
+                    <dir>accessory_back</dir>\r
+                    <colorModel>HSB</colorModel>\r
+                </layer>\r
+            </layers>\r
+        </category>\r
+    </categories>\r
+\r
+    <colorGroups>\r
+        <colorGroup id="color-hair">\r
+            <display-name xml:lang="en">Hair</display-name>\r
+            <display-name xml:lang="ja">髪</display-name>\r
+        </colorGroup>\r
+        <colorGroup id="color-eye">\r
+            <display-name xml:lang="en">Eye</display-name>\r
+            <display-name xml:lang="ja">瞳</display-name>\r
+        </colorGroup>\r
+        <colorGroup id="color-skin">\r
+            <display-name xml:lang="en">Skin</display-name>\r
+            <display-name xml:lang="ja">肌</display-name>\r
+        </colorGroup>\r
+        <colorGroup id="color-dress">\r
+            <display-name xml:lang="en">Dress</display-name>\r
+            <display-name xml:lang="ja">服</display-name>\r
+        </colorGroup>\r
+    </colorGroups>\r
+\r
+    <recommendations>\r
+        <recommendation>\r
+            <description xml:lang="en">Originator (K.Hmix 1st Edition)</description>\r
+            <description xml:lang="ja">(キャラクターなんとか機本家) K.Hmix 1st Edition</description>\r
+            <URL xml:lang="en">http://khmix.sakura.ne.jp/</URL>\r
+        </recommendation>\r
+        <recommendation>\r
+            <description xml:lang="en">The storage of an additional parts</description>\r
+            <description xml:lang="ja">キャラクターなんとか機 追加パーツ保管庫</description>\r
+            <URL xml:lang="en">http://nantoka.main.jp/</URL>\r
+        </recommendation>\r
+    </recommendations>\r
+\r
+</character>\r
index bde4c62..765b2d8 100644 (file)
@@ -2,27 +2,24 @@ package charactermanaj.model.io;
 \r
 import java.io.IOException;\r
 import java.io.InputStream;\r
-import java.io.ObjectInputStream;\r
 import java.net.URL;\r
-import java.net.URLConnection;\r
-import java.util.Locale;\r
-import java.util.Map;\r
 import java.util.logging.Level;\r
 import java.util.logging.Logger;\r
 \r
 import charactermanaj.model.CharacterData;\r
 \r
+/**\r
+ * デフォルトキャラクターセットのプロバイダ\r
+ * \r
+ * @author seraphy\r
+ */\r
 public class CharacterDataDefaultProvider {\r
 \r
        /**\r
         * リソースに格納されているデフォルトのキャラクター定義.<br>\r
+        * 「キャラクターなんとか機Ver3.xx系」\r
         */\r
-       public static final String DEFAULT_CHARACTER_XML = "/schema/character.xml";\r
-\r
-       /**\r
-        * リソースに格納されているデフォルトのキャラクター定義のシリアライズデータ.<br>\r
-        */\r
-       public static final String DEFAULT_CHARACTER_XML_SER = "/schema/character.xml.ser";\r
+       public static final String DEFAULT_CHARACTER_V3_XML = "/schema/character3.xml";\r
 \r
        /**\r
         * ロガー\r
@@ -46,25 +43,7 @@ public class CharacterDataDefaultProvider {
        public synchronized CharacterData createDefaultCharacterData() {\r
                try {\r
                        if (defaultCharacterData == null) {\r
-                               CharacterData cd;\r
-                               try {\r
-                                       // 埋め込みリソースからデフォルトキャラクターデータを構築する.\r
-                                       cd = loadEmbeddedSerializedDefaultCharacterData();\r
-\r
-                               } catch (Exception ex) {\r
-                                       // 失敗した場合はXMLでの読み込みを試行する.\r
-                                       logger.log(\r
-                                                       Level.WARNING,\r
-                                                       "can't de-serialize the embedded default character-data.",\r
-                                                       ex);\r
-                                       cd = null;\r
-                               }\r
-\r
-                               if (cd == null) {\r
-                                       // XMLリソースからデフォルトキャラクターデータを構築する.\r
-                                       cd = loadEmbeddedXMLDefaultCharacterData();\r
-                               }\r
-\r
+                               CharacterData cd = loadEmbeddedXMLDefaultCharacterData();\r
                                assert (cd != null);\r
                                defaultCharacterData = cd;\r
                        }\r
@@ -84,58 +63,6 @@ public class CharacterDataDefaultProvider {
        }\r
 \r
        /**\r
-        * シリアライズされたデフォルトキャラクターデータを埋め込みリソースより取得する.<br>\r
-        * (現在のロケールの言語に対応するデータを取得し、なければenで代替する.)<br>\r
-        * リソースがないか、読み込めない場合はnullを返す.<br>\r
-        * 都度、リソースをデシリアライズする.<br>\r
-        * \r
-        * @return キャラクター定義、もしくはnull\r
-        */\r
-       protected CharacterData loadEmbeddedSerializedDefaultCharacterData()\r
-                       throws IOException, ClassNotFoundException {\r
-               URL defaultSerializedCharacter = getEmbeddedResourceURL(DEFAULT_CHARACTER_XML_SER);\r
-               URL defaultCharacter = getEmbeddedResourceURL(DEFAULT_CHARACTER_XML);\r
-\r
-               // 埋め込みリソースのシリアライズされたデフォルトキャラクターデータを復元する.\r
-               if (defaultSerializedCharacter != null) {\r
-                       URLConnection connSer = defaultSerializedCharacter.openConnection();\r
-                       URLConnection connXml = defaultCharacter.openConnection();\r
-                       if (connXml.getLastModified() <= connSer.getLastModified()) {\r
-                               Object obj;\r
-                               InputStream is = connSer.getInputStream();\r
-                               try {\r
-                                       ObjectInputStream ois = new ObjectInputStream(is);\r
-                                       try {\r
-                                               obj = ois.readObject();\r
-                                       } finally {\r
-                                               ois.close();\r
-                                       }\r
-                               } finally {\r
-                                       is.close();\r
-                               }\r
-                               @SuppressWarnings("unchecked")\r
-                               Map<String, CharacterData> cdMap = (Map<String, CharacterData>) obj;\r
-\r
-                               Locale locale = Locale.getDefault();\r
-                               String lang = locale.getLanguage();\r
-\r
-                               CharacterData cd = cdMap.get(lang);\r
-                               if (cd == null) {\r
-                                       // 指定した言語が見つからなければenを代表とする.\r
-                                       cd = cdMap.get("en");\r
-                                       if (cd == null && !cdMap.isEmpty()) {\r
-                                               // それも見つからなければ、どれか1つを採用する.\r
-                                               cd = cdMap.values().iterator().next();\r
-                                       }\r
-                               }\r
-                               return cd;\r
-                       }\r
-               }\r
-               // リソースがないか、リソースの読み込みに失敗した場合.\r
-               return null;\r
-       }\r
-\r
-       /**\r
         * XMLリソースファイルから、デフォルトキャラクターデータを生成して返す.<br>\r
         * (現在のロケールの言語に対応するデータを取得し、なければ最初の言語で代替する.)<br>\r
         * 生成されたキャラクター定義のdocBaseはnullであるため、使用する場合はdocBaseをセットすること.<br>\r
@@ -148,11 +75,12 @@ public class CharacterDataDefaultProvider {
        protected CharacterData loadEmbeddedXMLDefaultCharacterData()\r
                        throws IOException {\r
                CharacterData cd;\r
-               URL defaultCharacter = getEmbeddedResourceURL(DEFAULT_CHARACTER_XML);\r
+               URL defaultCharacter = getEmbeddedResourceURL(DEFAULT_CHARACTER_V3_XML);\r
                InputStream is = defaultCharacter.openStream();\r
                try {\r
                        CharacterDataXMLReader characterDataXmlReader = new CharacterDataXMLReader();\r
                        cd = characterDataXmlReader.loadCharacterDataFromXML(is, null);\r
+                       logger.log(Level.INFO, "デフォルトキャラクターデータをロードしました。");\r
 \r
                } finally {\r
                        is.close();\r
index a1df480..3169893 100644 (file)
@@ -135,7 +135,7 @@ public class MakeEmbeddedResource {
                        throws Exception {\r
                // 埋め込みリソースからデフォルトキャラクターデータを構築する.\r
                CharacterData cd;\r
-               URL defaultCharacter = getEmbeddedResourceURL(CharacterDataDefaultProvider.DEFAULT_CHARACTER_XML);\r
+               URL defaultCharacter = getEmbeddedResourceURL(CharacterDataDefaultProvider.DEFAULT_CHARACTER_V3_XML);\r
                InputStream is = defaultCharacter.openStream();\r
                try {\r
                        CharacterDataXMLReader xmlReader = new CharacterDataXMLReader();\r