Chapter 4: Input and Player Movement

https://leanpub.com/gameprogramminggolang

Technical requirements

https://leanpub.com/gameprogramminggolang

Overview of the input system

https://leanpub.com/gameprogramminggolang

rawinput.go, physical input abstraction

https://leanpub.com/gameprogramminggolang

Imports and InputButtonType

https://leanpub.com/gameprogramminggolang

RawInputButton struct

https://leanpub.com/gameprogramminggolang

Constructors for RawInputButton

https://leanpub.com/gameprogramminggolang

IsPressed, IsJustPressed, IsJustReleased, the temporal difference

https://leanpub.com/gameprogramminggolang

IsPressed, current held state

https://leanpub.com/gameprogramminggolang

IsJustPressed, first frame only

https://leanpub.com/gameprogramminggolang

IsJustReleased, release frame only

https://leanpub.com/gameprogramminggolang

PressDuration, frames held

https://leanpub.com/gameprogramminggolang

action.go, Action with trigger mode

https://leanpub.com/gameprogramminggolang

ActionMode, when the action fires

https://leanpub.com/gameprogramminggolang

ActionMode.Has, flag check

https://leanpub.com/gameprogramminggolang

ActionType, input device

https://leanpub.com/gameprogramminggolang

Action struct

https://leanpub.com/gameprogramminggolang

Action constructors

https://leanpub.com/gameprogramminggolang

Action getters

https://leanpub.com/gameprogramminggolang

actionmap.go, ActionID to Action mapping

https://leanpub.com/gameprogramminggolang

ActionID and ActionMap struct

https://leanpub.com/gameprogramminggolang

NewActionMap and AddAction

https://leanpub.com/gameprogramminggolang

RemoveAction, GetAction, ClearActions

https://leanpub.com/gameprogramminggolang

SetKeyBinding and ErrActionNotFound

https://leanpub.com/gameprogramminggolang

statebuffer.go, tracking state across frames

https://leanpub.com/gameprogramminggolang

InputState and StateBuffer struct

https://leanpub.com/gameprogramminggolang

NewStateBuffer

https://leanpub.com/gameprogramminggolang

Update, keyboard loop

https://leanpub.com/gameprogramminggolang

Update, mouse loop

https://leanpub.com/gameprogramminggolang

IsActionActive and checkState

https://leanpub.com/gameprogramminggolang

inputmanager.go, two input APIs

https://leanpub.com/gameprogramminggolang

Frame flow through InputManager

https://leanpub.com/gameprogramminggolang

ActionBinding and InputManager struct

https://leanpub.com/gameprogramminggolang

NewInputManager

https://leanpub.com/gameprogramminggolang

Update

https://leanpub.com/gameprogramminggolang

AddAction

https://leanpub.com/gameprogramminggolang

RemoveAction

https://leanpub.com/gameprogramminggolang

IsActionPressed, IsActionJustPressed, IsActionJustReleased, IsActionReleased, comparing the four methods

https://leanpub.com/gameprogramminggolang

IsActionPressed

https://leanpub.com/gameprogramminggolang

IsActionJustPressed, IsActionJustReleased, IsActionReleased

https://leanpub.com/gameprogramminggolang

RegisterAction and IsActionActive (ActionID API)

https://leanpub.com/gameprogramminggolang

ActionMap accessor

https://leanpub.com/gameprogramminggolang

engine.go, adding InputManager and Update

https://leanpub.com/gameprogramminggolang

Engine struct

https://leanpub.com/gameprogramminggolang

NewEngine

https://leanpub.com/gameprogramminggolang

Input accessor

https://leanpub.com/gameprogramminggolang

Update with input.Update()

https://leanpub.com/gameprogramminggolang

Draw and Layout

https://leanpub.com/gameprogramminggolang

Game setup and movement

https://leanpub.com/gameprogramminggolang

Game struct

https://leanpub.com/gameprogramminggolang

NewGame, building the scene

https://leanpub.com/gameprogramminggolang

game_init.go, loading textures

https://leanpub.com/gameprogramminggolang

game_init.go, binding arrow keys

https://leanpub.com/gameprogramminggolang

game_init.go, floor setup

https://leanpub.com/gameprogramminggolang

player.go, player constants and type

https://leanpub.com/gameprogramminggolang

player.go, creating the player

https://leanpub.com/gameprogramminggolang

player.go, reading movement input

https://leanpub.com/gameprogramminggolang

player.go, normalize and move

https://leanpub.com/gameprogramminggolang

game.go, Update, Draw, and Layout

https://leanpub.com/gameprogramminggolang

run.go and cmd/main.go, entry point

https://leanpub.com/gameprogramminggolang

Running the chapter

https://leanpub.com/gameprogramminggolang

Summary

https://leanpub.com/gameprogramminggolang