@@ -50,42 +50,17 @@ private static List<ScriptMetadata> ParseNpc(MetadataResources resources)
50
50
{
51
51
type = ScriptType . Select ;
52
52
}
53
+
53
54
int id = int . Parse ( node . Attributes [ "id" ] . Value ) ;
54
55
string buttonSet = node . Attributes [ "buttonSet" ] ? . Value ;
56
+
55
57
List < Content > contents = new List < Content > ( ) ;
58
+
56
59
if ( type == ScriptType . Script )
57
60
{
58
- foreach ( XmlNode content in node . ChildNodes )
59
- {
60
- if ( content . Name != "content" )
61
- {
62
- continue ;
63
- }
64
-
65
- List < int > gotoList = new List < int > ( ) ;
66
- List < int > gotoFailList = new List < int > ( ) ;
67
- foreach ( XmlNode distractor in content . ChildNodes )
68
- {
69
- if ( distractor . Name != "distractor" )
70
- {
71
- continue ;
72
- }
73
-
74
- if ( ! string . IsNullOrEmpty ( distractor . Attributes [ "goto" ] ? . Value ) )
75
- {
76
- gotoList . AddRange ( distractor . Attributes [ "goto" ] . Value . Split ( "," ) . Select ( int . Parse ) . ToList ( ) ) ;
77
- }
78
- if ( ! string . IsNullOrEmpty ( distractor . Attributes [ "gotoFail" ] ? . Value ) )
79
- {
80
- gotoFailList . AddRange ( distractor . Attributes [ "gotoFail" ] . Value . Split ( "," ) . Select ( int . Parse ) . ToList ( ) ) ;
81
- }
82
- }
83
-
84
- string functionId = content . Attributes [ "functionID" ] ? . Value ;
85
- DialogType dialogType = string . IsNullOrEmpty ( content . Attributes [ "buttonSet" ] ? . Value ) ? DialogType . None : ( DialogType ) int . Parse ( content . Attributes [ "buttonSet" ] . Value ) ;
86
- contents . Add ( new Content ( gotoList , gotoFailList , functionId , dialogType ) ) ;
87
- }
61
+ ParseScript ( node , contents ) ;
88
62
}
63
+
89
64
metadata . Options . Add ( new Option ( type , id , contents , buttonSet ) ) ;
90
65
}
91
66
@@ -126,47 +101,59 @@ private static List<ScriptMetadata> ParseQuest(MetadataResources resources)
126
101
ScriptMetadata metadata = new ScriptMetadata ( ) ;
127
102
int questId = int . Parse ( questNode . Attributes [ "id" ] . Value ) ;
128
103
string buttonSet = questNode . Attributes [ "buttonSet" ] ? . Value ;
104
+
129
105
foreach ( XmlNode script in questNode . ChildNodes )
130
106
{
131
107
int id = int . Parse ( script . Attributes [ "id" ] . Value ) ;
132
108
List < Content > contents = new List < Content > ( ) ;
133
- foreach ( XmlNode content in script . ChildNodes )
134
- {
135
- if ( content . Name != "content" )
136
- {
137
- continue ;
138
- }
139
-
140
- List < int > gotoList = new List < int > ( ) ;
141
- List < int > gotoFailList = new List < int > ( ) ;
142
- foreach ( XmlNode distractor in content . ChildNodes )
143
- {
144
- if ( distractor . Name != "distractor" )
145
- {
146
- continue ;
147
- }
148
- if ( ! string . IsNullOrEmpty ( distractor . Attributes [ "goto" ] ? . Value ) )
149
- {
150
- gotoList . AddRange ( distractor . Attributes [ "goto" ] . Value . Split ( "," ) . Select ( int . Parse ) . ToList ( ) ) ;
151
- }
152
- if ( ! string . IsNullOrEmpty ( distractor . Attributes [ "gotoFail" ] ? . Value ) )
153
- {
154
- gotoFailList . AddRange ( distractor . Attributes [ "gotoFail" ] . Value . Split ( "," ) . Select ( int . Parse ) . ToList ( ) ) ;
155
- }
156
- }
157
-
158
- string functionId = content . Attributes [ "functionID" ] ? . Value ;
159
- DialogType dialogType = string . IsNullOrEmpty ( content . Attributes [ "buttonSet" ] ? . Value ) ? DialogType . None : ( DialogType ) int . Parse ( content . Attributes [ "buttonSet" ] . Value ) ;
160
- contents . Add ( new Content ( gotoList , gotoFailList , functionId , dialogType ) ) ;
161
- }
109
+
110
+ ParseScript ( script , contents ) ;
111
+
162
112
metadata . Options . Add ( new Option ( ScriptType . Script , id , contents , buttonSet ) ) ;
163
113
}
114
+
164
115
metadata . Id = questId ;
165
116
metadata . IsQuestScript = true ;
117
+
166
118
scripts . Add ( metadata ) ;
167
119
}
168
120
}
169
121
return scripts ;
170
122
}
123
+
124
+ private static void ParseScript ( XmlNode node , List < Content > contents )
125
+ {
126
+ foreach ( XmlNode content in node . ChildNodes )
127
+ {
128
+ if ( content . Name != "content" )
129
+ {
130
+ continue ;
131
+ }
132
+ string functionId = content . Attributes [ "functionID" ] ? . Value ;
133
+ DialogType dialogType = string . IsNullOrEmpty ( content . Attributes [ "buttonSet" ] ? . Value ) ? DialogType . None : ( DialogType ) int . Parse ( content . Attributes [ "buttonSet" ] . Value ) ;
134
+
135
+ List < Distractor > distractors = new List < Distractor > ( ) ;
136
+ foreach ( XmlNode distractorNode in content . ChildNodes )
137
+ {
138
+ List < int > gotoList = new List < int > ( ) ;
139
+ List < int > gotoFailList = new List < int > ( ) ;
140
+ if ( distractorNode . Name != "distractor" )
141
+ {
142
+ continue ;
143
+ }
144
+
145
+ if ( ! string . IsNullOrEmpty ( distractorNode . Attributes [ "goto" ] ? . Value ) )
146
+ {
147
+ gotoList . AddRange ( distractorNode . Attributes [ "goto" ] . Value . Split ( "," ) . Select ( int . Parse ) . ToList ( ) ) ;
148
+ }
149
+ if ( ! string . IsNullOrEmpty ( distractorNode . Attributes [ "gotoFail" ] ? . Value ) )
150
+ {
151
+ gotoFailList . AddRange ( distractorNode . Attributes [ "gotoFail" ] . Value . Split ( "," ) . Select ( int . Parse ) . ToList ( ) ) ;
152
+ }
153
+ distractors . Add ( new Distractor ( gotoList , gotoFailList ) ) ;
154
+ }
155
+ contents . Add ( new Content ( functionId , dialogType , distractors ) ) ;
156
+ }
157
+ }
171
158
}
172
159
}
0 commit comments