OSDN Git Service

Merge branch 'release/v4.101.2'
[jindolf/Jindolf.git] / src / main / java / jp / sfjp / jindolf / data / xml / ElemTag.java
1 /*
2  * village XML file element tags
3  *
4  * License : The MIT License
5  * Copyright(c) 2020 olyutorskii
6  */
7
8 package jp.sfjp.jindolf.data.xml;
9
10 import java.util.HashMap;
11 import java.util.Map;
12 import jp.sourceforge.jindolf.corelib.SysEventType;
13
14 /**
15  * XMLファイルのタグ要素名デコーダ。
16  */
17 public enum ElemTag {
18
19     VILLAGE("village"),
20     AVATARLIST("avatarList"),
21     AVATAR("avatar"),
22     AVATARREF("avatarRef"),
23     PERIOD("period"),
24
25     TALK("talk"),
26     LI("li"),
27     RAWDATA("rawdata"),
28
29     STARTENTRY("startEntry", SysEventType.STARTENTRY),
30     ONSTAGE("onStage", SysEventType.ONSTAGE),
31     STARTMIRROR("startMirror", SysEventType.STARTMIRROR),
32     OPENROLE("openRole", SysEventType.OPENROLE),
33     MURDERED("murdered", SysEventType.MURDERED),
34     STARTASSAULT("startAssault", SysEventType.STARTASSAULT),
35     SURVIVOR("survivor", SysEventType.SURVIVOR),
36     COUNTING("counting", SysEventType.COUNTING),
37     SUDDENDEATH("suddenDeath", SysEventType.SUDDENDEATH),
38     NOMURDER("noMurder", SysEventType.NOMURDER),
39     WINVILLAGE("winVillage", SysEventType.WINVILLAGE),
40     WINWOLF("winWolf", SysEventType.WINWOLF),
41     WINHAMSTER("winHamster", SysEventType.WINHAMSTER),
42     PLAYERLIST("playerList", SysEventType.PLAYERLIST),
43     PANIC("panic", SysEventType.PANIC),
44     EXECUTION("execution", SysEventType.EXECUTION),
45     VANISH("vanish", SysEventType.VANISH),
46     CHECKOUT("checkout", SysEventType.CHECKOUT),
47     SHORTMEMBER("shortMember", SysEventType.SHORTMEMBER),
48     ASKENTRY("askEntry", SysEventType.ASKENTRY),
49     ASKCOMMIT("askCommit", SysEventType.ASKCOMMIT),
50     NOCOMMENT("noComment", SysEventType.NOCOMMENT),
51     STAYEPILOGUE("stayEpilogue", SysEventType.STAYEPILOGUE),
52     GAMEOVER("gameOver", SysEventType.GAMEOVER),
53     JUDGE("judge", SysEventType.JUDGE),
54     GUARD("guard", SysEventType.GUARD),
55     COUNTING2("counting2", SysEventType.COUNTING2),
56     ASSAULT("assault", SysEventType.ASSAULT),
57
58     ROLEHEADS("roleHeads"),
59     VOTE("vote"),
60     PLAYERINFO("playerInfo"),
61     NOMINATED("nominated"),
62     ;
63
64
65     private final String name;
66     private final SysEventType sysEventType;
67
68
69     /**
70      * constructor.
71      *
72      * @param name element name
73      * @param isSysEvent true if SysEvent
74      */
75     ElemTag(String name, SysEventType type){
76         this.name = name;
77         this.sysEventType = type;
78         return;
79     }
80
81     /**
82      * constructor.
83      *
84      * <p>It's not SysEvent.
85      *
86      * @param name element name
87      */
88     ElemTag(String name){
89         this(name, null);
90         return;
91     }
92
93
94     /**
95      * get ElemTag map with name-space Prefixed key.
96      *
97      * @param pfx prefix
98      * @return ElemTag
99      */
100     public static Map<String, ElemTag> getQNameMap(String pfx){
101         Map<String, ElemTag> result = new HashMap<>();
102
103         String lead;
104         if(pfx.isEmpty()){
105             lead = "";
106         }else{
107             lead = pfx + ":";
108         }
109
110         for(ElemTag tag : values()){
111             String key = lead + tag.name;
112             key = key.intern();
113             result.put(key, tag);
114         }
115
116         return result;
117     }
118
119
120     /**
121      * タグがSysEventか判定する。
122      *
123      * @return SysEventならtrue
124      */
125     public boolean isSysEventTag(){
126         return this.sysEventType != null;
127     }
128
129     /**
130      * return SysEventType.
131      *
132      * @return SysEventType. true if not SystemEvent.
133      */
134     public SysEventType getSystemEventType(){
135         return this.sysEventType;
136     }
137
138 }