pinball/assets/Scripts/FlipperController.ts

84 lines
2.5 KiB
TypeScript

import {
_decorator,
Component,
EventKeyboard,
EventMouse,
EventTouch,
Input,
input,
KeyCode,
screen as Screen,
} from 'cc';
import { Flipper } from './Flipper';
const { ccclass, property } = _decorator;
@ccclass('FlipperController')
export class FlipperController extends Component {
@property(Flipper)
public lFlipper: Flipper;
@property(Flipper)
public rFlipper: Flipper;
protected onLoad(): void {
// Mouse input
// input.on(Input.EventType.MOUSE_DOWN, this.HandleFlipperActive, this);
// input.on(Input.EventType.MOUSE_UP, this.HandleFlipperDeActive, this);
// Keyboard
input.on(Input.EventType.KEY_DOWN, this.OnKeyDown, this);
input.on(Input.EventType.KEY_UP, this.OnKeyUp, this);
// Touch
input.on(Input.EventType.TOUCH_START, this.HandleFlipperActiveTouch, this);
input.on(Input.EventType.TOUCH_END, this.HandleFlipperDeActiveTouch, this);
}
//#region Handle mouse/touch input
private HandleFlipperActive(params: EventMouse): void {
if (params.getLocationX() > screen.width / 2) this.rFlipper.ActiveFlipper();
else this.lFlipper.ActiveFlipper();
}
private HandleFlipperDeActive(params: EventMouse): void {
this.rFlipper.DeActiveFlipper();
this.lFlipper.DeActiveFlipper();
}
private HandleFlipperActiveTouch(params: EventTouch): void {
if (params.getLocationX() > Screen.windowSize.x / 2) {
console.log('right');
this.rFlipper.ActiveFlipper();
} else {
console.log('left');
this.lFlipper.ActiveFlipper();
}
}
private HandleFlipperDeActiveTouch(params: EventTouch): void {
this.rFlipper.DeActiveFlipper();
this.lFlipper.DeActiveFlipper();
}
//#endregion
private OnKeyDown(event: EventKeyboard) {
switch (event.keyCode) {
case KeyCode.ARROW_LEFT:
case KeyCode.KEY_A:
this.lFlipper.ActiveFlipper();
break;
case KeyCode.ARROW_RIGHT:
case KeyCode.KEY_D:
this.rFlipper.ActiveFlipper();
break;
}
}
private OnKeyUp(event: EventKeyboard) {
switch (event.keyCode) {
case KeyCode.ARROW_LEFT:
case KeyCode.KEY_A:
this.lFlipper.DeActiveFlipper();
break;
case KeyCode.ARROW_RIGHT:
case KeyCode.KEY_D:
this.rFlipper.DeActiveFlipper();
break;
}
}
}