Scenario viewpoint, Z index management, and arrow controls
This commit is contained in:
@@ -14,6 +14,10 @@ func (d *Driver) Dialogues() []string {
|
||||
return out
|
||||
}
|
||||
|
||||
func (d *Driver) IsInDialogue() bool {
|
||||
return d.activeDialogue != nil
|
||||
}
|
||||
|
||||
func (d *Driver) ShowDialogue(locator string) error {
|
||||
for _, dialogue := range d.dialogues {
|
||||
if dialogue.Locator == locator {
|
||||
|
@@ -37,6 +37,8 @@ type Window struct {
|
||||
MouseWheelHandler func(float64, float64)
|
||||
MouseClickHandler func()
|
||||
|
||||
WhileKeyDownHandlers map[ebiten.Key]func()
|
||||
|
||||
// Allow the "game" to be switched out at any time
|
||||
game Game
|
||||
|
||||
@@ -54,13 +56,16 @@ func NewWindow(game Game, title string, xRes int, yRes int) (*Window, error) {
|
||||
ebiten.SetRunnableInBackground(true)
|
||||
|
||||
return &Window{
|
||||
Title: title,
|
||||
Title: title,
|
||||
debug: true,
|
||||
firstRun: true,
|
||||
game: game,
|
||||
xRes: xRes,
|
||||
yRes: yRes,
|
||||
|
||||
WhileKeyDownHandlers: make(map[ebiten.Key]func()),
|
||||
|
||||
KeyUpHandlers: make(map[ebiten.Key]func()),
|
||||
debug: true,
|
||||
firstRun: true,
|
||||
game: game,
|
||||
xRes: xRes,
|
||||
yRes: yRes,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -69,6 +74,10 @@ func (w *Window) OnKeyUp(key ebiten.Key, f func()) {
|
||||
w.KeyUpHandlers[key] = f
|
||||
}
|
||||
|
||||
func (w *Window) WhileKeyDown(key ebiten.Key, f func()) {
|
||||
w.WhileKeyDownHandlers[key] = f
|
||||
}
|
||||
|
||||
func (w *Window) OnMouseWheel(f func(x, y float64)) {
|
||||
w.MouseWheelHandler = f
|
||||
}
|
||||
@@ -119,7 +128,8 @@ func (w *Window) Update(screen *ebiten.Image) (outErr error) {
|
||||
return err
|
||||
}
|
||||
|
||||
// Process keys
|
||||
// Process keys.
|
||||
// FIXME: : should this happen before or after update?
|
||||
// TODO: efficient set operations
|
||||
|
||||
for key, cb := range w.KeyUpHandlers {
|
||||
@@ -128,6 +138,12 @@ func (w *Window) Update(screen *ebiten.Image) (outErr error) {
|
||||
}
|
||||
}
|
||||
|
||||
for key, cb := range w.WhileKeyDownHandlers {
|
||||
if ebiten.IsKeyPressed(key) {
|
||||
cb()
|
||||
}
|
||||
}
|
||||
|
||||
if w.MouseWheelHandler != nil {
|
||||
x, y := ebiten.Wheel()
|
||||
if x != 0 || y != 0 {
|
||||
|
Reference in New Issue
Block a user