1
1
using MADSPack . Compression ;
2
2
using System ;
3
3
using System . Collections . Generic ;
4
+ using System . Diagnostics ;
4
5
using System . Drawing ;
5
6
using System . IO ;
6
- using System . Linq ;
7
- using System . Text ;
8
- using System . Threading . Tasks ;
9
7
10
8
namespace BatchExport
11
9
{
12
10
class Program
13
11
{
14
- static string exportFolder = @"C:\Users\AyCe\Desktop\ColoExport\" ;
15
- static string coloFolder = @"E:\Programme\CGN\Colonization" ;
16
-
17
12
static void Main ( string [ ] args )
18
13
{
14
+ try
15
+ {
16
+ Run ( args . Length == 0 ? null : args [ 0 ] ) ;
17
+ }
18
+ catch ( Exception e )
19
+ {
20
+ Console . WriteLine ( $ "Fatal error: { e } ") ;
21
+ }
22
+ Console . WriteLine ( "\n Press RETURN to close.\n " ) ;
23
+ Console . ReadLine ( ) ;
24
+ }
25
+
26
+ static void Run ( string folderColo )
27
+ {
28
+ if ( folderColo == null )
29
+ {
30
+ Console . WriteLine ( "Usage: drag & drop the Colonization folder on me. I will create 'ColoExport' in the current Working Directory. :)" ) ;
31
+ return ;
32
+ }
33
+
34
+ if ( ! Directory . Exists ( folderColo ) )
35
+ {
36
+ Console . WriteLine ( $ "Not a folder: { folderColo } ") ;
37
+ return ;
38
+ }
39
+
40
+ var folderTarget = Path . Combine ( Environment . CurrentDirectory , "ColoExport" ) ;
41
+
42
+ Directory . CreateDirectory ( folderTarget ) ;
43
+
44
+ new Program ( folderColo , folderTarget ) ;
45
+
46
+ // open in explorer
47
+ Process . Start ( folderTarget ) ;
48
+ }
49
+
50
+ private readonly string _folderColo , _folderTarget ;
51
+ private readonly List < string > _errorFiles = new List < string > ( ) ;
52
+
53
+ private Program ( string folderColo , string folderTarget )
54
+ {
55
+ _folderColo = folderColo ;
56
+ _folderTarget = folderTarget ;
19
57
20
- foreach ( var file in Directory . EnumerateFiles ( coloFolder ) )
58
+ var anyFilesProcessed = false ;
59
+
60
+ foreach ( var file in Directory . EnumerateFiles ( _folderColo ) )
21
61
{
22
62
var filenameLower = Path . GetFileName ( file ) . ToLowerInvariant ( ) ;
23
63
try
24
64
{
25
65
if ( filenameLower . EndsWith ( ".pik" ) )
26
66
{
67
+ anyFilesProcessed = true ;
27
68
ExportPik ( file , filenameLower ) ;
28
69
}
29
70
else if ( filenameLower . EndsWith ( ".ss" ) )
30
71
{
72
+ anyFilesProcessed = true ;
31
73
ExportSs ( file , filenameLower ) ;
32
74
}
33
- else if ( filenameLower . EndsWith ( ".ff" ) )
34
- {
35
- ExportFf ( file , filenameLower ) ;
36
- }
75
+ //else if (filenameLower.EndsWith(".ff"))
76
+ //{
77
+ // anyFilesProcessed = true;
78
+ // ExportFf(file, filenameLower);
79
+ //}
37
80
}
38
81
catch ( Exception e )
39
82
{
83
+ _errorFiles . Add ( filenameLower ) ;
40
84
Console . WriteLine ( $ "Error for '{ filenameLower } ': { e } ") ;
41
85
}
42
86
}
43
- Console . WriteLine ( "DONE" ) ;
87
+ Console . WriteLine ( ) ;
88
+ if ( ! anyFilesProcessed )
89
+ {
90
+ Console . WriteLine ( "No files found. :|" ) ;
91
+ }
92
+ else if ( _errorFiles . Count == 0 )
93
+ {
94
+ Console . WriteLine ( "Finished successfully! :)" ) ;
95
+ }
96
+ else
97
+ {
98
+ Console . WriteLine ( "Finished with errors. Press RETURN to view all files with errors..." ) ;
99
+ Console . ReadLine ( ) ;
100
+ foreach ( var file in _errorFiles )
101
+ {
102
+ Console . WriteLine ( file ) ;
103
+ }
104
+ }
105
+ Console . WriteLine ( "\n Press RETURN to view the folder." ) ;
44
106
Console . ReadLine ( ) ;
45
107
}
46
108
47
- static void ExportPik ( string file , string filenameLower )
109
+ void ExportPik ( string file , string filenameLower )
48
110
{
49
111
MadsPackReader r = new MadsPackReader ( file ) ;
50
- var pik = new MadsPackImagePIK ( r . getItems ( ) ) ;
51
- pik . pathtoCol = coloFolder ;
112
+ var pik = new MadsPackImagePIK ( r . getItems ( ) )
113
+ {
114
+ pathtoCol = _folderColo
115
+ } ;
52
116
using ( Bitmap bmp = pik . GetImage ( ) )
53
117
{
54
- bmp . Save ( exportFolder + filenameLower + ".png" , System . Drawing . Imaging . ImageFormat . Png ) ;
118
+ bmp . Save ( Path . Combine ( _folderTarget , filenameLower + ".png" ) , System . Drawing . Imaging . ImageFormat . Png ) ;
55
119
}
56
120
}
57
121
58
- static void ExportSs ( string file , string filenameLower )
122
+ void ExportSs ( string file , string filenameLower )
59
123
{
60
124
MadsPackReader r = new MadsPackReader ( file ) ;
61
- var ss = new MadsPackImageSS ( r . getItems ( ) , 0 ) ;
62
- ss . pathtoCol = coloFolder ;
125
+ var ss = new MadsPackImageSS ( r . getItems ( ) , 0 )
126
+ {
127
+ pathtoCol = _folderColo
128
+ } ;
63
129
var numImages = ss . getPictureCount ( ) ;
64
130
for ( int i = 0 ; i < numImages ; i ++ )
65
131
{
132
+ var filename = $ "{ filenameLower } _{ i } ";
66
133
try
67
134
{
68
135
using ( Bitmap bmp = ss . GetImage ( i ) )
69
136
{
70
- bmp . Save ( exportFolder + filenameLower + $ "_ { i } .png", System . Drawing . Imaging . ImageFormat . Png ) ;
137
+ bmp . Save ( Path . Combine ( _folderTarget , $ " { filename } .png") , System . Drawing . Imaging . ImageFormat . Png ) ;
71
138
}
72
139
}
73
140
catch ( Exception e )
74
141
{
75
- Console . WriteLine ( $ "Error for '{ filenameLower } _{ i } ': { e } ") ;
142
+ _errorFiles . Add ( filename ) ;
143
+ Console . WriteLine ( $ "Error for '{ filename } ': { e } ") ;
76
144
}
77
145
}
78
146
}
79
147
80
- static void ExportFf ( string file , string filenameLower )
81
- {
148
+ //void ExportFf(string file, string filenameLower)
149
+ //{
150
+ // currently does not support "just export all chars" AND chars also have size info.
151
+ // no good format for this yet
152
+
82
153
//MadsPackReader r = new MadsPackReader(file);
83
154
//var ff = new MadsPackFont(r.getItems()[0]);
84
155
//ff.pathtoCol = coloFolder;
@@ -103,6 +174,6 @@ static void ExportFf(string file, string filenameLower)
103
174
// Console.WriteLine($"Error for '{filenameLower}_{i}': {e}");
104
175
// }
105
176
//}
106
- }
177
+ // }
107
178
}
108
179
}
0 commit comments