| | |
| | | import * as PIXI from 'pixi.js'; |
| | | import * as TWEEDLE from 'tweedle.js'; |
| | | import * as Tool from './tool'; |
| | | import star from '/public/img/map/star.png' |
| | | import star from '/img/map/star.png' |
| | | |
| | | export default class Player { |
| | | |
| | |
| | | }, 200).start(); |
| | | } |
| | | |
| | | rotateMap = () => { |
| | | const bounds = this.mapContainer.getLocalBounds(); |
| | | const centerX = bounds.x + bounds.width / 2; |
| | | const centerY = bounds.y + bounds.height / 2; |
| | | this.mapContainer.pivot.set(centerX, centerY); |
| | | this.mapContainer.position.set(this.app.renderer.width / 2, this.app.renderer.height / 2); |
| | | |
| | | const rotationIncrement = Math.PI / 2; // 90 degrees in radians |
| | | const newRotation = this.mapContainer.rotation + rotationIncrement; |
| | | |
| | | new TWEEDLE.Tween(this.mapContainer) |
| | | .to({ rotation: newRotation }, 300) |
| | | .easing(TWEEDLE.Easing.Quadratic.Out) |
| | | .start(); |
| | | } |
| | | |
| | | showCoordinates = () => { |
| | | this.coordinatesText = new PIXI.Text('{ x: 0, y: 0 }', { |
| | | fill: this.themeMode === 'dark' ? 0xdddddd : 0x333333, |
| | |
| | | } |
| | | |
| | | startupTicker = () => { |
| | | this.app.ticker.add((delta) => { |
| | | this.tweedle = (delta) => { |
| | | TWEEDLE.Group.shared.update(); |
| | | }); |
| | | } |
| | | this.app.ticker.add(this.tweedle); |
| | | } |
| | | |
| | | resize = (width, height) => { |
| | |
| | | } |
| | | |
| | | destroy = () => { |
| | | TWEEDLE.Group.shared.removeAll(); |
| | | this.app.ticker.remove(this.tweedle); |
| | | this.app.destroy(true, { children: true }); |
| | | } |
| | | |
| | |
| | | }) |
| | | app.stage.eventMode = 'static'; |
| | | app.stage.hitArea = app.screen; |
| | | |
| | | |
| | | app.view.addEventListener('contextmenu', (event) => { |
| | | event.preventDefault(); |
| | | }); |