ソースを参照

Move KeyState to window package

Daniel Salvadori 6 年 前
コミット
92ffbdeab4
2 ファイル変更174 行追加172 行削除
  1. 0 172
      util/application/keystate.go
  2. 174 0
      window/keystate.go

+ 0 - 172
util/application/keystate.go

@@ -1,172 +0,0 @@
-package application
-
-import (
-	"github.com/g3n/engine/window"
-)
-
-// KeyState keeps track of the state of all keys.
-type KeyState struct {
-	win    window.IWindow
-	states map[window.Key]bool
-}
-
-// NewKeyState returns a new KeyState object.
-func NewKeyState(win window.IWindow) *KeyState {
-
-	ks := new(KeyState)
-	ks.win = win
-	ks.states = map[window.Key]bool{
-		window.KeyUnknown      : false,
-		window.KeySpace        : false,
-		window.KeyApostrophe   : false,
-		window.KeyComma        : false,
-		window.KeyMinus        : false,
-		window.KeyPeriod       : false,
-		window.KeySlash        : false,
-		window.Key0            : false,
-		window.Key1            : false,
-		window.Key2            : false,
-		window.Key3            : false,
-		window.Key4            : false,
-		window.Key5            : false,
-		window.Key6            : false,
-		window.Key7            : false,
-		window.Key8            : false,
-		window.Key9            : false,
-		window.KeySemicolon    : false,
-		window.KeyEqual        : false,
-		window.KeyA            : false,
-		window.KeyB            : false,
-		window.KeyC            : false,
-		window.KeyD            : false,
-		window.KeyE            : false,
-		window.KeyF            : false,
-		window.KeyG            : false,
-		window.KeyH            : false,
-		window.KeyI            : false,
-		window.KeyJ            : false,
-		window.KeyK            : false,
-		window.KeyL            : false,
-		window.KeyM            : false,
-		window.KeyN            : false,
-		window.KeyO            : false,
-		window.KeyP            : false,
-		window.KeyQ            : false,
-		window.KeyR            : false,
-		window.KeyS            : false,
-		window.KeyT            : false,
-		window.KeyU            : false,
-		window.KeyV            : false,
-		window.KeyW            : false,
-		window.KeyX            : false,
-		window.KeyY            : false,
-		window.KeyZ            : false,
-		window.KeyLeftBracket  : false,
-		window.KeyBackslash    : false,
-		window.KeyRightBracket : false,
-		window.KeyGraveAccent  : false,
-		window.KeyWorld1       : false,
-		window.KeyWorld2       : false,
-		window.KeyEscape       : false,
-		window.KeyEnter        : false,
-		window.KeyTab          : false,
-		window.KeyBackspace    : false,
-		window.KeyInsert       : false,
-		window.KeyDelete       : false,
-		window.KeyRight        : false,
-		window.KeyLeft         : false,
-		window.KeyDown         : false,
-		window.KeyUp           : false,
-		window.KeyPageUp       : false,
-		window.KeyPageDown     : false,
-		window.KeyHome         : false,
-		window.KeyEnd          : false,
-		window.KeyCapsLock     : false,
-		window.KeyScrollLock   : false,
-		window.KeyNumLock      : false,
-		window.KeyPrintScreen  : false,
-		window.KeyPause        : false,
-		window.KeyF1           : false,
-		window.KeyF2           : false,
-		window.KeyF3           : false,
-		window.KeyF4           : false,
-		window.KeyF5           : false,
-		window.KeyF6           : false,
-		window.KeyF7           : false,
-		window.KeyF8           : false,
-		window.KeyF9           : false,
-		window.KeyF10          : false,
-		window.KeyF11          : false,
-		window.KeyF12          : false,
-		window.KeyF13          : false,
-		window.KeyF14          : false,
-		window.KeyF15          : false,
-		window.KeyF16          : false,
-		window.KeyF17          : false,
-		window.KeyF18          : false,
-		window.KeyF19          : false,
-		window.KeyF20          : false,
-		window.KeyF21          : false,
-		window.KeyF22          : false,
-		window.KeyF23          : false,
-		window.KeyF24          : false,
-		window.KeyF25          : false,
-		window.KeyKP0          : false,
-		window.KeyKP1          : false,
-		window.KeyKP2          : false,
-		window.KeyKP3          : false,
-		window.KeyKP4          : false,
-		window.KeyKP5          : false,
-		window.KeyKP6          : false,
-		window.KeyKP7          : false,
-		window.KeyKP8          : false,
-		window.KeyKP9          : false,
-		window.KeyKPDecimal    : false,
-		window.KeyKPDivide     : false,
-		window.KeyKPMultiply   : false,
-		window.KeyKPSubtract   : false,
-		window.KeyKPAdd        : false,
-		window.KeyKPEnter      : false,
-		window.KeyKPEqual      : false,
-		window.KeyLeftShift    : false,
-		window.KeyLeftControl  : false,
-		window.KeyLeftAlt      : false,
-		window.KeyLeftSuper    : false,
-		window.KeyRightShift   : false,
-		window.KeyRightControl : false,
-		window.KeyRightAlt     : false,
-		window.KeyRightSuper   : false,
-		window.KeyMenu         : false,
-	}
-
-	// Subscribe to window key events
-	ks.win.SubscribeID(window.OnKeyUp, &ks, ks.onKey)
-	ks.win.SubscribeID(window.OnKeyDown, &ks, ks.onKey)
-
-	return ks
-}
-
-// Dispose unsubscribes from the window events.
-func (ks *KeyState) Dispose() {
-
-	ks.win.UnsubscribeID(window.OnKeyUp, &ks)
-	ks.win.UnsubscribeID(window.OnKeyDown, &ks)
-}
-
-// Pressed returns whether the specified key is currently pressed.
-func (ks *KeyState) Pressed(k window.Key) bool {
-
-	return ks.states[k]
-}
-
-// onKey receives key events and updates the internal map of states.
-func (ks *KeyState) onKey(evname string, ev interface{}) {
-
-	kev := ev.(*window.KeyEvent)
-	switch evname {
-	case window.OnKeyUp:
-		ks.states[kev.Keycode] = false
-	case window.OnKeyDown:
-		ks.states[kev.Keycode] = true
-	}
-}

