Elin Decompiled Documentation EA 23.356.1 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 bool sort = true;
21
22 public new LayerEditPlaylist layer => base.layer as LayerEditPlaylist;
23
24 public override string IdTitle => idTitle;
25
26 public override void List()
27 {
28 list.callbacks = new UIList.Callback<BGMData, ItemGeneral>
29 {
30 onRedraw = delegate(BGMData a, ItemGeneral b, int i)
31 {
32 b.SetMainText(((a.id > 1) ? "♪ " : "") + a._name.IsEmpty(a.name).ToTitleCase());
33 b.button1.keyText.text = a.id.ToString() ?? "";
34 if (a.id != 0 && layer.jukebox == null)
35 {
37 {
38 EClass.Sound.PlayBGM(a);
39 }, null, null, "play");
40 }
41 if (main && layer.mode == Mode.Playlist)
42 {
44 {
45 BGMData bGMData = items.Move(a, 1);
46 list.OnMove(a, bGMData);
47 }, null, null, "down");
49 {
50 BGMData bGMData = items.Move(a, -1);
51 list.OnMove(a, bGMData);
52 }, null, null, "up");
53 }
54 b.Build();
55 if (!single)
56 {
57 b.button1.soundClick = null;
58 }
59 },
60 onClick = delegate(BGMData c, ItemGeneral i)
61 {
62 if (layer.mode == Mode.Playlist)
63 {
64 items.Remove(c);
65 (other as ListBGM).items.Add(c);
66 MoveToOther(c);
67 }
68 else if (layer.board != null)
69 {
70 layer.board.data.idBGM = ((layer.board.data.idBGM != c.id) ? c.id : 0);
72 layer.Close();
73 }
74 else
75 {
77 layer.Close();
78 }
79 },
80 onList = delegate
81 {
82 if (sort)
83 {
84 items.Sort((BGMData a, BGMData b) => a.id - b.id);
85 }
86 foreach (BGMData item in items)
87 {
88 list.Add(item);
89 }
90 }
91 };
92 list.List();
93 }
94 }
95
96 public List<BGMData> itemsDay = new List<BGMData>();
97
98 public List<BGMData> itemsNight = new List<BGMData>();
99
101
102 public bool day;
103
104 public bool keepPlaying;
105
106 public bool single;
107
108 public bool dayNight;
109
110 public Mode mode;
111
113
115
116 public Dictionary<int, BGMData> bgms => ELayer.core.refs.dictBGM;
117
118 public override void OnInit()
119 {
120 }
121
122 public void Activate(TraitJukeBox _box)
123 {
124 jukebox = _box;
125 single = true;
126 Activate(Mode.LotBGM);
127 }
128
129 public void Activate(TraitHouseBoard _board)
130 {
131 board = _board;
132 single = true;
133 Activate(Mode.LotBGM);
134 }
135
136 public void Activate(Mode _mode = Mode.Playlist)
137 {
138 mode = _mode;
139 Msg.Nerun("nPlaylist", "UN_nerun_smile3");
140 if (mode == Mode.Playlist)
141 {
142 if (dayNight)
143 {
144 windows[0].AddBottomButton("togglePlaylist", TogglePL);
145 }
146 foreach (int item in ELayer._map._plDay)
147 {
148 if (bgms.ContainsKey(item))
149 {
150 itemsDay.Add(bgms[item]);
151 }
152 }
153 foreach (int item2 in ELayer._map._plNight)
154 {
155 if (bgms.ContainsKey(item2))
156 {
157 itemsNight.Add(bgms[item2]);
158 }
159 }
160 UIButton b = null;
161 b = windows[0].AddBottomButton(Text(), delegate
162 {
163 SE.Tab();
164 ELayer._map.config.shufflePL = !ELayer._map.config.shufflePL;
165 b.mainText.SetText(Text());
166 });
167 }
168 else
169 {
170 windows[1].SetActive(enable: false);
171 windows[0].SetPosition();
172 multi.Double = false;
173 }
174 Refresh();
175 foreach (ListOwner owner in multi.owners)
176 {
177 owner.OnSwitchContent();
178 }
179 static string Text()
180 {
181 return "shufflePL".lang() + ": " + (ELayer._map.config.shufflePL ? "on" : "off").lang();
182 }
183 }
184
185 public void Refresh()
186 {
187 List<BGMData> list = ((mode == Mode.LotBGM) ? new List<BGMData>() : (day ? itemsDay : itemsNight));
188 List<BGMData> list2 = new List<BGMData>();
189 foreach (BGMData value in bgms.Values)
190 {
191 if (!ELayer.debug.allBGM && !ELayer.player.knownBGMs.Contains(value.id))
192 {
193 continue;
194 }
195 if (mode == Mode.LotBGM)
196 {
197 list.Add(value);
198 continue;
199 }
200 bool flag = value.id != 0;
201 foreach (BGMData item in list)
202 {
203 if (item.id == value.id)
204 {
205 flag = false;
206 break;
207 }
208 }
209 if (flag)
210 {
211 list2.Add(value);
212 }
213 }
214 multi.Clear();
215 if (mode == Mode.LotBGM)
216 {
217 multi.AddOwner(0, new ListBGM
218 {
219 items = list,
220 idTitle = "wBGMLot",
221 single = true
222 });
223 }
224 else
225 {
226 multi.AddOwner(0, new ListBGM
227 {
228 items = list,
229 idTitle = "wPlaylist",
230 sort = false
231 });
232 multi.AddOwner(1, new ListBGM
233 {
234 items = list2,
235 idTitle = "wPlaylist2"
236 });
237 }
238 multi.Build();
239 }
240
241 public void TogglePL()
242 {
243 day = !day;
244 Refresh();
245 multi.Refresh();
246 SE.Click();
247 }
248
249 public override void OnKill()
250 {
251 if (mode == Mode.LotBGM)
252 {
253 ELayer.Sound.StopBGM();
255 return;
256 }
257 ELayer._map._plDay.Clear();
258 ELayer._map._plNight.Clear();
259 foreach (BGMData item in itemsDay)
260 {
261 ELayer._map._plDay.Add(item.id);
262 }
263 foreach (BGMData item2 in itemsNight)
264 {
265 ELayer._map._plNight.Add(item2.id);
266 }
267 Object.DestroyImmediate(ELayer._map.plDay);
268 ELayer._map.plDay = null;
270 if (!keepPlaying)
271 {
272 ELayer.Sound.StopBGM();
274 }
275 }
276
277 public override void OnSwitchContent(Window window)
278 {
279 if (multi.owners.Count > 0)
280 {
281 multi.owners[window.windowIndex].OnSwitchContent();
282 }
283 }
284}
bool allBGM
Definition: CoreDebug.cs:215
Sprite resume
Definition: CoreRef.cs:83
Sprite down
Definition: CoreRef.cs:107
Sprite up
Definition: CoreRef.cs:105
Dictionary< int, BGMData > dictBGM
Definition: CoreRef.cs:388
Icons icons
Definition: CoreRef.cs:358
CoreRef refs
Definition: Core.cs:51
Definition: EClass.cs:6
static Core core
Definition: EClass.cs:7
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:210
void SetMainText(string lang, Sprite sprite=null, bool disableMask=true)
Definition: ItemGeneral.cs:143
UIButton AddSubButton(Sprite sprite, Action action, string lang=null, Action< UITooltip > onTooltip=null, string id=null)
Definition: ItemGeneral.cs:97
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:468
virtual void OnSwitchContent()
Definition: ListOwner.cs:85
bool shufflePL
Definition: MapConfig.cs:50
List< int > _plNight
Definition: Map.cs:61
List< int > _plDay
Definition: Map.cs:58
Playlist plDay
Definition: Map.cs:80
MapConfig config
Definition: Map.cs:40
Definition: Msg.cs:5
static void Nerun(string lang, string idPortrait="UN_nerun")
Definition: Msg.cs:150
HashSet< int > knownBGMs
Definition: Player.cs:1134
void OnSetBGM(BGMData d)
Definition: TraitJukeBox.cs:21
UIText mainText
Definition: UIButton.cs:102
override void List()
override void Add(object o)
Definition: UIList.cs:9
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
void SetText(string s)
Definition: UIText.cs:163
Definition: Window.cs:13
int windowIndex
Definition: Window.cs:697
void RefreshBGM()
Definition: Zone.cs:3321
void RefreshPlaylist()
Definition: Zone.cs:3304