Adding modding folder with a hacked build.
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package lvlobj
|
||||
|
||||
import (
|
||||
"github.com/inkyblackness/hacked/ss1/content/interpreters"
|
||||
)
|
||||
|
||||
type interpreterRetriever interface {
|
||||
specialize(key int) interpreterRetriever
|
||||
instance(data []byte) *interpreters.Instance
|
||||
}
|
||||
|
||||
type interpreterLeaf struct {
|
||||
desc *interpreters.Description
|
||||
}
|
||||
|
||||
func newInterpreterLeaf(desc *interpreters.Description) *interpreterLeaf {
|
||||
return &interpreterLeaf{desc: desc}
|
||||
}
|
||||
|
||||
func (node *interpreterLeaf) specialize(key int) interpreterRetriever {
|
||||
return node
|
||||
}
|
||||
|
||||
func (node *interpreterLeaf) instance(data []byte) *interpreters.Instance {
|
||||
return node.desc.For(data)
|
||||
}
|
||||
|
||||
type interpreterEntry struct {
|
||||
defaultLeaf *interpreterLeaf
|
||||
subEntries map[int]interpreterRetriever
|
||||
}
|
||||
|
||||
func newInterpreterEntry(defaultDesc *interpreters.Description) *interpreterEntry {
|
||||
return &interpreterEntry{
|
||||
defaultLeaf: newInterpreterLeaf(defaultDesc),
|
||||
subEntries: make(map[int]interpreterRetriever)}
|
||||
}
|
||||
|
||||
func (node *interpreterEntry) set(key int, sub interpreterRetriever) {
|
||||
node.subEntries[key] = sub
|
||||
}
|
||||
|
||||
func (node *interpreterEntry) specialize(key int) (retriever interpreterRetriever) {
|
||||
retriever = node.subEntries[key]
|
||||
if retriever == nil {
|
||||
retriever = node.defaultLeaf
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (node *interpreterEntry) instance(data []byte) *interpreters.Instance {
|
||||
return node.defaultLeaf.instance(data)
|
||||
}
|
||||
Reference in New Issue
Block a user