6
6
namespace Yuka . Data . Factory {
7
7
class ArchiveFactory : FileFactory < YukaArchive > {
8
8
public static readonly ArchiveFactory Instance = new ArchiveFactory ( ) ;
9
+ private static readonly Encoding ShiftJis = Encoding . GetEncoding ( "Shift-JIS" ) ;
9
10
10
11
public ArchiveFactory ( ) : base ( DataType . Archive ) { }
11
12
@@ -28,7 +29,7 @@ public override YukaArchive FromBinary(Stream s) {
28
29
uint datalength = br . ReadUInt32 ( ) ;
29
30
30
31
s . Seek ( nameoffset , SeekOrigin . Begin ) ;
31
- string name = Encoding . ASCII . GetString ( br . ReadBytes ( ( int ) namelength - 1 ) ) . ToLower ( ) ;
32
+ string name = ShiftJis . GetString ( br . ReadBytes ( ( int ) namelength - 1 ) ) . ToLower ( ) ;
32
33
s . Seek ( dataoffset , SeekOrigin . Begin ) ;
33
34
byte [ ] data = br . ReadBytes ( ( int ) datalength ) ;
34
35
@@ -59,13 +60,14 @@ public override long ToBinary(YukaArchive data, Stream s) {
59
60
MemoryStream ms = data . GetInputStream ( file . Key ) ;
60
61
ms . CopyTo ( s ) ;
61
62
//s.Write(data, 0, data.Length);
62
- offsets [ file . Key ] = ( new uint [ ] { dataoffset , ( uint ) file . Value . Length , 0 , ( uint ) file . Key . Length + 1 } ) ;
63
+ offsets [ file . Key ] = ( new uint [ ] { dataoffset , ( uint ) file . Value . Length , 0 , ( uint ) ShiftJis . GetByteCount ( file . Key ) + 1 } ) ;
63
64
}
64
65
65
66
// Write name table
66
67
foreach ( var entry in offsets ) {
67
68
uint nameoffset = ( uint ) s . Position ;
68
- s . Write ( Encoding . ASCII . GetBytes ( entry . Key ) , 0 , Encoding . ASCII . GetByteCount ( entry . Key ) ) ;
69
+ var bytes = ShiftJis . GetBytes ( entry . Key ) ;
70
+ s . Write ( bytes , 0 , bytes . Length ) ;
69
71
s . WriteByte ( 0 ) ;
70
72
entry . Value [ 2 ] = nameoffset ;
71
73
}
0 commit comments