tomasslavicek

Garmin Connect IQ Maze game input delegate

Jun 7th, 2019
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.96 KB | None | 0 0
  1. using Toybox.System as Sys;
  2. using Toybox.WatchUi as Ui;
  3.  
  4. class MazeInputDelegate extends Ui.BehaviorDelegate {
  5.     var view = null;
  6.     var isTouchscreen = false;
  7.    
  8.     function initialize(_view) {
  9.         view = _view;
  10.         BehaviorDelegate.initialize();        
  11.         isTouchscreen = Sys.getDeviceSettings().isTouchScreen;
  12.     }
  13.  
  14.     function onMenu() {
  15.         // Dlouhý stisk (Fenix: dlouze menu, Vivo3: dlouze na displej, 820: menu tlačítko dole)
  16.         if (isTouchscreen) {
  17.             view.navigateBack();
  18.         } else {
  19.             view.startGame();
  20.         }
  21.         return true;
  22.     }
  23.    
  24.     function onPreviousPage() {        
  25.         if (isTouchscreen) {
  26.             view.rotateRight(); // Pootočit kruh nahoru (Vivo3: gesto nahoru, 820: gesto doleva)
  27.         } else {
  28.             view.switchRight(); // Na Fenixu horní tlačítko nahoru mění kruhy
  29.         }        
  30.         return true;
  31.     }
  32.    
  33.     function onNextPage() {
  34.         view.rotateLeft(); // Pootočit kruh dolu (Vivo3 gesto, 820 gesto, Fenix tlačítko nalevo dole)
  35.         return true;
  36.     }
  37.    
  38.     function onBack() {
  39.         if (isTouchscreen) {
  40.             view.switchRight(); // Dotykové gesto, změní kruhy směrem doleva
  41.             return true;
  42.         }
  43.         return false;
  44.     }
  45.    
  46.     function onSwipe(swipeEvent) {
  47.         var dir = swipeEvent.getDirection();
  48.         if (dir == WatchUi.SWIPE_DOWN) {
  49.             onPreviousPage();
  50.         } else if (dir == WatchUi.SWIPE_UP) {
  51.             onNextPage();
  52.         }
  53.         return true;
  54.     }
  55.    
  56.     function onKey(keyEvent) {        
  57.         // Přepínání kruhů (Fenix: back button)
  58.         //System.println("Key: " + keyEvent.getKey());
  59.         if (keyEvent.getKey() == Ui.KEY_ESC && keyEvent.getType() == Ui.PRESS_TYPE_ACTION) {    
  60.             if (isTouchscreen) {
  61.                 view.switchRight(); // Dotykové gesto, změní kruhy směrem doleva
  62.             } else {
  63.                 view.navigateBack(); // Tlačítkové hodinky: jde zpět do menu
  64.             }
  65.         }
  66.        
  67.         // Action button (Fenix: napravo nahoře, Vivo3: hardwarové tlačítko), přepne na mód s kuličkou (spustí hru)
  68.         // - startovací tlačítko na 820
  69.         if (keyEvent.getKey() == Ui.KEY_ENTER && keyEvent.getType() == Ui.PRESS_TYPE_ACTION) {
  70.             view.startGame();
  71.         }    
  72.         else if (keyEvent.getKey() == Ui.KEY_START && keyEvent.getType() == Ui.PRESS_TYPE_ACTION) {
  73.             view.startGame();
  74.         }
  75.        
  76.         // Key lap (nalevo dole na 820), otočí s kruhy
  77.         if (keyEvent.getKey() == Ui.KEY_LAP && keyEvent.getType() == Ui.PRESS_TYPE_ACTION) {
  78.             view.rotateRight();
  79.         }            
  80.         return true;
  81.     }
  82.    
  83.     function onTap(clickEvent) {
  84.         // Tapnutí na displej (Vivo3 a 820), vybere konkrétní obruč
  85.         if (clickEvent.getType() == Ui.CLICK_TYPE_TAP) {
  86.             view.switchToCircle(clickEvent.getCoordinates());
  87.         }
  88.         return true;
  89.     }
  90.    
  91. }
Advertisement
Add Comment
Please, Sign In to add comment