Adding modding folder with a hacked build.

This commit is contained in:
ml
2026-09-26 08:53:08 +02:00
parent cdb960dc71
commit c91080aba7
755 changed files with 50424 additions and 0 deletions
@@ -0,0 +1,59 @@
package media
import (
"github.com/inkyblackness/hacked/ss1/content/text"
"github.com/inkyblackness/hacked/ss1/resource"
"github.com/inkyblackness/hacked/ss1/world/ids"
)
// TextBlockSetter modifies storage of raw resource data.
type TextBlockSetter interface {
SetResourceBlock(lang resource.Language, id resource.ID, index int, data []byte)
SetResourceBlocks(lang resource.Language, id resource.ID, data [][]byte)
DelResource(lang resource.Language, id resource.ID)
}
// TextSetterService provides methods to change text resources.
type TextSetterService struct {
cp text.Codepage
}
// NewTextSetterService returns a new instance.
func NewTextSetterService(cp text.Codepage) TextSetterService {
return TextSetterService{
cp: cp,
}
}
// Remove deletes any text resource for given key.
func (service TextSetterService) Remove(setter TextBlockSetter, key resource.Key) {
info, _ := ids.Info(key.ID)
if info.List {
setter.SetResourceBlock(key.Lang, key.ID, key.Index, nil)
} else {
id := key.ID.Plus(key.Index)
setter.DelResource(key.Lang, id)
}
}
// Clear resets the identified text resource to an empty string.
func (service TextSetterService) Clear(setter TextBlockSetter, key resource.Key) {
service.Set(setter, key, "")
}
// Set stores the given text as the identified resource.
func (service TextSetterService) Set(setter TextBlockSetter, key resource.Key, value string) {
blockedValue := text.Blocked(value)
info, _ := ids.Info(key.ID)
if info.List {
newData := service.cp.Encode(blockedValue[0])
setter.SetResourceBlock(key.Lang, key.ID, key.Index, newData)
} else {
newData := make([][]byte, len(blockedValue))
for index, blockLine := range blockedValue {
newData[index] = service.cp.Encode(blockLine)
}
id := key.ID.Plus(key.Index)
setter.SetResourceBlocks(key.Lang, id, newData)
}
}