From 475fceb864b4c5d7fb9f47720b0918ba7c96e08a Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 09 十月 2024 13:19:13 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/map/tool.js | 51 +++++++++++++++++++++++++
zy-acs-flow/src/map/player.js | 52 +++++++++++++++++++++++++-
zy-acs-flow/src/map/MapPage.jsx | 9 +++-
3 files changed, 107 insertions(+), 5 deletions(-)
diff --git a/zy-acs-flow/src/map/MapPage.jsx b/zy-acs-flow/src/map/MapPage.jsx
index 8761047..e7dd074 100644
--- a/zy-acs-flow/src/map/MapPage.jsx
+++ b/zy-acs-flow/src/map/MapPage.jsx
@@ -76,10 +76,13 @@
switch (mode) {
case MapMode.OBSERVER_MODE:
setDeviceVisible(false);
+ player.hideGridLines();
break
case MapMode.MOVABLE_MODE:
+ player.showGridLines();
break
case MapMode.SETTINGS_MODE:
+ player.hideGridLines();
setDeviceVisible(false);
break
default:
@@ -101,9 +104,9 @@
sprite.x = mapX;
sprite.y = mapY;
- // Utils.initSprite(sprite, type);
- // mapContainer.addChild(sprite);
- // Utils.beMovable(sprite);
+ Tool.initSprite(sprite, type);
+ mapContainer.addChild(sprite);
+ Tool.beMovable(sprite);
};
const actions = [
diff --git a/zy-acs-flow/src/map/player.js b/zy-acs-flow/src/map/player.js
index 2cb44a1..c657621 100644
--- a/zy-acs-flow/src/map/player.js
+++ b/zy-acs-flow/src/map/player.js
@@ -11,7 +11,7 @@
globalThis.__PIXI_APP__ = this.app;
- this.mapContainer = generateMapContainer('mapContainer');
+ this.mapContainer = generatePixiContainer('mapContainer');
const bunny = PIXI.Sprite.from('https://pixijs.com/assets/bunny.png');
bunny.anchor.set(0.5);
@@ -21,7 +21,55 @@
this.app.ticker.add((delta) => {
bunny.rotation += 0.1 * delta;
});
+
+ // startupTicker();
}
+
+ showGridLines = () => {
+ this.hideGridLines();
+ if (!this.gridLineContainer) {
+ this.gridLineContainer = generatePixiContainer('gridLineContainer');
+ this.app.stage.addChild(this.gridLineContainer);
+ }
+
+ const spacing = 30;
+ const lineDefaultAlpha = .1;;
+ const lineDefaultColor = 0x000000;
+ for (let i = 0; i < this.app.view.width / spacing; i++) {
+ const graphics = new PIXI.Graphics();
+ graphics.lineStyle(1, lineDefaultColor, lineDefaultAlpha);
+ graphics.beginFill(lineDefaultColor);
+ graphics.moveTo(i * spacing, 0);
+ graphics.lineTo(i * spacing, this.app.view.height);
+ graphics.endFill();
+ this.gridLineContainer.addChild(graphics);
+ }
+
+ for (let i = 0; i < this.app.view.height / spacing; i++) {
+ const graphics = new PIXI.Graphics();
+ graphics.lineStyle(1, lineDefaultColor, lineDefaultAlpha);
+ graphics.beginFill(lineDefaultColor);
+ graphics.moveTo(0, i * spacing);
+ graphics.lineTo(this.app.view.width, i * spacing);
+ graphics.endFill();
+
+ this.gridLineContainer.addChild(graphics);
+ }
+ }
+
+ hideGridLines = () => {
+ if (this.gridLineContainer) {
+ this.app.stage.removeChild(this.gridLineContainer);
+ this.gridLineContainer = null;
+ }
+ }
+
+
+ // startupTicker = () => {
+ // this.app.ticker.add((delta) => {
+ // TWEEDLE.Group.shared.update();
+ // });
+ // }
resize(width, height) {
this.app.renderer.resize(width, height);
@@ -57,7 +105,7 @@
return app;
}
-const generateMapContainer = (name) => {
+const generatePixiContainer = (name) => {
const mapContainer = new PIXI.Container();
mapContainer.sortableChildren = true;
mapContainer.name = name;
diff --git a/zy-acs-flow/src/map/tool.js b/zy-acs-flow/src/map/tool.js
index 8c2376b..63bf3cd 100644
--- a/zy-acs-flow/src/map/tool.js
+++ b/zy-acs-flow/src/map/tool.js
@@ -62,6 +62,57 @@
return sprite;
}
+export const initSprite = (sprite, type) => {
+ sprite.anchor.set(0.5);
+ sprite.cursor = 'pointer';
+ sprite.eventMode = 'static';
+ sprite.data = {
+ type: type,
+ uuid: generateID()
+ };
+}
+
+export const beMovable = (sprite) => {
+ sprite.off('pointerup');
+ sprite.off('pointermove');
+ sprite.off('pointerdown');
+ sprite.off('click');
+
+ sprite.on("pointerdown", onDragStart);
+
+ let dragTarget;
+ function onDragStart(event) {
+ if (event.button === 0) {
+ dragTarget = event.currentTarget;
+ mapContainer.parent.off('pointermove');
+ mapContainer.parent.on('pointermove', onDragMove, dragTarget);
+
+ mapContainer.parent.off('pointerup');
+ mapContainer.parent.on('pointerup', onDragEnd.bind(mapContainer));
+ }
+ }
+
+ function onDragMove(event) {
+ if (this) {
+ this.parent.toLocal(event.global, null, this.position);
+ }
+ }
+
+ function onDragEnd() {
+ if (dragTarget) {
+ this.parent.off('pointermove');
+ this.parent.off('pointerup');
+ dragTarget.alpha = 1;
+ dragTarget = null;
+ }
+ }
+
+}
+
+export const generateID = () => {
+ return Date.now().toString(36) + Math.random().toString(36).substring(2);
+}
+
export const patchRaLayout = (param) => {
const parentElement = document.getElementById('main-content');
if (parentElement && parentElement.classList.contains('RaLayout-content')) {
--
Gitblit v1.9.1