+ 174 - 0
window/keystate.go

@@ -0,0 +1,174 @@
+// Copyright 2016 The G3N Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package window
+
+import "github.com/g3n/engine/core"
+
+// KeyState keeps track of the state of all keys.
+type KeyState struct {
+	win    core.IDispatcher
+	states map[Key]bool
+}
+
+// NewKeyState returns a new KeyState object.
+func NewKeyState(win core.IDispatcher) *KeyState {
+
+	ks := new(KeyState)
+	ks.win = win
+	ks.states = map[Key]bool{
+		KeyUnknown:      false,
+		KeySpace:        false,
+		KeyApostrophe:   false,
+		KeyComma:        false,
+		KeyMinus:        false,
+		KeyPeriod:       false,
+		KeySlash:        false,
+		Key0:            false,
+		Key1:            false,
+		Key2:            false,
+		Key3:            false,
+		Key4:            false,
+		Key5:            false,
+		Key6:            false,
+		Key7:            false,
+		Key8:            false,
+		Key9:            false,
+		KeySemicolon:    false,
+		KeyEqual:        false,
+		KeyA:            false,
+		KeyB:            false,
+		KeyC:            false,
+		KeyD:            false,
+		KeyE:            false,
+		KeyF:            false,
+		KeyG:            false,
+		KeyH:            false,
+		KeyI:            false,
+		KeyJ:            false,
+		KeyK:            false,
+		KeyL:            false,
+		KeyM:            false,
+		KeyN:            false,
+		KeyO:            false,
+		KeyP:            false,
+		KeyQ:            false,
+		KeyR:            false,
+		KeyS:            false,
+		KeyT:            false,
+		KeyU:            false,
+		KeyV:            false,
+		KeyW:            false,
+		KeyX:            false,
+		KeyY:            false,
+		KeyZ:            false,
+		KeyLeftBracket:  false,
+		KeyBackslash:    false,
+		KeyRightBracket: false,
+		KeyGraveAccent:  false,
+		KeyWorld1:       false,
+		KeyWorld2:       false,
+		KeyEscape:       false,
+		KeyEnter:        false,
+		KeyTab:          false,
+		KeyBackspace:    false,
+		KeyInsert:       false,
+		KeyDelete:       false,
+		KeyRight:        false,
+		KeyLeft:         false,
+		KeyDown:         false,
+		KeyUp:           false,
+		KeyPageUp:       false,
+		KeyPageDown:     false,
+		KeyHome:         false,
+		KeyEnd:          false,
+		KeyCapsLock:     false,
+		KeyScrollLock:   false,
+		KeyNumLock:      false,
+		KeyPrintScreen:  false,
+		KeyPause:        false,
+		KeyF1:           false,
+		KeyF2:           false,
+		KeyF3:           false,
+		KeyF4:           false,
+		KeyF5:           false,
+		KeyF6:           false,
+		KeyF7:           false,
+		KeyF8:           false,
+		KeyF9:           false,
+		KeyF10:          false,
+		KeyF11:          false,
+		KeyF12:          false,
+		KeyF13:          false,
+		KeyF14:          false,
+		KeyF15:          false,
+		KeyF16:          false,
+		KeyF17:          false,
+		KeyF18:          false,
+		KeyF19:          false,
+		KeyF20:          false,
+		KeyF21:          false,
+		KeyF22:          false,
+		KeyF23:          false,
+		KeyF24:          false,
+		KeyF25:          false,
+		KeyKP0:          false,
+		KeyKP1:          false,
+		KeyKP2:          false,
+		KeyKP3:          false,
+		KeyKP4:          false,
+		KeyKP5:          false,
+		KeyKP6:          false,
+		KeyKP7:          false,
+		KeyKP8:          false,
+		KeyKP9:          false,
+		KeyKPDecimal:    false,
+		KeyKPDivide:     false,
+		KeyKPMultiply:   false,
+		KeyKPSubtract:   false,
+		KeyKPAdd:        false,
+		KeyKPEnter:      false,
+		KeyKPEqual:      false,
+		KeyLeftShift:    false,
+		KeyLeftControl:  false,
+		KeyLeftAlt:      false,
+		KeyLeftSuper:    false,
+		KeyRightShift:   false,
+		KeyRightControl: false,
+		KeyRightAlt:     false,
+		KeyRightSuper:   false,
+		KeyMenu:         false,
+	}
+
+	// Subscribe to window key events
+	ks.win.SubscribeID(OnKeyUp, &ks, ks.onKey)
+	ks.win.SubscribeID(OnKeyDown, &ks, ks.onKey)
+
+	return ks
+}
+
+// Dispose unsubscribes from the window events.
+func (ks *KeyState) Dispose() {
+
+	ks.win.UnsubscribeID(OnKeyUp, &ks)
+	ks.win.UnsubscribeID(OnKeyDown, &ks)
+}
+
+// Pressed returns whether the specified key is currently pressed.
+func (ks *KeyState) Pressed(k Key) bool {
+
+	return ks.states[k]
+}
+
+// onKey receives key events and updates the internal map of states.
+func (ks *KeyState) onKey(evname string, ev interface{}) {
+
+	kev := ev.(*KeyEvent)
+	switch evname {
+	case OnKeyUp:
+		ks.states[kev.Key] = false
+	case OnKeyDown:
+		ks.states[kev.Key] = true
+	}
+}