Line 183... |
Line 183... |
183 |
return false;
|
183 |
return false;
|
184 |
|
184 |
|
185 |
return true;
|
185 |
return true;
|
186 |
}
|
186 |
}
|
187 |
|
187 |
|
188 |
Utils::String CXspFile::createValuesLine() const
|
188 |
Utils::WString CXspFile::createValuesLine() const
|
189 |
{
|
189 |
{
|
190 |
Utils::String values = CBaseFile::createValuesLine ();
|
190 |
Utils::WString values = CBaseFile::createValuesLine ();
|
191 |
|
191 |
|
192 |
values += "Data: " + m_sData + "\n";
|
192 |
values += L"Data: " + m_sData.toWString() + L"\n";
|
193 |
values += "ID: " + m_sID + "\n";
|
193 |
values += L"ID: " + m_sID.toWString() + L"\n";
|
194 |
|
194 |
|
195 |
if ( m_bLanguageText )
|
195 |
if ( m_bLanguageText )
|
196 |
values += "LanguageText\n";
|
196 |
values += L"LanguageText\n";
|
197 |
if ( m_bExistingShip )
|
197 |
if ( m_bExistingShip )
|
198 |
values += "ExistingShip\n";
|
198 |
values += L"ExistingShip\n";
|
199 |
values += Utils::String("OrgDesc: ") + (long)m_iOrgDesc + "\n";
|
199 |
values += Utils::WString(L"OrgDesc: ") + (long)m_iOrgDesc + L"\n";
|
200 |
values += Utils::String("Shipyard: ") + (long)m_iShipyard + "\n";
|
200 |
values += Utils::WString(L"Shipyard: ") + (long)m_iShipyard + L"\n";
|
201 |
|
201 |
|
202 |
for ( CListNode<SCockpit> *node = m_lCockpit.Front(); node; node = node->next() ) {
|
202 |
for ( CListNode<SCockpit> *node = m_lCockpit.Front(); node; node = node->next() ) {
|
203 |
SCockpit *cockpit = node->Data();
|
203 |
SCockpit *cockpit = node->Data();
|
204 |
values += Utils::String("CockpitNew: ") + (long)cockpit->lWeaponMask.size();
|
204 |
values += Utils::WString(L"CockpitNew: ") + (long)cockpit->lWeaponMask.size();
|
205 |
for ( CListNode<SWeaponMask> *wNode = cockpit->lWeaponMask.Front(); wNode; wNode = wNode->next() ) {
|
205 |
for ( CListNode<SWeaponMask> *wNode = cockpit->lWeaponMask.Front(); wNode; wNode = wNode->next() ) {
|
206 |
values += ":";
|
206 |
values += L":";
|
207 |
values += (long)wNode->Data()->iGame;
|
207 |
values += (long)wNode->Data()->iGame;
|
208 |
values += ":";
|
208 |
values += L":";
|
209 |
values += (long)wNode->Data()->iMask;
|
209 |
values += (long)wNode->Data()->iMask;
|
210 |
}
|
210 |
}
|
211 |
values += " ";
|
211 |
values += L" ";
|
212 |
values += cockpit->sCockpit + "\n";
|
212 |
values += cockpit->sCockpit.toWString() + L"\n";
|
213 |
}
|
213 |
}
|
214 |
|
214 |
|
215 |
for ( CListNode<SText> *tNode = m_lText.Front(); tNode; tNode = tNode->next() )
|
215 |
for ( CListNode<SText> *tNode = m_lText.Front(); tNode; tNode = tNode->next() )
|
216 |
values += Utils::String("Text: ") + (long)tNode->Data()->iId + "|" + tNode->Data()->sName.findReplace("|", "<::PiPe::>") + "|" + tNode->Data()->sDesc + "\n";
|
216 |
values += Utils::WString(L"Text: ") + (long)tNode->Data()->iId + L"|" + tNode->Data()->sName.toWString().findReplace(L"|", L"<::PiPe::>") + L"|" + tNode->Data()->sDesc.toWString() + L"\n";
|
217 |
|
217 |
|
218 |
for ( CListNode<SComponent> *cNode = m_lComponent.Front(); cNode; cNode = cNode->next() )
|
218 |
for ( CListNode<SComponent> *cNode = m_lComponent.Front(); cNode; cNode = cNode->next() )
|
219 |
values += "Component: " + cNode->Data()->sData.findReplace("|", "<::PiPe::>") + "|" + cNode->Data()->sSection.findReplace("|", "<::PiPe::>") + "|" + cNode->Data()->sSection2 + "\n";
|
219 |
values += L"Component: " + cNode->Data()->sData.toWString().findReplace(L"|", L"<::PiPe::>") + L"|" + cNode->Data()->sSection.toWString().findReplace(L"|", L"<::PiPe::>") + L"|" + cNode->Data()->sSection2.toWString() + L"\n";
|
220 |
|
220 |
|
221 |
for ( CListNode<SDummy> *dNode = m_lDummy.Front(); dNode; dNode = dNode->next() )
|
221 |
for ( CListNode<SDummy> *dNode = m_lDummy.Front(); dNode; dNode = dNode->next() )
|
222 |
values += "Dummy: " + dNode->Data()->sData.findReplace("|", "<::PiPe::>") + "|" + dNode->Data()->sSection + "\n";
|
222 |
values += L"Dummy: " + dNode->Data()->sData.toWString().findReplace(L"|", L"<::PiPe::>") + L"|" + dNode->Data()->sSection.toWString() + L"\n";
|
223 |
|
223 |
|
224 |
for ( CListNode<SWeaponMask> *wNode = m_lWeaponMasks.Front(); wNode; wNode = wNode->next() )
|
224 |
for ( CListNode<SWeaponMask> *wNode = m_lWeaponMasks.Front(); wNode; wNode = wNode->next() )
|
225 |
values += Utils::String("WeaponMask: ") + (long)wNode->Data()->iGame + " " + (long)wNode->Data()->iMask + "\n";
|
225 |
values += Utils::WString(L"WeaponMask: ") + (long)wNode->Data()->iGame + L" " + (long)wNode->Data()->iMask + L"\n";
|
226 |
for ( CListNode<SWeaponMask> *mNode = m_lMissileMasks.Front(); mNode; mNode = mNode->next() )
|
226 |
for ( CListNode<SWeaponMask> *mNode = m_lMissileMasks.Front(); mNode; mNode = mNode->next() )
|
227 |
values += Utils::String("MissileMask: ") + (long)mNode->Data()->iGame + " " + (long)mNode->Data()->iMask + "\n";
|
227 |
values += Utils::WString(L"MissileMask: ") + (long)mNode->Data()->iGame + L" " + (long)mNode->Data()->iMask + L"\n";
|
228 |
for (auto itr = _lCutData.begin(); itr != _lCutData.end(); itr++)
|
228 |
for (auto itr = _lCutData.begin(); itr != _lCutData.end(); itr++)
|
229 |
values += "CutData: " + (*itr)->str + "\n";
|
229 |
values += L"CutData: " + (*itr)->str.toWString() + L"\n";
|
230 |
for (auto itr = _lBodies.begin(); itr != _lBodies.end(); itr++)
|
230 |
for (auto itr = _lBodies.begin(); itr != _lBodies.end(); itr++)
|
231 |
values += "Bodies: " + (*itr)->str + "\n";
|
231 |
values += L"Bodies: " + (*itr)->str.toWString() + L"\n";
|
232 |
for (auto itr = _lAnimations.begin(); itr != _lAnimations.end(); itr++)
|
232 |
for (auto itr = _lAnimations.begin(); itr != _lAnimations.end(); itr++)
|
233 |
values += "Animations: " + (*itr)->str + "\n";
|
233 |
values += L"Animations: " + (*itr)->str.toWString() + L"\n";
|
234 |
|
234 |
|
235 |
return values;
|
235 |
return values;
|
236 |
}
|
236 |
}
|
237 |
|
237 |
|
238 |
bool CXspFile::ParseValueLine(const Utils::String &sLine)
|
238 |
bool CXspFile::parseValueLine(const Utils::WString &sLine)
|
239 |
{
|
239 |
{
|
240 |
Utils::String first = sLine.token(":", 1);
|
240 |
Utils::WString first = sLine.token(L":", 1);
|
241 |
Utils::String rest = sLine.tokens(":", 2).removeFirstSpace();
|
241 |
Utils::WString rest = sLine.tokens(L":", 2).removeFirstSpace();
|
242 |
|
242 |
|
243 |
if ( first.Compare("Data") )
|
243 |
if ( first.Compare(L"Data") )
|
244 |
m_sData = rest;
|
244 |
m_sData = rest.toString();
|
245 |
else if ( first.Compare("ID") )
|
245 |
else if ( first.Compare(L"ID") )
|
246 |
m_sID = rest;
|
246 |
m_sID = rest.toString();
|
247 |
else if ( sLine.Compare("LanguageText") )
|
247 |
else if ( sLine.Compare(L"LanguageText") )
|
248 |
m_bLanguageText = true;
|
248 |
m_bLanguageText = true;
|
249 |
else if ( sLine.Compare("ExistingShip") )
|
249 |
else if ( sLine.Compare(L"ExistingShip") )
|
250 |
m_bExistingShip = true;
|
250 |
m_bExistingShip = true;
|
251 |
else if ( first.Compare("OrgDesc") || first.Compare("OriginalDesc") )
|
251 |
else if ( first.Compare(L"OrgDesc") || first.Compare(L"OriginalDesc") )
|
252 |
m_iOrgDesc = rest;
|
252 |
m_iOrgDesc = rest;
|
253 |
else if ( first.Compare("Shipyard") )
|
253 |
else if ( first.Compare(L"Shipyard") )
|
254 |
m_iShipyard = rest;
|
254 |
m_iShipyard = rest;
|
255 |
else if ( first.Compare("CutData") )
|
255 |
else if ( first.Compare(L"CutData") )
|
256 |
this->addCutData(rest);
|
256 |
this->addCutData(rest.toString());
|
257 |
else if ( first.Compare("Bodies") )
|
257 |
else if ( first.Compare(L"Bodies") )
|
258 |
this->addBodies(rest);
|
258 |
this->addBodies(rest.toString());
|
259 |
else if ( first.Compare("Animations") )
|
259 |
else if ( first.Compare(L"Animations") )
|
260 |
this->addAnimation(rest);
|
260 |
this->addAnimation(rest.toString());
|
261 |
else if ( first.Compare("Cockpit") )
|
261 |
else if ( first.Compare(L"Cockpit") )
|
262 |
this->AddCockpit(rest, 0);
|
262 |
this->AddCockpit(rest.toString(), 0);
|
263 |
else if ( first.Compare("CockpitNew") )
|
263 |
else if ( first.Compare(L"CockpitNew") )
|
264 |
{
|
264 |
{
|
265 |
Utils::String cockpit = rest.tokens(" ", 2);
|
265 |
Utils::WString cockpit = rest.tokens(L" ", 2);
|
266 |
Utils::String sMasks = rest.token(" ", 1);
|
266 |
Utils::WString sMasks = rest.token(L" ", 1);
|
267 |
this->AddCockpit(cockpit, 0, -1);
|
267 |
this->AddCockpit(cockpit.toString(), 0, -1);
|
268 |
int num = sMasks.token(":", 1);
|
268 |
int num = sMasks.token(L":", 1);
|
269 |
for ( int i = 0; i < num; i++ )
|
269 |
for ( int i = 0; i < num; i++ )
|
270 |
{
|
270 |
{
|
271 |
int mask = sMasks.token(":", ((i + 1) * 2) + 1);
|
271 |
int mask = sMasks.token(L":", ((i + 1) * 2) + 1);
|
272 |
int game = sMasks.token(":", ((i + 1) * 2));
|
272 |
int game = sMasks.token(L":", ((i + 1) * 2));
|
273 |
this->AddCockpit(cockpit, game, mask);
|
273 |
this->AddCockpit(cockpit.toString(), game, mask);
|
274 |
}
|
274 |
}
|
275 |
}
|
275 |
}
|
276 |
else if ( first == "Web" ) this->setWebSite(rest);
|
276 |
else if ( first == L"Web" ) this->setWebSite(rest);
|
277 |
else if ( first.Compare("WeaponMask") )
|
277 |
else if ( first.Compare(L"WeaponMask") )
|
278 |
this->AddWeaponMask(rest.token(" ", 1), rest.token(" ", 2));
|
278 |
this->AddWeaponMask(rest.token(L" ", 1), rest.token(L" ", 2));
|
279 |
else if ( first.Compare("MissileMask") )
|
279 |
else if ( first.Compare(L"MissileMask") )
|
280 |
this->AddMissileMask(rest.token(" ", 1), rest.token(" ", 2));
|
280 |
this->AddMissileMask(rest.token(L" ", 1), rest.token(L" ", 2));
|
281 |
else if ( first == "Text" )
|
281 |
else if ( first == L"Text" )
|
282 |
{
|
282 |
{
|
283 |
SText *text = new SText;
|
283 |
SText *text = new SText;
|
284 |
text->iId = rest.token("|", 1);
|
284 |
text->iId = rest.token(L"|", 1);
|
285 |
text->sName = rest.token("|", 2);
|
285 |
text->sName = rest.token(L"|", 2).toString();
|
286 |
text->sName = text->sName.findReplace("<::PiPe::>", "|");
|
286 |
text->sName = text->sName.findReplace(L"<::PiPe::>", L"|");
|
287 |
text->sDesc = rest.tokens( "|", 3);
|
287 |
text->sDesc = rest.tokens(L"|", 3).toString();
|
288 |
m_lText.push_back ( text );
|
288 |
m_lText.push_back ( text );
|
289 |
}
|
289 |
}
|
290 |
else if ( first == "Component" )
|
290 |
else if ( first == L"Component" )
|
291 |
{
|
291 |
{
|
292 |
SComponent *c = new SComponent;
|
292 |
SComponent *c = new SComponent;
|
293 |
c->sData = rest.token("|", 1);
|
293 |
c->sData = rest.token(L"|", 1).toString();
|
294 |
c->sData = c->sData.findReplace ("<::PiPe::>", "|");
|
294 |
c->sData = c->sData.findReplace (L"<::PiPe::>", L"|");
|
295 |
c->sSection = rest.token("|", 2);
|
295 |
c->sSection = rest.token(L"|", 2).toString();
|
296 |
c->sSection = c->sSection.findReplace ("<::PiPe::>", "|");
|
296 |
c->sSection = c->sSection.findReplace (L"<::PiPe::>", L"|");
|
297 |
c->sSection2 = rest.tokens("|", 3);
|
297 |
c->sSection2 = rest.tokens(L"|", 3).toString();
|
298 |
m_lComponent.push_back ( c );
|
298 |
m_lComponent.push_back ( c );
|
299 |
}
|
299 |
}
|
300 |
else if ( first == "Dummy" )
|
300 |
else if ( first == L"Dummy" )
|
301 |
{
|
301 |
{
|
302 |
SDummy *d = new SDummy;
|
302 |
SDummy *d = new SDummy;
|
303 |
d->sData = rest.token("|", 1);
|
303 |
d->sData = rest.token(L"|", 1).toString();
|
304 |
d->sData = d->sData.findReplace ("<::PiPe::>", "|");
|
304 |
d->sData = d->sData.findReplace (L"<::PiPe::>", L"|");
|
305 |
d->sSection = rest.tokens( "|", 2);
|
305 |
d->sSection = rest.tokens(L"|", 2).toString();
|
306 |
m_lDummy.push_back ( d );
|
306 |
m_lDummy.push_back ( d );
|
307 |
}
|
307 |
}
|
308 |
else if ( first == "Comment" ) this->setDescription(rest.findReplace("<newline>", "<br>"));
|
308 |
else if ( first == L"Comment" ) this->setDescription(rest.findReplace(L"<newline>", L"<br>"));
|
309 |
else
|
309 |
else
|
310 |
return CBaseFile::ParseValueLine(sLine);
|
310 |
return CBaseFile::parseValueLine(sLine);
|
311 |
|
311 |
|
312 |
return true;
|
312 |
return true;
|
313 |
}
|
313 |
}
|
314 |
|
314 |
|
315 |
Utils::WString CXspFile::shipName(int lang)
|
315 |
Utils::WString CXspFile::shipName(int lang)
|
Line 635... |
Line 635... |
635 |
SDummy *d = new SDummy;
|
635 |
SDummy *d = new SDummy;
|
636 |
d->sData = rest.tokens(";", 2);
|
636 |
d->sData = rest.tokens(";", 2);
|
637 |
d->sSection = rest.token(";", 1);
|
637 |
d->sSection = rest.token(";", 1);
|
638 |
m_lDummy.push_back ( d );
|
638 |
m_lDummy.push_back ( d );
|
639 |
}
|
639 |
}
|
640 |
else if ( !this->ParseValueLine(line) )
|
640 |
else if ( !this->parseValueLine(line) )
|
641 |
{
|
641 |
{
|
642 |
// printf ( "Command: %s, Rest: %s\n", first.c_str(), rest.c_str());
|
642 |
// printf ( "Command: %s, Rest: %s\n", first.c_str(), rest.c_str());
|
643 |
}
|
643 |
}
|
644 |
|
644 |
|
645 |
pos = start;
|
645 |
pos = start;
|