Subversion Repositories spk

Rev

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

Rev 164 Rev 166
Line 630... Line 630...
630
				}
630
				}
631
			}
631
			}
632
		}
632
		}
633
	}
633
	}
634
 
634
 
-
 
635
	readAvailablePackages();
-
 
636
 
635
	// check the purged time
637
	// check the purged time
636
	this->PurgeGameObjects();
638
	this->PurgeGameObjects();
637
 
639
 
638
	m_bLoaded = true;
640
	m_bLoaded = true;
639
 
641
 
Line 9159... Line 9161...
9159
			return true;
9161
			return true;
9160
		m_lAvailablePackages.remove(p);
9162
		m_lAvailablePackages.remove(p);
9161
	}
9163
	}
9162
 
9164
 
9163
	m_lAvailablePackages.push_back(package); 
9165
	m_lAvailablePackages.push_back(package); 
9164
 
-
 
-
 
9166
	saveAvailablePackages();
9165
	return true;
9167
	return true;
9166
}
9168
}
9167
 
9169
 
-
 
9170
void CPackages::saveAvailablePackages()
-
 
9171
{
-
 
9172
	std::vector<Utils::String> lines;
-
 
9173
 
-
 
9174
	lines.push_back("Version;1;" + Utils::String::Number(m_lAvailablePackages.size()));
-
 
9175
 
-
 
9176
	for (auto itr = m_lAvailablePackages.First(); itr; itr = m_lAvailablePackages.Next())
-
 
9177
	{
-
 
9178
		Utils::String l = "Package";
-
 
9179
		l += ";" + itr->sName.findReplace(";", ":&COL&:");
-
 
9180
		l += ";" + itr->sAuthor.findReplace(";", ":&COL&:");
-
 
9181
		l += ";" + itr->sVersion.findReplace(";", ":&COL&:");
-
 
9182
		l += ";" + itr->sFilename;
-
 
9183
		l += ";" + itr->sDesc.findReplace(";", ":&COL&:");
-
 
9184
		l += ";" + itr->sUpdated;
-
 
9185
 
-
 
9186
		l += ";" + Utils::String::Number(itr->lGames.size());
-
 
9187
 
-
 
9188
		for (auto g = itr->lGames.First(); g; g = itr->lGames.Next())
-
 
9189
			l += ";" + Utils::String::Number(g->iGame) + ";" + Utils::String::Number(g->iVersion) + ";" + g->sVersion;
-
 
9190
 
-
 
9191
		l += ";" + Utils::String::Number(itr->iType);
-
 
9192
		l += ";" + Utils::String::Number(itr->iPluginType);
-
 
9193
		l += ";" + Utils::String::Number(itr->iScriptType);
-
 
9194
		l += ";" + Utils::String::Number(itr->iChanging);
-
 
9195
		l += ";" + Utils::String::Number(itr->iEase);
-
 
9196
		l += ";" + Utils::String::Number(itr->iRec);
-
 
9197
		l += itr->bSigned ? ";1" : ";0";
-
 
9198
 
-
 
9199
		lines.push_back(l);
-
 
9200
	}
-
 
9201
 
-
 
9202
	// write out the file
-
 
9203
	CDirIO dir(m_sCurrentDir + "/PluginManager");
-
 
9204
	if (!dir.exists())
-
 
9205
		dir.create();
-
 
9206
	CFileIO file(dir.file("packagecache.new"));
-
 
9207
	if (file.writeFile(&lines))
-
 
9208
	{
-
 
9209
		if (CFileIO::Exists(dir.file("packagecache.new")))
-
 
9210
		{
-
 
9211
			if (CFileIO::Exists(dir.file("packagecache.dat")))
-
 
9212
				CFileIO::Remove(dir.file("packagecache.dat"));
-
 
9213
			file.Rename(dir.file("packagecache.dat"));
-
 
9214
		}
-
 
9215
	}
-
 
9216
}
-
 
