Subversion Repositories spk

Rev

Rev 213 | Rev 226 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 cycrow 1
#include <spk.h>
218 cycrow 2
#include <CyString.h>
1 cycrow 3
 
4
void Error()
5
{
6
#ifdef _DEBUG
7
	char pause;
8
	scanf ( "%s", &pause );
9
#endif
10
	exit(1);
11
}
12
/*
13
	Main entry point to program
14
*/
15
int main ( int argc, char **argv )
16
{
17
	printf ( "XModPatch V1.00 (SPK Library Version %.2f) 01/04/2011 Created by Cycrow\n\n", (float)GetLibraryVersion() );
18
 
196 cycrow 19
	Utils::WString cmd (argv[0]);
20
	Utils::WString dir = CFileIO(cmd).dir();
102 cycrow 21
	cmd = CFileIO(cmd).filename();
1 cycrow 22
 
23
	bool verbose = false;
24
 
25
	if ( argc < 3 )
26
	{
196 cycrow 27
		wprintf ( L"Syntax: %s <modfile.cat> <diff file> [gamedirectory]\n", cmd.c_str() );
28
		wprintf ( L"\t<modfile.cat>:\t\tThe mod file you want to create/add to\n" );
29
		wprintf ( L"\t<diff file>:\t\tThe file to to read from\n" );
30
		wprintf ( L"\t[gamedirectory]:\tThe game directory to compare the mod against, without this will assume current directory\n" );
1 cycrow 31
	}
32
	else
33
	{
34
	// check for switches
35
		int startPos = 1;
36
		for ( startPos = 1; startPos < argc; startPos++ )
37
		{
38
			CyString checkFlags(argv[startPos]);
39
			if ( !checkFlags.Left(1).Compare("-") )
40
				break;
41
 
42
			if ( checkFlags.Left(2) != "--" ) // not a single long flag (compare each character
43
			{
44
				checkFlags.ToLower();
45
				for ( unsigned int i = 1; i < checkFlags.Length(); i++ )
46
				{
47
					switch (checkFlags[i])
48
					{
49
						case 'v':
50
							verbose = true;
51
							break;
52
					}
53
				}
54
			}
55
			else if ( checkFlags.Compare("--verbose") )
56
				verbose = true;
57
		}
58
 
185 cycrow 59
		Utils::String modfile(argv[startPos]);
60
		Utils::String difffile(argv[startPos + 1]);
196 cycrow 61
		Utils::WString gamedir;
1 cycrow 62
		if ( argc > 3 ) gamedir = argv[startPos + 2];
213 cycrow 63
		if ( gamedir.empty() ) gamedir = L".";
102 cycrow 64
		gamedir = CFileIO(gamedir).fullFilename();
1 cycrow 65
 
213 cycrow 66
		CModDiff Diff(gamedir.toString(), L"addon");
1 cycrow 67
		if ( !Diff.IsLoaded() ) 
68
		{
196 cycrow 69
			wprintf  (L"Error: Unable to load game directory, %s\n", gamedir.c_str());
1 cycrow 70
			Error();
71
		}
72
 
185 cycrow 73
		Diff.ApplyMod(modfile);
1 cycrow 74
 
196 cycrow 75
		wprintf ( L"Game Directory: '%s' loaded\n", gamedir.c_str());
185 cycrow 76
		if ( !Diff.ReadDiff(difffile) )
1 cycrow 77
		{
78
			printf ("Error: Unable to load diff file, %s\n", difffile.c_str());
79
			Error();
80
		}
81
 
185 cycrow 82
		if ( !Diff.ApplyDiff(modfile) )
1 cycrow 83
		{
84
			printf ("Error: Unable to write to mod file, %s\n", modfile.c_str());
85
			Error();
86
		}
87
 
88
		printf("Diff has been applied to mod, %s\n", modfile.c_str());
89
	}
90
 
91
#ifdef _DEBUG
92
	char pause;
93
	scanf ( "%s", &pause );
94
#endif
95
	return 0;
96
}