Subversion Repositories spk

Rev

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

Rev 172 Rev 173
Line 1721... Line 1721...
1721
	{
1721
	{
1722
		CFileIO F(CyStringFromSystemString(file));
1722
		CFileIO F(CyStringFromSystemString(file));
1723
		if ( !F.exists() )
1723
		if ( !F.exists() )
1724
			return;
1724
			return;
1725
 
1725
 
1726
		CyStringList *lines = F.ReadLinesStr();
1726
		std::vector<Utils::String> lines;
1727
		if ( !lines )
1727
		if(!F.readLines(lines))
1728
			return;
1728
			return;
1729
 
1729
 
1730
		LoadShip ^load = gcnew LoadShip();
1730
		LoadShip ^load = gcnew LoadShip();
1731
 
1731
 
1732
		int entryPos = 1;
1732
		int entryPos = 1;
1733
		int dataPos = 1;
1733
		int dataPos = 1;
1734
		int dataPos2 = 0;
1734
		int dataPos2 = 0;
1735
		bool sections = false;
1735
		bool sections = false;
1736
		CyString section;
1736
		Utils::String section;
1737
		switch ( type )
1737
		switch ( type )
1738
		{
1738
		{
1739
			case 2:
1739
			case 2:
1740
				entryPos = 2;
1740
				entryPos = 2;
1741
				dataPos = 19;
1741
				dataPos = 19;
Line 1764... Line 1764...
1764
				break;
1764
				break;
1765
		}
1765
		}
1766
 
1766
 
1767
		int entries2 = 0;
1767
		int entries2 = 0;
1768
		int entries = -1;
1768
		int entries = -1;
1769
		CyStringList list;
1769
		Utils::CStringList list;
1770
		CyString data;
1770
		Utils::String data;
1771
		int e = 0;
1771
		int e = 0;
1772
		for ( SStringList *str = lines->Head(); str; str = str->;next )
1772
		for(auto itr = lines.begin(); itr != lines.end(); itr++)
1773
		{
1773
		{
1774
			str->str.RemoveChar(9);
-
 
1775
			str->str.RemoveChar('\r');
1774
			Utils::String str = itr->remove(9).remove('\r');
1776
			str->str.RemoveFirstSpace();
1775
			str = str.removeFirstSpace();
1777
			if ( str->str.Empty() )
1776
			if (str.empty())
1778
				continue;
1777
				continue;
1779
			if ( str->str[0] == &apos;/' )
1778
			if (str[0] == &apos;/')
1780
				continue;
1779
				continue;
1781
 
1780
 
1782
			if ( entries == -1 || (entries <= 0 && sections) )
1781
			if ( entries == -1 || (entries <= 0 && sections) )
1783
			{
1782
			{
1784
				entries = str->str.GetToken(";", entryPos, entryPos).ToInt();
1783
				entries = str.token(";", entryPos).toInt();
1785
				if ( sections )
1784
				if ( sections )
1786
				{
1785
				{
1787
					section = str->str.GetToken(";", 1, 1);
1786
					section = str.token(";", 1);
1788
					load->AddGroup(SystemStringFromCyString(section));
1787
					load->AddGroup(_US(section));
1789
				}
1788
				}
1790
			}
1789
			}
1791
			else
1790
			else
1792
			{
1791
			{
1793
				if ( type == 4 )
1792
				if ( type == 4 )
1794
				{
1793
				{
1795
					int max;
1794
					int max;
1796
					CyString *strs = str->str.SplitToken(";", &max);
1795
					Utils::String *strs = str.tokenise(";", &max);
1797
					if ( max && strs )
1796
					if ( max && strs )
1798
					{
1797
					{
1799
						for ( int i = 0; i < max; i++ )
1798
						for ( int i = 0; i < max; i++ )
1800
						{
1799
						{
1801
							strs[i].RemoveFirstSpace();
1800
							strs[i].removeFirstSpace();
1802
							if ( strs[i].Empty() ) continue;
1801
							if ( strs[i].empty() ) continue;
1803
							CyString id = strs[i].GetToken(";", dataPos, dataPos);
1802
							Utils::String id = strs[i].token(";", dataPos);
1804
							load->AddShip(SystemStringFromCyString(id), "");
1803
							load->AddShip(_US(id), "");
1805
							list.PushBack(id, CyString::Number(e) + " " + section + ";" + strs[i]);
1804
							list.pushBack(id, Utils::String::Number(e) + " " + section + ";" + strs[i]);
1806
							++e;
1805
							++e;
1807
							--entries;
1806
							--entries;
1808
						}
1807
						}
1809
					}
1808
					}
1810
 
1809
 
Line 1812... Line 1811...
1812
				}
1811
				}
1813
				else if ( type == 0 )
1812
				else if ( type == 0 )
1814
				{
1813
				{
1815
					if ( entries2 )
1814
					if ( entries2 )
1816
					{
1815
					{
1817
						load->AddShip(SystemStringFromCyString(data), SystemStringFromCyString(str->str));
1816
						load->AddShip(_US(data), _US(str));
1818
						list.PushBack(data, section + ";" + data + ";" + str->str);
1817
						list.pushBack(data, section + ";" + data + ";" + str);
1819
						--entries2;
1818
						--entries2;
1820
					}
1819
					}
1821
					else
1820
					else
1822
					{
1821
					{
1823
						data = str->str.GetToken(";", 1, 1);
1822
						data = str.token(";", 1);
1824
						entries2 = str->str.GetToken(";", 2, 2).ToInt();
1823
						entries2 = str.token(";", 2).toInt();
1825
						++e;
1824
						++e;
1826
						--entries;
1825
						--entries;
1827
					}
1826
					}
1828
				}
1827
				}
1829
				else
1828
				else
1830
				{
1829
				{
1831
					CyString id;
1830
					Utils::String id;
1832
					if ( dataPos == -1 )
1831
					if ( dataPos == -1 )
1833
						id = str->str; 
1832
						id = str; 
1834
					else
1833
					else
1835
						id = str->str.GetToken(";", dataPos, dataPos); 
1834
						id = str.token(";", dataPos); 
1836
 
1835
 
1837
					if ( dataPos2 )
1836
					if ( dataPos2 )
1838
						load->AddShip(SystemStringFromCyString(id), SystemStringFromCyString(str->str.GetToken(";", dataPos2, dataPos2)));
1837
						load->AddShip(_US(id), _US(str.token(";", dataPos2)));
1839
					else
1838
					else
1840
						load->AddShip(SystemStringFromCyString(id), "");
1839
						load->AddShip(_US(id), "");
1841
					if ( sections )
1840
					if ( sections )
1842
						list.PushBack(id, CyString::Number(e) + " " + section + ";" + str->str);
1841
						list.pushBack(id, Utils::String::Number(e) + " " + section + ";" + str);
1843
					else
1842
					else
1844
						list.PushBack(id, CyString::Number(e) + " " + str->str);
1843
						list.pushBack(id, Utils::String::Number(e) + " " + str);
1845
					++e;
1844
					++e;
1846
					--entries;
1845
					--entries;
1847
				}
1846
				}
1848
			}
1847
			}
1849
		}
1848
		}
1850
 
1849
 
1851
		if ( load->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1850
		if ( load->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1852
		{
1851
		{
1853
			for(auto itr = load->GetDataList()->begin(); itr != load->GetDataList()->end(); itr++)
1852
			for(auto itr = load->GetDataList()->begin(); itr != load->GetDataList()->end(); itr++)
1854
			{
1853
			{
1855
				SStringList *s = list.FindString((*itr)->str);
1854
				Utils::String data = list.findString((*itr)->str);
1856
				if ( s )
1855
				if (!data.empty())
1857
				{
1856
				{
1858
					switch ( type )
1857
					switch ( type )
1859
					{
1858
					{
1860
						case 0:
1859
						case 0:
1861
							((CXspFile *)m_pPackage)->AddComponent(s->data.GetToken(";", 1, 1).ToString(), s->data.GetToken(";", 2, 2).ToString(), s->data.GetToken(";", 3).ToString());
1860
							((CXspFile *)m_pPackage)->AddComponent(data.token(";", 1), data.token(";", 2), data.tokens(";", 3));
1862
							break;
1861
							break;
1863
						case 2:
1862
						case 2:
1864
							((CXspFile *)m_pPackage)->AddCockpit(s->data.GetToken(" ", 2).ToString(), 0, -1, s->data.GetToken(" ", 1, 1).ToInt());
1863
							((CXspFile *)m_pPackage)->AddCockpit(data.tokens(" ", 2), 0, -1, data.token(" ", 1).toInt());
1865
							break;
1864
							break;
1866
						case 3:
1865
						case 3:
1867
							((CXspFile *)m_pPackage)->addCutData(s->data.GetToken(" ", 2).ToString());
1866
							((CXspFile *)m_pPackage)->addCutData(data.tokens(" ", 2));
1868
							break;
1867
							break;
1869
						case 4:
1868
						case 4:
1870
							((CXspFile *)m_pPackage)->addBodies(s->data.GetToken(" ", 2).ToString());
1869
							((CXspFile *)m_pPackage)->addBodies(data.tokens(" ", 2));
1871
							break;
1870
							break;
1872
						case 1:
1871
						case 1:
1873
							((CXspFile *)m_pPackage)->AddDummy(s->data.GetToken(" ", 2).GetToken(";", 1, 1).ToString(), s-&gt;data.GetToken(" ";, 2).GetToken(";&quot;, 2).ToString());
1872
							((CXspFile *)m_pPackage)->AddDummy(data.tokens(&quot; ";, 2).token(";", 1), data.tokens(" &quot;, 2).tokens(";", 2));
1874
							break;
1873
							break;
1875
					}
1874
					}
1876
				}
1875
				}
1877
			}
1876
			}
1878
 
1877
 
1879
			this->UpdateShipPartList();
1878
			this->UpdateShipPartList();
1880
			this->UpdateChanged();
1879
			this->UpdateChanged();
1881
		}
1880
		}
1882
 
-
 
1883
		delete lines;
-
 
1884
	}
1881
	}
1885
 
1882
 
1886
	void PackageForm::ImportAnimations(String ^file)
1883
	void PackageForm::ImportAnimations(String ^file)
1887
	{
1884
	{
1888
		CFileIO F(_S(file));
1885
		CFileIO F(_S(file));