forked from PekanMmd/Pokemon-XD-Code
-
Notifications
You must be signed in to change notification settings - Fork 0
/
XDRExtensions.swift
133 lines (88 loc) · 2.64 KB
/
XDRExtensions.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
//
// XDRExtensions.swift
// GoD Tool
//
// Created by StarsMmd on 05/09/2017.
//
//
import Cocoa
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] + "/XD-Randomiser"
let region = XGRegions(rawValue: XGFiles.iso.data.getWordAtOffset(0)) ?? .US
let game = XGGame.XD
var verbose = true
let date = Date(timeIntervalSinceNow: 0)
var logString = ""
func printg(_ args: Any...) {
for arg in args {
print(arg, separator: " ", terminator: " ")
}
print("") // automatically adds new line
for arg in args {
logString = logString + String(describing: arg) + " "
}
logString = logString + "\n"
XGUtility.saveString(logString, toFile: .log(date))
}
extension GoDTexture {
func importImage(file: XGFiles) {
return
}
@objc func palette() -> [Int] {
return []
}
@objc func pixels() -> [Int] {
return []
}
@objc var pngData : Data {
get {
return Data()
}
}
@objc var image : NSImage {
get {
return NSImage(data: self.pngData)!
}
}
func saveImage(file: XGFiles) {
return
}
}
extension XGStringTable {
@objc func replaceString(_ string: XGString, alert: Bool) -> Bool {
let copyStream = self.stringTable.getCharStreamFromOffset(0, length: self.stringOffsets[string.id]!)
let dataCopy = XGMutableData(byteStream: copyStream, file: self.file)
let oldText = self.stringWithID(string.id)!
let difference = string.dataLength - oldText.dataLength
if difference <= self.extraCharacters {
let stream = string.byteStream
dataCopy.appendBytes(stream)
let oldEnd = self.endOffsetForStringId(string.id)
let newEnd = stringTable.getCharStreamFromOffset(oldEnd, length: fileSize - oldEnd)
let endData = XGMutableData(byteStream: newEnd, file: self.file)
dataCopy.appendBytes(endData.charStream)
if string.dataLength > oldText.dataLength {
for _ in 0 ..< difference {
let currentOff = dataCopy.length - 1
let range = NSMakeRange(currentOff, 1)
dataCopy.deleteBytesInRange(range)
}
self.increaseOffsetsAfter(stringOffsets[string.id]!, byCharacters: difference)
}
if string.dataLength < oldText.dataLength {
let difference = oldText.dataLength - string.dataLength
var emptyByte : UInt8 = 0x0
for _ in 0 ..< difference {
dataCopy.data.append(&emptyByte, length: 1)
}
self.decreaseOffsetsAfter(stringOffsets[string.id]!, byCharacters: difference)
}
self.stringTable = dataCopy
self.updateOffsets()
self.save()
stringsLoaded = false
return true
} else {
}
return false
}
}