Subversion Repositories spk

Rev

Rev 206 | Rev 210 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 206 Rev 207
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::&gt;&quot;) + "|&quot; + tNode->Data()->sDesc + "\n";
216
		values += Utils::WString(L"Text: ") + (long)tNode->Data()->iId + L"|" + tNode->Data()->sName.toWString().findReplace(L"|", L"<::PiPe::&gt;") + L&quot;|&quot; + 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::&gt;") + "|&quot; + cNode->Data()->sSection.findReplace("|", "<::PiPe::>") + "|" + cNode-&gt;Data()->sSection2 + "\n";
219
		values += L"Component: " + cNode->Data()->sData.toWString().findReplace(L"|", L"<::PiPe::>") + L"|" + cNode->Data()->sSection.toWString().findReplace(L";|", L"<;::PiPe::&gt;") + L"|&quot; + cNode-&gt;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::&gt;&quot;) + "|&quot; + dNode->Data()->sSection + "\n";
222
		values += L"Dummy: " + dNode->Data()->sData.toWString().findReplace(L"|", L"<::PiPe::&gt;") + L&quot;|&quot; + 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;