35 lines
860 B
Go
35 lines
860 B
Go
|
package api
|
||
|
|
||
|
import (
|
||
|
"git.kirsle.net/go/render"
|
||
|
"github.com/dop251/goja"
|
||
|
)
|
||
|
|
||
|
// GameplayLevelControl
|
||
|
type GameplayLevelControl struct {
|
||
|
// EndLevel ends the game in a "win" condition.
|
||
|
EndLevel func()
|
||
|
|
||
|
// FailLevel ends the game in a "fail" condition, with the message shown to the player.
|
||
|
FailLevel func(message string)
|
||
|
|
||
|
// SetCheckpoint updates the player's respawn position to the given point.
|
||
|
SetCheckpoint func(render.Point)
|
||
|
}
|
||
|
|
||
|
// ToMap converts the struct into a generic hash map.
|
||
|
func (g GameplayLevelControl) ToMap() map[string]interface{} {
|
||
|
return map[string]interface{}{
|
||
|
"EndLevel": g.EndLevel,
|
||
|
"FailLevel": g.FailLevel,
|
||
|
"SetCheckpoint": g.SetCheckpoint,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Register the global functions in your JavaScript VM.
|
||
|
func (g GameplayLevelControl) Register(vm *goja.Runtime) {
|
||
|
for k, v := range g.ToMap() {
|
||
|
vm.Set(k, v)
|
||
|
}
|
||
|
}
|