9217
 
-
 
9218
void CPackages::readAvailablePackages()
-
 
9219
{
-
 
9220
	m_lAvailablePackages.MemoryClear();
-
 
9221
 
-
 
9222
	CDirIO dir(m_sCurrentDir + "/PluginManager");
-
 
9223
	CFileIO file(dir.file("packagecache.dat"));
-
 
9224
 
-
 
9225
	if (file.exists())
-
 
9226
	{
-
 
9227
 
-
 
9228
		size_t version = 0;
-
 
9229
		size_t count = 0;
-
 
9230
		std::vector<Utils::String> lines;
-
 
9231
		if (file.readLines(lines))
-
 
9232
		{
-
 
9233
			for (auto itr = lines.begin(); itr != lines.end(); itr++)
-
 
9234
			{
-
 
9235
				Utils::String cmd = itr->token(";", 1);
-
 
9236
				if (cmd == "Version")
-
 
9237
				{
-
 
9238
					version = itr->token(";", 2).toInt();
-
 
9239
					count = itr->token(";", 3).toInt();
-
 
9240
				}
-
 
9241
				else if (cmd == "Package")
-
 
9242
				{
-
 
9243
					int max = 0;
-
 
9244
					Utils::String *str = itr->tokenise(";", &max);
-
 
9245
 
-
 
9246
					SAvailablePackage* package = new SAvailablePackage;
-
 
9247
					int pos = 1;
-
 
9248
					package->sName = str[pos++].findReplace(":&COL&:", ";");
-
 
9249
					package->sAuthor = str[pos++].findReplace(":&COL&:", ";");
-
 
9250
					package->sVersion = str[pos++].findReplace(":&COL&:", ";");
-
 
9251
					package->sFilename = str[pos++].findReplace(":&COL&:", ";");
-
 
9252
					package->sDesc = str[pos++].findReplace(":&COL&:", ";");
-
 
9253
					package->sUpdated = str[pos++].findReplace(":&COL&:", ";");
-
 
9254
 
-
 
9255
					size_t games = str[pos++].toInt();
-
 
9256
					for (size_t i = 0; i < games; i++)
-
 
9257
					{
-
 
9258
						SGameCompat* g = new SGameCompat;
-
 
9259
						g->iGame = str[pos++].toInt();
-
 
9260
						g->iVersion = str[pos++].toInt();
-
 
9261
						g->sVersion = str[pos++];
-
 
9262
						package->lGames.push_back(g);
-
 
9263
					}
-
 
9264
 
-
 
9265
					package->iType = str[pos++].toInt();
-
 
9266
					package->iPluginType = str[pos++].toInt();
-
 
9267
					package->iScriptType = str[pos++].toInt();
-
 
9268
					package->iChanging = str[pos++].toInt();
-
 
9269
					package->iEase = str[pos++].toInt();
-
 
9270
					package->iRec = str[pos++].toInt();
-
 
9271
					package->bSigned = (str[pos] == "1");
-
 
9272
 
-
 
9273
					CLEANSPLIT(str, max);
-
 
9274
 
-
 
9275
					addAvailablePackage(package);
-
 
9276
				}
-
 
9277
			}
-
 
9278
		}
-
 
9279
	}
-
 
9280
}
-
 
9281
 
9168
bool CPackages::AnyAvailablePackages(int type)
9282
bool CPackages::AnyAvailablePackages(int type)
9169
{
9283
{
9170
	if ( type == -1 ) return !m_lAvailablePackages.empty();
9284
	if ( type == -1 ) return !m_lAvailablePackages.empty();
9171
 
9285
 
9172
	for ( CListNode<SAvailablePackage> *node = m_lAvailablePackages.Front(); node; node = node->next() )
9286
	for ( CListNode<SAvailablePackage> *node = m_lAvailablePackages.Front(); node; node = node->next() )