func main() { log.Println("Welcome to The Game!") config, err := configs.NewConfig("config/settings.json") if err != nil { log.Panicf("Unable to read settings.json: %v", err) } game := NewGame(config) game.Run() defer game.Shutdown() }
func Test_InputDispatcher_BuildsKeybindingsFromConfig(t *testing.T) { config, _ := configs.NewConfig("testdata/keybindings.json") emitter := NewTestEmitter() keyboard := NewKeyboard(emitter) mouse := NewMouse(emitter) dispatcher := NewInputDispatcher(config, keyboard, mouse) quitFired := 0 dispatcher.On(events.Quit, func(events.Event) { quitFired += 1 }) zoomFired := 0 dispatcher.On(events.ZoomIn, func(events.Event) { zoomFired += 1 }) attackFired := 0 dispatcher.On(events.Primary, func(events.Event) { attackFired += 1 }) // See the test file keybindings.json // 3 Quit keys emitter.fireKeyCallback(KeyQ, KeyPressed) emitter.fireKeyCallback(KeyEsc, KeyPressed) emitter.fireKeyCallback(KeyX, KeyPressed) // One ZoomIn key emitter.fireKeyCallback(KeyZ, KeyPressed) // A mouse button emitter.fireMouseButtonCallback(Mouse1, KeyPressed) assert.Equal(t, 3, quitFired) assert.Equal(t, 1, zoomFired) assert.Equal(t, 1, attackFired) }
func GetInputDispatcher() (*InputDispatcher, *Keyboard, *TestEmitter) { config, _ := configs.NewConfig("testdata/blank.json") emitter := NewTestEmitter() keyboard := NewKeyboard(emitter) return NewInputDispatcher(config, keyboard), keyboard, emitter }