CreateScrollablePanel.ts 3,6 КБ
Newer Older
avathar's avatar
avathar включено в состав коммита
1
2
// @ts-nocheck

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
3
4
5
6
7
// import 'phaser';
// import UIPlugin from 'phaser3-rex-plugins/templates/ui/ui-plugin';
import { COLOR_LIGHT, COLOR_PRIMARY, COLOR_DARK } from './Const';
import { DefaultDepth, DragObjectDepth } from './Const';
import CreateColumnPanelsBox from './CreateColumnPanelsBox';
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
8
9
10
import CreateHeader from './CreateHeader';
import AddResizeController from './AddResizeController';

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
11
12
type Scene = {
  rexUI: {
avathar's avatar
avathar включено в состав коммита
13
14
15
16
    add: {
      sizer: (config: SizerConfig) => Sizer;
    };
  };
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
17
18
19
20
21
};

type SizerConfig = {
  orientation: string;
  space: {
avathar's avatar
avathar включено в состав коммита
22
23
24
25
    left: number;
    right: number;
    top: number;
    bottom: number;
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
26
27
28
29
30
31
32
  };
};

type Sizer = {
  add: (item: any, config: any) => void;
};

avathar's avatar
avathar включено в состав коммита
33
34
const CreateScrollablePanel = (
  scene: Scene,
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
35
  objekto: TreeNode,
avathar's avatar
avathar включено в состав коммита
36
): ScrollablePanel => {
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
37
  const config: ScrollablePanelConfig = {
avathar's avatar
avathar включено в состав коммита
38
    adaptThumbSizeMode: true,
avathar's avatar
avathar включено в состав коммита
39
40
41
42
43
44
45
    width: 400,
    height: 400,
    background: scene.rexUI.add.roundRectangle({
      radius: 10,
      strokeColor: COLOR_DARK,
    }),
    panel: {
avathar's avatar
avathar включено в состав коммита
46
47
48
49
      child: CreateColumnPanelsBox(
        scene,
        objekto ? objekto[0]?.children[0] : {},
      ),
avathar's avatar
avathar включено в состав коммита
50
51
52
      mask: {
        padding: 2,
        updateMode: 'everyTick',
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
53
      },
avathar's avatar
avathar включено в состав коммита
54
55
56
57
    },
    sliderX: {
      track: { width: 20, radius: 10, color: COLOR_DARK },
      thumb: { radius: 13, color: COLOR_LIGHT },
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
58
59
      hideUnscrollableSlider: true,
      input: 'click',
avathar's avatar
avathar включено в состав коммита
60
61
62
63
    },
    sliderY: {
      track: { width: 20, radius: 10, color: COLOR_DARK },
      thumb: { radius: 13, color: COLOR_LIGHT },
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
64
65
      hideUnscrollableSlider: true,
      input: 'click',
avathar's avatar
avathar включено в состав коммита
66
67
68
69
70
71
72
73
74
75
76
    },
    scrollerX: false,
    scrollerY: false,
    space: {
      left: 10,
      right: 10,
      top: 10,
      bottom: 10,
      sliderX: 10,
      sliderY: 10,
    },
avathar's avatar
avathar включено в состав коммита
77
    header: CreateHeader(scene, objekto ? objekto[0]?.nomo?.enhavo : ''),
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
78
  };
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
79

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
80
81
82
  // const config2: ScrollablePanelConfig = {
  //   // width: 400,
  //   // height: 400,
avathar's avatar
avathar включено в состав коммита
83

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
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
  //   panel: {
  //     child: CreateColumnPanelsBox(
  //       scene,
  //       objekto ? objekto[0]?.children[0] : {},
  //     ),
  //     mask: {
  //       // padding: 2,
  //       updateMode: 'everyTick',
  //     },
  //   },
  //   sliderX: {
  //     track: { width: 20, radius: 10, color: COLOR_DARK },
  //     thumb: { radius: 13, color: COLOR_LIGHT },
  //     hideUnscrollableSlider: true,
  //     input: 'click',
  //   },
  //   sliderY: {
  //     track: { width: 20, radius: 10, color: COLOR_DARK },
  //     thumb: { radius: 13, color: COLOR_LIGHT },
  //     hideUnscrollableSlider: true,
  //     input: 'click',
  //   },
  //   scrollerX: true,
  //   scrollerY: true,
  //   space: {
  //     // left: 10,
  //     // right: 10,
  //     // top: 10,
  //     // bottom: 10,
  //     sliderX: 10,
  //     sliderY: 10,
  //   },
  //   header: CreateHeader(scene, objekto ? objekto[0]?.nomo?.enhavo : ''),
  // };
avathar's avatar
avathar включено в состав коммита
118

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
119
  // Создаем ScrollablePanel
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
120
  const scrollablePanel = scene.rexUI.add.scrollablePanel(config);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
121
  // const scrollablePanel2 = scene.rexUI.add.scrollablePanel(config2);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
122
123
124

  // Устанавливаем возможность перетаскивания
  scrollablePanel.setDraggable('header');
avathar's avatar
avathar включено в состав коммита
125
  // scrollablePanel2.setDraggable('header');
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
126
127
128

  // Вызываем метод layout для обновления компоновки
  scrollablePanel.layout();
avathar's avatar
avathar включено в состав коммита
129
  // scrollablePanel2.layout();
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
130
131

  // Добавляем контроллер для изменения размера
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
132
  AddResizeController(scrollablePanel);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
133
  // AddResizeController(scrollablePanel2);
avathar's avatar
avathar включено в состав коммита
134

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
135
  // scrollablePanel.add(scrollablePanel2);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
136

avathar's avatar
avathar включено в состав коммита
137
138
  return scrollablePanel;
};
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
139
140

export default CreateScrollablePanel;