ActualCanvas.vue 5,0 КБ
Newer Older
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
1
<template>
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  <div>
    <div
      id="loading-screen"
      style="
        position: absolute;
        width: 100%;
        height: 100%;
        background: white;
        z-index: 1000;
        display: flex;
        align-items: center;
        justify-content: center;
      "
    >
      <img src="images/logo.png" alt="Loading..." id="loading-logo" />
    </div>
    <div id="phaser-container"></div>
  </div>
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
20
21
22
</template>

<script lang="ts">
avathar's avatar
avathar включено в состав коммита
23
24
25
import 'phaser';
// import 'phaser3-rex-plugins/templates/ui/ui-plugin';
// import 'phaser3-rex-plugins/templates/ui/ui-components';
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
26
import CreateScrollablePanel from '../kanbans/CreateScrollablePanel';
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
27
28
import { useKanvasoStore } from 'src/stores/kanvaso';
import { mapActions, mapState } from 'pinia';
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
29
30
31
// import { objekto } from './mock';
// import PreloadScene from './PreloadScene';
// import BootScene from './BootScene';
avathar's avatar
avathar включено в состав коммита
32
33
import { KanvasojKanvaso, TreeNode } from 'src/types/stores/kanvaso';

avathar's avatar
avathar включено в состав коммита
34
35
36
37
38
import { watch, computed } from 'vue';

// declare const window: {
//   objekto: TreeNode;
// } & Window;
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
39

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
40
class EndlessCanvas extends Phaser.Scene {
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
41
  rexUI: any;
avathar's avatar
avathar включено в состав коммита
42
43
  constructor() {
    super({
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
44
      key: 'endless-canvas',
avathar's avatar
avathar включено в состав коммита
45
    });
avathar's avatar
avathar включено в состав коммита
46
47
    //@ts-ignore
    this.store = useKanvasoStore();
avathar's avatar
avathar включено в состав коммита
48
  }
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
49

avathar's avatar
avathar включено в состав коммита
50
51
52
53
54
55
56
  preload() {
    this.load.scenePlugin(
      'rexuiplugin',
      'rexuiplugin.min.js',
      'rexUI',
      'rexUI',
    );
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
57
    this.load.image('icon', 'phaser/stretching_icon.png');
avathar's avatar
avathar включено в состав коммита
58
  }
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
59

avathar's avatar
avathar включено в состав коммита
60
  create(): void {
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
61
    this.cameras.main.setBackgroundColor('#abcdef');
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
62

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
63
64
    // Скрываем экран загрузки здесь, потому что на этом этапе preload уже завершен
    document.getElementById('loading-screen').style.display = 'none';
avathar's avatar
avathar включено в состав коммита
65
66
67
68
69
    //@ts-ignore
    if (this.store.getTree) {
      const topPanel = CreateScrollablePanel(
        this,
        //@ts-ignore
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
70

avathar's avatar
avathar включено в состав коммита
71
72
73
74
        this.store.getTree,
        watch,
        computed,
      )
avathar's avatar
avathar включено в состав коммита
75
76
77
78
        .setPosition(400, 300)
        .layout();
      // .drawBounds(this.add.graphics(), 0xff0000)}
    }
avathar's avatar
avathar включено в состав коммита
79
  }
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
80
81
82
}

const config: Phaser.Types.Core.GameConfig = {
avathar's avatar
avathar включено в состав коммита
83
84
  type: Phaser.AUTO,
  parent: 'phaser-container',
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
85
  width: window.innerWidth,
avathar's avatar
avathar включено в состав коммита
86
  height: window.innerHeight,
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
87

avathar's avatar
avathar включено в состав коммита
88
89
90
91
  scale: {
    mode: Phaser.Scale.FIT,
    autoCenter: Phaser.Scale.CENTER_BOTH,
  },
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
92
  scene: EndlessCanvas,
avathar's avatar
avathar включено в состав коммита
93
94
95
96
  plugins: {
    // scene: [
    //   {
    //     key: 'rexUI',
avathar's avatar
avathar включено в состав коммита
97
98
    //     //@ts-ignore
    //     plugin: RexPlugins,
avathar's avatar
avathar включено в состав коммита
99
100
101
102
103
    //     mapping: 'rexUI',
    //   },
    //   // ...
    // ],
  },
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
104
105
};

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
106
107
export default {
  name: 'YourComponentName',
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
  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 || '';
    },
  },
avathar's avatar
avathar включено в состав коммита
128
129
130
131
132
  // watch: {
  //   getTree(val) {
  //     window.objekto = val;
  //   },
  // },
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
133
134
135
136
137
138
139
140
141
142
143
  methods: {
    ...mapActions(useKanvasoStore, [
      'onGetKanvasoFull',
      'onEditKanvasoObjekto',
      'onEditKanvaso',
      'onEditKanvasoLigilo',
      'onGetKanvasoObjekto',
      'onKanvasoSubscribe',
    ]),
  },
  async mounted() {
avathar's avatar
avathar включено в состав коммита
144
145
146
147
148
    interface KanvasojKanvasoResult {
      data?: {
        kanvasojKanvaso?: KanvasojKanvaso;
      };
    }
avathar's avatar
avathar включено в состав коммита
149
    document.getElementsByTagName('body')[0].style.overflow = 'hidden';
avathar's avatar
avathar включено в состав коммита
150

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
151
    await this.onGetKanvasoFull({ uuid: this.projectUuid })
avathar's avatar
avathar включено в состав коммита
152
153
154
      .then((result: KanvasojKanvasoResult) => {
        if (!result.data.kanvasojKanvaso.edges.length) {
          throw new Error(result.toString());
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
155
156
157
        }
        this.onKanvasoSubscribe({
          kanvasoj: [this.currentProject.objId],
avathar's avatar
avathar включено в состав коммита
158
        }).then((data: any) => {
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
159
160
161
          this.wsSubscribe = data;
        });
      })
avathar's avatar
avathar включено в состав коммита
162
      .catch((err: any) => {
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
163
164
165
        console.log('error get kanvaso full :>> ', err);
        this.$router.replace({ name: 'projects' });
      });
avathar's avatar
avathar включено в состав коммита
166
    await this.onGetKanvasoObjekto({ kanvaso_Uuid: this.projectUuid });
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
167
168
169
170
171
172

    const resizeHandler = () => {
      game.scale.resize(window.innerWidth, window.innerHeight);
    };

    window.addEventListener('resize', resizeHandler);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
173
    const game = new Phaser.Game(config);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
174

avathar's avatar
avathar включено в состав коммита
175
176
177
178
179
180
181
182
183
    // window.addEventListener('resize', function (event) {
    //   console.log('resize');
    //   game.scale.resize(
    //     window.innerWidth < 600 ? window.innerWidth : window.innerWidth - 205,
    //     window.innerWidth < 600
    //       ? window.innerHeight - 51
    //       : window.innerHeight - 10,
    //   );
    // });
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
184
185
186
187
188
189
190
191
    // setInterval(() => {
    //   game.scale.resize(
    //     window.innerWidth < 600 ? window.innerWidth : window.innerWidth - 205,
    //     window.innerWidth < 600
    //       ? window.innerHeight - 51
    //       : window.innerHeight - 10,
    //   );
    // }, 100);
avathar's avatar
avathar включено в состав коммита
192
  },
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
193
194
  beforeUnmount() {
    this.wsSubscribe.unsubscribe();
avathar's avatar
avathar включено в состав коммита
195
    // delete window.objekto;
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
196
  },
avathar's avatar
avathar включено в состав коммита
197
};
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
198
</script>
avathar's avatar
avathar включено в состав коммита
199
200
201
202
203
<style>
#phaser-container > canvas {
  margin-top: 0 !important;
}
</style>