pinball/assets/Scripts/FlipperController.ts

75 lines
2.4 KiB
TypeScript

import { _decorator, Component, EventKeyboard, EventMouse, EventTouch, Input, input, KeyCode, log, Node, view } 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() > view.getFrameSize().x) {
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.KEY_A:
this.lFlipper.ActiveFlipper();
break;
case KeyCode.KEY_D:
this.rFlipper.ActiveFlipper();
break;
}
}
private OnKeyUp(event: EventKeyboard) {
switch (event.keyCode) {
case KeyCode.KEY_A:
this.lFlipper.DeActiveFlipper();
break;
case KeyCode.KEY_D:
this.rFlipper.DeActiveFlipper();
break;
}
}
}