ActualCanvas.vue 2,9 КБ
Newer Older
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
1
2
3
4
5
<template>
  <div id="phaser-container"></div>
</template>

<script lang="ts">
avathar's avatar
avathar включено в состав коммита
6
7
8
import 'phaser';
// import 'phaser3-rex-plugins/templates/ui/ui-plugin';
// import 'phaser3-rex-plugins/templates/ui/ui-components';
avathar's avatar
avathar включено в состав коммита
9
import CreateScrollablePanel from './CreateScrollablePanel';
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
10
11
12
import { useKanvasoStore } from 'src/stores/kanvaso';
import { mapActions, mapState } from 'pinia';

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
13
14
class Demo extends Phaser.Scene {
  rexUI: any;
avathar's avatar
avathar включено в состав коммита
15
16
17
18
19
  constructor() {
    super({
      key: 'examples',
    });
  }
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
20

avathar's avatar
avathar включено в состав коммита
21
22
23
24
25
26
27
  preload() {
    this.load.scenePlugin(
      'rexuiplugin',
      'rexuiplugin.min.js',
      'rexUI',
      'rexUI',
    );
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
28
    this.load.image('phaser/stretching_icon1');
avathar's avatar
avathar включено в состав коммита
29
  }
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
30

avathar's avatar
avathar включено в состав коммита
31
  create(): void {
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
32
    this.cameras.main.setBackgroundColor('#abcdef');
avathar's avatar
avathar включено в состав коммита
33
    //@ts-ignore
avathar's avatar
avathar включено в состав коммита
34
35
36
37
38
39
40
    if (window.objekto) {
      //@ts-ignore
      const topPanel = CreateScrollablePanel(this, window.objekto)
        .setPosition(400, 300)
        .layout();
      // .drawBounds(this.add.graphics(), 0xff0000)}
    }
avathar's avatar
avathar включено в состав коммита
41
  }
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
42
43
44
}

const config: Phaser.Types.Core.GameConfig = {
avathar's avatar
avathar включено в состав коммита
45
46
47
48
49
50
51
52
53
54
55
56
57
  type: Phaser.AUTO,
  parent: 'phaser-container',
  width: 1280,
  height: 720,
  scale: {
    mode: Phaser.Scale.FIT,
    autoCenter: Phaser.Scale.CENTER_BOTH,
  },
  scene: Demo,
  plugins: {
    // scene: [
    //   {
    //     key: 'rexUI',
avathar's avatar
avathar включено в состав коммита
58
59
    //     //@ts-ignore
    //     plugin: RexPlugins,
avathar's avatar
avathar включено в состав коммита
60
61
62
63
64
    //     mapping: 'rexUI',
    //   },
    //   // ...
    // ],
  },
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
65
66
};

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
67
68
export default {
  name: 'YourComponentName',
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
  data() {
    return {
      wsSubscribe: null,
    };
  },
  computed: {
    ...mapState(useKanvasoStore, ['getTree']),
    ...mapState(useKanvasoStore, {
      project: 'getKanvaso',
      kanvasoTree: 'getTree',
    }),
    // ...mapState(useCurrentUserStore, { userId: 'getUserId' }),

    currentProject() {
      return this.project ? this.project[0]?.node : null;
    },
    projectUuid() {
      return this.$route?.params?.uuid || '';
    },
  },
  watch: {
    getTree(val) {
      //@ts-ignore
      window.objekto = val;
    },
  },
  methods: {
    ...mapActions(useKanvasoStore, [
      'onGetKanvasoFull',
      'onEditKanvasoObjekto',
      'onEditKanvaso',
      'onEditKanvasoLigilo',
      'onGetKanvasoObjekto',
      'onKanvasoSubscribe',
    ]),
  },
  async mounted() {
    await this.onGetKanvasoFull({ uuid: this.projectUuid })
      .then((result) => {
        if (result.data.kanvasojKanvaso.edges.length === 0) {
          throw new Error(result);
        }
        this.onKanvasoSubscribe({
          kanvasoj: [this.currentProject.objId],
        }).then((data) => {
          this.wsSubscribe = data;
        });
      })
      .catch((err) => {
        console.log('error get kanvaso full :>> ', err);
        this.$router.replace({ name: 'projects' });
      });
    this.onGetKanvasoObjekto({ kanvaso_Uuid: this.projectUuid });
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
122
    const game = new Phaser.Game(config);
avathar's avatar
avathar включено в состав коммита
123
  },
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
124
125
  beforeUnmount() {
    this.wsSubscribe.unsubscribe();
avathar's avatar
avathar включено в состав коммита
126
127
    //@ts-ignore
    delete window.objekto;
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
128
  },
avathar's avatar
avathar включено в состав коммита
129
};
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
130
</script>