class Hand { constructor(keyMapper) { this.keyMapper = keyMapper; this.pressingFinger = KeyButton.NONE_FINGER; this.prevFingerSprite = null; this.hand = game.add.image(0, Hand.DEFAULT_Y_PX, "hand_palm"); this.hand.anchor.set(0.5); this.hand.scale.set(2); this.thumb = game.add.image(0, 0, "hand_thumb"); this.thumb.alpha = 0.5; this.hand.addChild(this.thumb); this.index_finger = game.add.image(0, 0, "hand_index_finger"); this.index_finger.alpha = 0.5; this.hand.addChild(this.index_finger); this.middle_finger = game.add.image(0, 0, "hand_middle_finger"); this.middle_finger.alpha = 0.5; this.hand.addChild(this.middle_finger); this.ring_filger = game.add.image(0, 0, "hand_little_finger"); this.ring_filger.alpha = 0.5; this.hand.addChild(this.ring_filger); this.little_finger = game.add.image(0, 0, "hand_ring_finger"); this.little_finger.alpha = 0.5; this.hand.addChild(this.little_finger); let mask = game.add.graphics(); mask.beginFill(0xffffff); mask.drawRect(100, 300, 1028, 360); this.hand.mask = mask; } move(sprite, x, y) { sprite.x = x; sprite.y = y; } moveTo(key) { } moveToDefaultPosition() { this.moveRow(3, null); this.unhighlightOffFinger(KeyButton.NONE_FINGER); } moveRow(rowNo, key) { let rowIndex = rowNo - 1; this.hand.y = Hand.DEFAULT_Y_PX + Keyboard.DEFAULT_KEY_SIZE_PX * rowIndex; this.moveColumn(rowNo, key); } moveColumn(rowNo, key) { } getFingerSprite(fingerNo) { let fingerSprite = null; switch(fingerNo) { case KeyButton.THUMB: fingerSprite = this.thumb; break; case KeyButton.INDEX_FINGER: case KeyButton.INDEX_FINGER_BASELINE: fingerSprite = this.index_finger; break; case KeyButton.MIDDLE_FINGER: fingerSprite = this.middle_finger; break; case KeyButton.RING_FINGER: fingerSprite = this.ring_filger; break; case KeyButton.LITTLE_FINGER: fingerSprite = this.little_finger; break; } return fingerSprite; } highlightOnFinger(fingerNo) { // console.log(fingerNo); let pressingFingerSprite = this.getFingerSprite(fingerNo); if(pressingFingerSprite === this.prevFingerSprite) return; if(this.prevFingerSprite !== null) this.unhighlightOffFinger(); if(pressingFingerSprite !== null) { // console.log(pressingFingerSprite); pressingFingerSprite.tint = 0xffff00; pressingFingerSprite.alpha = 1; } this.prevFingerSprite = pressingFingerSprite; } unhighlightOffFinger() { if(this.prevFingerSprite === null) return; this.prevFingerSprite.tint = 0xffffff; this.prevFingerSprite.alpha = 0.5; this.prevFingerSprite = null; } } Hand.DEFAULT_Y_PX = 540; // 680; class LeftHand extends Hand { constructor(keyMapper) { super(keyMapper); this.move(this.thumb, 126, -50); this.move(this.index_finger, 96, -102); this.move(this.middle_finger, 58, -116); this.move(this.ring_filger, 32, -110); this.move(this.little_finger, 4, -106); this.moveToDefaultPosition(); } moveTo(key) { if(key === undefined) return; // console.log(key); let keyCode = this.keyMapper.getKeyIDOfText(key.normalText); if(keyCode != "Space") this.moveRow(key.row, key); else this.moveRow(3, key); switch(key.keyCode) { case "Key5": case "KeyT": case "KeyG": case "KeyB": this.moveColumn(5, key); break; } this.highlightOnFinger(key.fingerType); } moveColumn(rowNo, key) { let rowIndex = rowNo - 1; this.hand.x = LeftHand.DEFAULT_X_PX + (Keyboard.DEFAULT_KEY_SIZE_PX / 2) * rowIndex; if(key === null) return; let keyCode = this.keyMapper.getKeyIDOfText(key.normalText); switch(keyCode) { case "Key5": case "KeyT": case "KeyG": case "KeyB": this.hand.x += Keyboard.DEFAULT_KEY_SIZE_PX; break; case "ShiftLeft": this.hand.x = LeftHand.DEFAULT_X_PX; break; } } } LeftHand.DEFAULT_X_PX = 100; class RightHand extends Hand { constructor(keyMapper) { super(keyMapper); this.hand.scale.x *= -1; this.move(this.thumb, 126, -50); this.move(this.index_finger, 96, -102); this.move(this.middle_finger, 58, -116); this.move(this.ring_filger, 32, -110); this.move(this.little_finger, 4, -106); this.moveToDefaultPosition(); } moveTo(key) { if(key === undefined) return; // console.log(key); let keyCode = this.keyMapper.getKeyIDOfText(key.normalText); if(keyCode != "Space") this.moveRow(key.row, key); else this.moveRow(3, key); switch(key.keyCode) { case "Key5": case "KeyT": case "KeyG": case "KeyB": this.moveColumn(5, key); break; } this.highlightOnFinger(key.fingerType); } moveColumn(rowNo, key) { let rowIndex = rowNo - 1; this.hand.x = RightHand.DEFAULT_X_PX + (Keyboard.DEFAULT_KEY_SIZE_PX / 2) * rowIndex; if(key === null) return; let keyCode = this.keyMapper.getKeyIDOfText(key.normalText); switch(keyCode) { case "Key6": case "KeyY": case "KeyH": case "KeyN": this.hand.x -= Keyboard.DEFAULT_KEY_SIZE_PX; break; case "Minus": case "BracketLeft": case "Quote": this.hand.x += (Keyboard.DEFAULT_KEY_SIZE_PX / 2) * 3; break; case "Equal": case "BracketRight": this.hand.x += (Keyboard.DEFAULT_KEY_SIZE_PX / 2) * 5; break; case "Backslash": this.hand.x += (Keyboard.DEFAULT_KEY_SIZE_PX / 2) * 7; break; case "Enter": this.hand.x = RightHand.DEFAULT_X_PX + (Keyboard.DEFAULT_KEY_SIZE_PX / 2) * 6; break; case "ShiftRight": this.hand.x = RightHand.DEFAULT_X_PX + (Keyboard.DEFAULT_KEY_SIZE_PX / 2) * 6; break; } } } RightHand.DEFAULT_X_PX = 810;