55 lines
2.1 KiB
Go
55 lines
2.1 KiB
Go
package lgres_test
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/binary"
|
|
|
|
"github.com/inkyblackness/hacked/ss1/resource"
|
|
"github.com/inkyblackness/hacked/ss1/resource/lgres"
|
|
"github.com/inkyblackness/hacked/ss1/resource/lgres/internal/format"
|
|
"github.com/inkyblackness/hacked/ss1/serial"
|
|
)
|
|
|
|
func emptyResourceFile() []byte {
|
|
buf := bytes.NewBufferString(format.HeaderString)
|
|
headerTrailer := make([]byte, format.ResourceDirectoryFileOffsetPos-buf.Len())
|
|
headerTrailer[0] = format.CommentTerminator
|
|
|
|
_ = binary.Write(buf, binary.LittleEndian, headerTrailer)
|
|
dictionaryOffset := uint32(buf.Len() + 4)
|
|
_ = binary.Write(buf, binary.LittleEndian, &dictionaryOffset)
|
|
|
|
numberOfResources := uint16(0)
|
|
firstResourceOffset := uint32(buf.Len())
|
|
|
|
_ = binary.Write(buf, binary.LittleEndian, &numberOfResources)
|
|
_ = binary.Write(buf, binary.LittleEndian, &firstResourceOffset)
|
|
|
|
return buf.Bytes()
|
|
}
|
|
|
|
var exampleResourceIDSingleBlockResource = resource.ID(0x4000)
|
|
var exampleResourceIDSingleBlockResourceCompressed = resource.ID(0x1000)
|
|
var exampleResourceIDCompoundResource = resource.ID(0x2000)
|
|
var exampleResourceIDCompoundResourceCompressed = resource.ID(0x5000)
|
|
|
|
func exampleResourceFile() []byte {
|
|
store := serial.NewByteStore()
|
|
writer, _ := lgres.NewWriter(store)
|
|
|
|
resource1, _ := writer.CreateResource(exampleResourceIDSingleBlockResource, resource.ContentType(0x01), false)
|
|
_, _ = resource1.Write([]byte{0x01, 0x01, 0x01})
|
|
resource2, _ := writer.CreateResource(exampleResourceIDSingleBlockResourceCompressed, resource.ContentType(0x02), true)
|
|
_, _ = resource2.Write([]byte{0x02, 0x02})
|
|
resource3, _ := writer.CreateCompoundResource(exampleResourceIDCompoundResource, resource.ContentType(0x03), false)
|
|
_, _ = resource3.CreateBlock().Write([]byte{0x30, 0x30, 0x30, 0x30})
|
|
_, _ = resource3.CreateBlock().Write([]byte{0x31, 0x31, 0x31})
|
|
resource4, _ := writer.CreateCompoundResource(exampleResourceIDCompoundResourceCompressed, resource.ContentType(0x04), true)
|
|
_, _ = resource4.CreateBlock().Write([]byte{0x40, 0x40})
|
|
_, _ = resource4.CreateBlock().Write([]byte{0x41, 0x41, 0x41, 0x41})
|
|
_, _ = resource4.CreateBlock().Write([]byte{0x42})
|
|
_ = writer.Finish()
|
|
|
|
return store.Data()
|
|
}
|