Adding modding folder with a hacked build.
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user