Skip to content

Instantly share code, notes, and snippets.

@FabianFG
Created April 4, 2020 19:40
Show Gist options
  • Save FabianFG/84dafa93a4f486ab85445e989e204552 to your computer and use it in GitHub Desktop.
Save FabianFG/84dafa93a4f486ab85445e989e204552 to your computer and use it in GitHub Desktop.
package me.fungames.jfortniteparse.ue4.assets.exports
import me.fungames.jfortniteparse.ue4.assets.FObjectExport
import me.fungames.jfortniteparse.ue4.assets.UObject
import me.fungames.jfortniteparse.ue4.assets.reader.FAssetArchive
import me.fungames.jfortniteparse.ue4.assets.util.FName
import me.fungames.jfortniteparse.ue4.assets.writer.FAssetArchiveWriter
typealias FMetaDataMap = MutableMap<FName, String>
@ExperimentalUnsignedTypes
class UStringTable : UEExport {
override var baseObject: UObject
var tableNamespace : String
var entries: MutableMap<String, String>
var keysToMetadata : MutableMap<String, FMetaDataMap>
constructor(Ar: FAssetArchive, exportObject : FObjectExport) : super(exportObject) {
super.init(Ar)
baseObject = UObject(Ar, exportObject)
tableNamespace = Ar.readString()
entries = Ar.readTMap { Ar.readString() to Ar.readString() }
keysToMetadata = Ar.readTMap { Ar.readString() to Ar.readTMap { Ar.readFName() to Ar.readString() } }
super.complete(Ar)
}
override fun serialize(Ar: FAssetArchiveWriter) {
super.initWrite(Ar)
baseObject.serialize(Ar)
Ar.writeString(tableNamespace)
Ar.writeTMap(entries) { key, value ->
Ar.writeString(key)
Ar.writeString(value)
}
Ar.writeTMap(keysToMetadata) { key, metadata ->
Ar.writeString(key)
Ar.writeTMap(metadata) { metaKey, metaValue ->
Ar.writeFName(metaKey)
Ar.writeString(metaValue)
}
}
super.completeWrite(Ar)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment