| | |
| | | import * as TWEEDLE from 'tweedle.js'; |
| | | import * as Tool from './tool'; |
| | | import star from '/img/map/star.png'; |
| | | import { DEVICE_TYPE, MAP_MIRROR } from './constants'; |
| | | import { DEVICE_TYPE, MAP_MIRROR, MAP_TONES } from './constants'; |
| | | |
| | | const getMapTone = (mode) => mode === 'dark' ? MAP_TONES.dark : MAP_TONES.light; |
| | | |
| | | export default class Player { |
| | | |
| | |
| | | } |
| | | |
| | | showCoordinates = () => { |
| | | const tone = getMapTone(this.themeMode); |
| | | this.coordinatesText = new PIXI.Text('{ X: 0, Y: 0 }', { |
| | | fill: this.themeMode === 'dark' ? 0xdddddd : 0x333333, |
| | | fill: tone.textPrimary, |
| | | fontSize: 13, |
| | | fontFamily: 'Microsoft YaHei', |
| | | fontWeight: 'bold', |
| | |
| | | this.app.stage.addChild(this.coordinatesText); |
| | | |
| | | this.rotationText = new PIXI.Text('ROTATION: 0°', { |
| | | fill: this.themeMode === 'dark' ? 0xdddddd : 0x333333, |
| | | fill: tone.textPrimary, |
| | | fontSize: 13, |
| | | fontFamily: 'Microsoft YaHei', |
| | | fontWeight: 'bold', |
| | |
| | | } |
| | | |
| | | const spacing = 30; |
| | | const lineDefaultAlpha = .1;; |
| | | const lineDefaultColor = 0x000000; |
| | | const tone = getMapTone(this.themeMode); |
| | | const { color: lineDefaultColor, alpha: lineDefaultAlpha } = tone.grid; |
| | | for (let i = 0; i < this.app.view.width / spacing; i++) { |
| | | const graphics = new PIXI.Graphics(); |
| | | graphics.lineStyle(1, lineDefaultColor, lineDefaultAlpha); |
| | |
| | | } |
| | | } |
| | | |
| | | showStarryBackground = (tint = 0x8395a7) => { |
| | | showStarryBackground = (tint) => { |
| | | const resolvedTint = tint ?? (this.themeMode === 'dark' ? 0x6f7d92 : 0x8395a7); |
| | | if (!this.starryContainer) { |
| | | this.starryContainer = generatePixiContainer('starryContainer'); |
| | | this.app.stage.addChild(this.starryContainer); |
| | |
| | | }; |
| | | star.sprite.anchor.x = 0.5; |
| | | star.sprite.anchor.y = 0.7; |
| | | star.sprite.tint = tint; // filter |
| | | star.sprite.tint = resolvedTint; // filter |
| | | randomizeStar(star, true); |
| | | this.starryContainer.addChild(star.sprite); |
| | | stars.push(star); |
| | |
| | | } |
| | | |
| | | setTheme = (themeMode) => { |
| | | this.app.renderer.background.color = themeMode === 'dark' ? '#3a3f44' : '#f1f2f6'; |
| | | this.themeMode = themeMode; |
| | | const tone = getMapTone(themeMode); |
| | | this.app.renderer.background.color = tone.canvasBackground; |
| | | if (this.coordinatesText) { |
| | | this.coordinatesText.style.fill = themeMode === 'dark' ? 0xdddddd : 0x333333; |
| | | this.coordinatesText.style.fill = tone.textPrimary; |
| | | } |
| | | if (this.rotationText) { |
| | | this.rotationText.style.fill = themeMode === 'dark' ? 0xdddddd : 0x333333; |
| | | this.rotationText.style.fill = tone.textPrimary; |
| | | } |
| | | if (this.gridLineContainer) { |
| | | this.showGridLines(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | const generateApp = (dom, themeMode) => { |
| | | const tone = getMapTone(themeMode); |
| | | const app = new PIXI.Application({ |
| | | background: themeMode === 'dark' ? '#3b4148' : '#f1f2f6', |
| | | background: tone.canvasBackground, |
| | | antialias: true, |
| | | // resizeTo: dom, |
| | | }) |