Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
LayerEditPlaylist.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using UnityEngine;
3
5{
6 public enum Mode
7 {
10 }
11
12 public class ListBGM : ListOwner<BGMData, ItemGeneral>
13 {
14 public List<BGMData> items;
15
16 public string idTitle;
17
18 public bool single;
19
20 public new LayerEditPlaylist layer => base.layer as LayerEditPlaylist;
21
22 public override string IdTitle => idTitle;
23
24 public override void List()
25 {
26 list.callbacks = new UIList.Callback<BGMData, ItemGeneral>
27 {
28 onInstantiate = delegate(BGMData a, ItemGeneral b)
29 {
30 b.SetMainText(((a.id > 1) ? "♪ " : "") + a._name.IsEmpty(a.name).ToTitleCase());
31 b.button1.keyText.text = a.id.ToString() ?? "";
32 if (a.id != 0 && layer.jukebox == null)
33 {
35 {
36 EClass.Sound.PlayBGM(a);
37 });
38 }
39 if (main && layer.mode == Mode.Playlist)
40 {
42 {
43 BGMData select2 = items.Move(a, 1);
44 list.OnMove(a, select2);
45 });
47 {
48 BGMData select = items.Move(a, -1);
49 list.OnMove(a, select);
50 });
51 }
52 b.Build();
53 if (!single)
54 {
55 b.button1.soundClick = null;
56 }
57 },
58 onClick = delegate(BGMData c, ItemGeneral i)
59 {
60 if (layer.mode == Mode.Playlist)
61 {
62 items.Remove(c);
63 (other as ListBGM).items.Add(c);
64 MoveToOther(c);
65 }
66 else if (layer.board != null)
67 {
68 layer.board.data.idBGM = ((layer.board.data.idBGM != c.id) ? c.id : 0);
70 layer.Close();
71 }
72 else
73 {
75 layer.Close();
76 }
77 },
78 onList = delegate
79 {
80 foreach (BGMData item in items)
81 {
82 list.Add(item);
83 }
84 }
85 };
86 list.List();
87 }
88 }
89
90 public List<BGMData> itemsDay = new List<BGMData>();
91
92 public List<BGMData> itemsNight = new List<BGMData>();
93
95
96 public bool day;
97
98 public bool keepPlaying;
99
100 public bool single;
101
102 public bool dayNight;
103
104 public Mode mode;
105
107
109
110 public Dictionary<int, BGMData> bgms => ELayer.core.refs.dictBGM;
111
112 public override void OnInit()
113 {
114 }
115
116 public void Activate(TraitJukeBox _box)
117 {
118 jukebox = _box;
119 single = true;
120 Activate(Mode.LotBGM);
121 }
122
123 public void Activate(TraitHouseBoard _board)
124 {
125 board = _board;
126 single = true;
127 Activate(Mode.LotBGM);
128 }
129
130 public void Activate(Mode _mode = Mode.Playlist)
131 {
132 mode = _mode;
133 Msg.Nerun("nPlaylist", "UN_nerun_smile3");
134 if (mode == Mode.Playlist)
135 {
136 if (dayNight)
137 {
138 windows[0].AddBottomButton("togglePlaylist", TogglePL);
139 }
140 foreach (int item in ELayer._map._plDay)
141 {
142 if (bgms.ContainsKey(item))
143 {
144 itemsDay.Add(bgms[item]);
145 }
146 }
147 foreach (int item2 in ELayer._map._plNight)
148 {
149 if (bgms.ContainsKey(item2))
150 {
151 itemsNight.Add(bgms[item2]);
152 }
153 }
154 }
155 else
156 {
157 windows[1].SetActive(enable: false);
158 windows[0].SetPosition();
159 multi.Double = false;
160 }
161 Refresh();
162 foreach (ListOwner owner in multi.owners)
163 {
164 owner.OnSwitchContent();
165 }
166 }
167
168 public void Refresh()
169 {
170 List<BGMData> list = ((mode == Mode.LotBGM) ? new List<BGMData>() : (day ? itemsDay : itemsNight));
171 List<BGMData> list2 = new List<BGMData>();
172 foreach (BGMData value in bgms.Values)
173 {
174 if (!ELayer.debug.allBGM && !ELayer.player.knownBGMs.Contains(value.id))
175 {
176 continue;
177 }
178 if (mode == Mode.LotBGM)
179 {
180 list.Add(value);
181 continue;
182 }
183 bool flag = value.id != 0;
184 foreach (BGMData item in list)
185 {
186 if (item.id == value.id)
187 {
188 flag = false;
189 break;
190 }
191 }
192 if (flag)
193 {
194 list2.Add(value);
195 }
196 }
197 multi.Clear();
198 if (mode == Mode.LotBGM)
199 {
200 multi.AddOwner(0, new ListBGM
201 {
202 items = list,
203 idTitle = "wBGMLot",
204 single = true
205 });
206 }
207 else
208 {
209 multi.AddOwner(0, new ListBGM
210 {
211 items = list,
212 idTitle = "wPlaylist"
213 });
214 multi.AddOwner(1, new ListBGM
215 {
216 items = list2,
217 idTitle = "wPlaylist2"
218 });
219 }
220 multi.Build();
221 }
222
223 public void TogglePL()
224 {
225 day = !day;
226 Refresh();
227 multi.Refresh();
228 SE.Click();
229 }
230
231 public override void OnKill()
232 {
233 if (mode == Mode.LotBGM)
234 {
235 ELayer.Sound.StopBGM();
237 return;
238 }
239 ELayer._map._plDay.Clear();
240 ELayer._map._plNight.Clear();
241 foreach (BGMData item in itemsDay)
242 {
243 ELayer._map._plDay.Add(item.id);
244 }
245 foreach (BGMData item2 in itemsNight)
246 {
247 ELayer._map._plNight.Add(item2.id);
248 }
249 Object.DestroyImmediate(ELayer._map.plDay);
250 ELayer._map.plDay = null;
252 if (!keepPlaying)
253 {
254 ELayer.Sound.StopBGM();
256 }
257 }
258
259 public override void OnSwitchContent(Window window)
260 {
261 if (multi.owners.Count > 0)
262 {
263 multi.owners[window.windowIndex].OnSwitchContent();
264 }
265 }
266}
bool allBGM
Definition: CoreDebug.cs:198
Sprite resume
Definition: CoreRef.cs:78
Sprite down
Definition: CoreRef.cs:102
Sprite up
Definition: CoreRef.cs:100
Dictionary< int, BGMData > dictBGM
Definition: CoreRef.cs:369
Icons icons
Definition: CoreRef.cs:339
CoreRef refs
Definition: Core.cs:51
Definition: EClass.cs:5
static Core core
Definition: EClass.cs:6
Definition: ELayer.cs:4
static Player player
Definition: ELayer.cs:13
static Core core
Definition: ELayer.cs:7
static CoreDebug debug
Definition: ELayer.cs:43
static Map _map
Definition: ELayer.cs:23
static SoundManager Sound
Definition: ELayer.cs:41
static Zone _zone
Definition: ELayer.cs:25
void Build()
Definition: ItemGeneral.cs:161
void SetMainText(string lang, Sprite sprite=null, bool disableMask=true)
Definition: ItemGeneral.cs:101
UIButton AddSubButton(Sprite sprite, Action action, string lang=null, Action< UITooltip > onTooltip=null)
Definition: ItemGeneral.cs:76
new LayerEditPlaylist layer
override void OnSwitchContent(Window window)
void Activate(TraitHouseBoard _board)
TraitHouseBoard board
override void OnInit()
override void OnKill()
List< BGMData > itemsNight
List< BGMData > itemsDay
void Activate(TraitJukeBox _box)
Dictionary< int, BGMData > bgms
void Activate(Mode _mode=Mode.Playlist)
List< Window > windows
Definition: Layer.cs:116
virtual void Close()
Definition: Layer.cs:463
virtual void OnSwitchContent()
Definition: ListOwner.cs:77
List< int > _plNight
Definition: Map.cs:58
List< int > _plDay
Definition: Map.cs:55
Playlist plDay
Definition: Map.cs:77
Definition: Msg.cs:5
static void Nerun(string lang, string idPortrait="UN_nerun")
Definition: Msg.cs:145
HashSet< int > knownBGMs
Definition: Player.cs:865
void OnSetBGM(BGMData d)
Definition: TraitJukeBox.cs:21
Definition: UIList.cs:9
override void Add(object item)
Definition: UIList.cs:302
override void List()
Definition: UIList.cs:717
void AddOwner(int i, ListOwner o)
Definition: UIMultiList.cs:25
void Clear()
Definition: UIMultiList.cs:20
List< ListOwner > owners
Definition: UIMultiList.cs:6
void Refresh()
Definition: UIMultiList.cs:54
void Build(UIList.SortMode m=UIList.SortMode.ByNone)
Definition: UIMultiList.cs:41
Definition: Window.cs:13
int windowIndex
Definition: Window.cs:697
void RefreshBGM()
Definition: Zone.cs:2742
void RefreshPlaylist()
Definition: Zone.cs:2734