extra
@@ -33,6 +33,50 @@ | ||
33 | 33 | MAX_NUM |
34 | 34 | }; |
35 | 35 | } |
36 | +bool MinervaEnemyExtraSetting::getTalkSettingFromString(tstring& strText, | |
37 | + HPLPortableLogger* lpPortableLogger, MinervaEnemyTalkSetting& talkSetting, | |
38 | + bool& bIsOK) | |
39 | +{ | |
40 | + vector<string> vecItems = HPLString::split(strText, "/"); | |
41 | + const int MAX_ITEMS = (int)vecItems.size(); | |
42 | + // | |
43 | + if (MAX_ITEMS == 1) { | |
44 | + if (HPLString::equals(HPLString::trim(vecItems[0]), "NONE")) { | |
45 | + // 止め | |
46 | + return false; | |
47 | + } | |
48 | + else { | |
49 | + // start event id | |
50 | + //MinervaEnemyTalkSetting talkSetting; | |
51 | + talkSetting.m_nEventID = atoi(vecItems[0].c_str()); | |
52 | + // 先が無いのでここで止める | |
53 | + bIsOK = true; | |
54 | + return false; | |
55 | + } | |
56 | + } | |
57 | + else if (MAX_ITEMS >= 3) { | |
58 | + //MinervaEnemyTalkSetting talkSetting; | |
59 | + // quest id | |
60 | + talkSetting.m_nQuestInnerID = atoi(vecItems[0].c_str()); | |
61 | + // mission index | |
62 | + talkSetting.m_nMissionInnerID = atoi(vecItems[1].c_str()); | |
63 | + // event id to start | |
64 | + talkSetting.m_nEventID = atoi(vecItems[2].c_str()); | |
65 | + // add | |
66 | + bIsOK = true; | |
67 | +// lpExtraSetting->addTalkSetting(talkSetting); | |
68 | + return true; | |
69 | + } | |
70 | + else { | |
71 | + if (lpPortableLogger) { | |
72 | + lpPortableLogger->writeErrorWithLine( | |
73 | + HPLString::chrToStr("Talkの要素数不足[%s]", strText.c_str()), | |
74 | + HPL::LogLevel::LOG_ERROR, | |
75 | + -1,tstring(),NULL); | |
76 | + } | |
77 | + } | |
78 | + return false; | |
79 | +} | |
36 | 80 | |
37 | 81 | bool MinervaEnemyExtraSetting::loadExtraSetting(vector<MinervaEnemyExtraSetting>& vecExtraSettings, |
38 | 82 | const TCHAR* FILE_PATH, HPLPortableLogger* lpPortableLogger) |
@@ -158,49 +202,18 @@ | ||
158 | 202 | // for talk items... |
159 | 203 | for (int i = 0; i < MAX_TALKS; i++) { |
160 | 204 | // split items |
161 | - vector<string> vecItems = HPLString::split(vecTalks[i], "/"); | |
162 | - const int MAX_ITEMS = (int)vecItems.size(); | |
163 | - // | |
164 | - if (MAX_ITEMS == 1) { | |
165 | - if (HPLString::equals(HPLString::trim(vecItems[0]), "NONE")) { | |
166 | - // 止め | |
167 | - break; | |
168 | - } | |
169 | - else { | |
170 | - // start event id | |
171 | - MinervaEnemyTalkSetting talkSetting; | |
172 | - talkSetting.m_nEventID = atoi(vecItems[0].c_str()); | |
173 | - lpExtraSetting->addTalkSetting(talkSetting); | |
174 | - // 先が無いのでここで止める | |
175 | - break; | |
176 | - } | |
177 | - if (i < MAX_TALKS - 1) { | |
178 | - if (lpPortableLogger) { | |
179 | - lpPortableLogger->writeErrorWithLine( | |
180 | - HPLString::chrToStr("[%s]の後の分岐条件は無視されました", | |
181 | - vecItems[0].c_str()), HPL::LogLevel::LOG_WARN, nLine, strLine, FILE_PATH); | |
182 | - } | |
183 | - } | |
205 | + MinervaEnemyTalkSetting talkSetting; | |
206 | + | |
207 | + bool bIsOK = false; | |
208 | + bool bIsContinue = MinervaEnemyExtraSetting::getTalkSettingFromString( | |
209 | + vecTalks[i], lpPortableLogger, talkSetting, bIsOK); | |
210 | + if (bIsOK) { | |
211 | + lpExtraSetting->m_vecTalkSettings.push_back(talkSetting); | |
184 | 212 | } |
185 | - else if (MAX_ITEMS >= 3) { | |
186 | - MinervaEnemyTalkSetting talkSetting; | |
187 | - // quest id | |
188 | - talkSetting.m_nQuestInnerID = atoi(vecItems[0].c_str()); | |
189 | - // mission index | |
190 | - talkSetting.m_nMissionInnerID = atoi(vecItems[1].c_str()); | |
191 | - // event id to start | |
192 | - talkSetting.m_nEventID = atoi(vecItems[2].c_str()); | |
193 | - // add | |
194 | - lpExtraSetting->addTalkSetting(talkSetting); | |
213 | + if(!bIsContinue){ | |
214 | + // break; | |
215 | + break; | |
195 | 216 | } |
196 | - else { | |
197 | - if (lpPortableLogger) { | |
198 | - lpPortableLogger->writeErrorWithLine( | |
199 | - string("Talkの要素数不足"), | |
200 | - HPL::LogLevel::LOG_ERROR, | |
201 | - nLine, strLine, FILE_PATH); | |
202 | - } | |
203 | - } | |
204 | 217 | } |
205 | 218 | // motion set type |
206 | 219 | lpExtraSetting->m_nMotionSetType = atoi(vecValues[EnemyExtraLoadItemIndex::MOTION_SET_TYPE].c_str()); |
@@ -99,4 +99,11 @@ | ||
99 | 99 | |
100 | 100 | static bool loadExtraSetting(vector<MinervaEnemyExtraSetting>& vecExtraSettings, |
101 | 101 | const TCHAR* FILE_PATH, HPLPortableLogger* lpPortableLogger); |
102 | + | |
103 | + /** | |
104 | + * retval false 停止 | |
105 | + */ | |
106 | + static bool getTalkSettingFromString(tstring& strText, | |
107 | + HPLPortableLogger* lpPortableLogger, MinervaEnemyTalkSetting& talkSetting, | |
108 | + bool& bIsOK); | |
102 | 109 | }; |