Subversion Repositories spk

Rev

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

Rev 125 Rev 128
Line 16... Line 16...
16
						m_sFailed = "Reading";
16
						m_sFailed = "Reading";
17
				}
17
				}
18
				else
18
				else
19
				{
19
				{
20
					if ( m_iGame != -1 ) {
20
					if ( m_iGame != -1 ) {
21
						if ( m_pWorkingFile->GetGame() && m_pWorkingFile->GetGame() != m_iGame ) {
21
						if ( m_pWorkingFile->game() && !(m_pWorkingFile-&gt;game() & (1 << m_iGame))) {
22
							m_iWorkingStatus = WORKER_WRITE;
22
							m_iWorkingStatus = WORKER_WRITE;
23
							break;
23
							break;
24
						}
24
						}
25
						else if ( !m_iGame && m_pWorkingFile->GetGame() ) {
25
						else if ( !m_iGame && m_pWorkingFile->game() ) {
26
							m_iWorkingStatus = WORKER_WRITE;
26
							m_iWorkingStatus = WORKER_WRITE;
27
							break;
27
							break;
28
						}
28
						}
29
					}
29
					}
30
 
30
 
Line 46... Line 46...
46
					}
46
					}
47
				}
47
				}
48
				break;
48
				break;
49
			case WORKER_WRITE:
49
			case WORKER_WRITE:
50
				{
50
				{
51
					CyString sToDir = CyStringFromSystemString(m_sToDir);
51
					Utils::String sToDir = _S(m_sToDir);
52
					if ( m_pMultiPackage )
52
					if ( m_pMultiPackage )
53
					{
53
					{
54
						if ( !m_pMultiPackage->ExtractFile(m_pWorkingPackage, sToDir) )
54
						if ( !m_pMultiPackage->ExtractFile(m_pWorkingPackage, sToDir) )
55
							m_sFailed = "Writing";
55
							m_sFailed = "Writing";
56
					}
56
					}
57
					else
57
					else
58
					{
58
					{
-
 
59
						// check for addon directory
59
						if ( !CDirIO(sToDir + "/" + m_pWorkingFile->GetDirectory(NULL)).exists() )
60
						if (m_pWorkingFile->isFileInAddon())
60
						{
61
						{
-
 
62
							unsigned int game = m_iGame;
-
 
63
							if (game <= 0)
-
 
64
							{
-
 
65
								unsigned int checkGame = m_pWorkingFile->game() & ~GAME_ALLNEW;
-
 
66
								for (int i = 0; i < 31; ++i)
-
 
67
								{
-
 
68
									if (checkGame == (1 << i))
-
 
69
									{
-
 
70
										game = i;
-
 
71
										break;
-
 
72
									}
-
 
73
								}
-
 
74
							}
-
 
75
 
-
 
76
							if (game > 0)
-
 
77
							{
-
 
78
								SGameExe *exe = _pPackages->GetGameExe()->GetGame(game - 1);
-
 
79
								if (exe && !exe->sAddon.empty())
-
 
80
									sToDir += "/" + exe->sAddon;
-
 
81
							}
-
 
82
						}
-
 
83
 
-
 
84
						if ( !CDirIO(sToDir + "/" + m_pWorkingFile->getDirectory(NULL)).exists() )
-
 
85
						{
61
							if ( !CDirIO(sToDir + "/" + m_pWorkingFile->GetDirectory(NULL)).Create() )
86
							if ( !CDirIO(sToDir + "/" + m_pWorkingFile->getDirectory(NULL)).Create() )
62
							{
87
							{
63
								m_sFailed = "Creating Directory";
88
								m_sFailed = "Creating Directory";
64
								break;
89
								break;
65
							}
90
							}
66
						}
91
						}
67
 
92
 
68
						if ( !m_pWorkingFile->WriteToFile(CFileIO(sToDir + "/" + m_pWorkingFile->GetNameDirectory(NULL)).fullFilename(), m_pUncompressData, m_iUncompressSize) )
93
						if ( !m_pWorkingFile->WriteToFile(CFileIO(sToDir + "/" + m_pWorkingFile->getNameDirectory(NULL)).fullFilename(), m_pUncompressData, m_iUncompressSize) )
69
							m_sFailed = "Writing";
94
							m_sFailed = "Writing";
70
						else
95
						else
71
							m_iExtractCount++;
96
							m_iExtractCount++;
72
					}
97
					}
73
				}
98
				}