Elin Decompiled Documentation EA 23.344.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 }
161 else
162 {
163 windows[1].SetActive(enable: false);
164 windows[0].SetPosition();
165 multi.Double = false;
166 }
167 Refresh();
168 foreach (ListOwner owner in multi.owners)
169 {
170 owner.OnSwitchContent();
171 }
172 }
173
174 public void Refresh()
175 {
176 List<BGMData> list = ((mode == Mode.LotBGM) ? new List<BGMData>() : (day ? itemsDay : itemsNight));
177 List<BGMData> list2 = new List<BGMData>();
178 foreach (BGMData value in bgms.Values)
179 {
180 if (!ELayer.debug.allBGM && !ELayer.player.knownBGMs.Contains(value.id))
181 {
182 continue;
183 }
184 if (mode == Mode.LotBGM)
185 {
186 list.Add(value);
187 continue;
188 }
189 bool flag = value.id != 0;
190 foreach (BGMData item in list)
191 {
192 if (item.id == value.id)
193 {
194 flag = false;
195 break;
196 }
197 }
198 if (flag)
199 {
200 list2.Add(value);
201 }
202 }
203 multi.Clear();
204 if (mode == Mode.LotBGM)
205 {
206 multi.AddOwner(0, new ListBGM
207 {
208 items = list,
209 idTitle = "wBGMLot",
210 single = true
211 });
212 }
213 else
214 {
215 multi.AddOwner(0, new ListBGM
216 {
217 items = list,
218 idTitle = "wPlaylist",
219 sort = false
220 });
221 multi.AddOwner(1, new ListBGM
222 {
223 items = list2,
224 idTitle = "wPlaylist2"
225 });
226 }
227 multi.Build();
228 }
229
230 public void TogglePL()
231 {
232 day = !day;
233 Refresh();
234 multi.Refresh();
235 SE.Click();
236 }
237
238 public override void OnKill()
239 {
240 if (mode == Mode.LotBGM)
241 {
242 ELayer.Sound.StopBGM();
244 return;
245 }
246 ELayer._map._plDay.Clear();
247 ELayer._map._plNight.Clear();
248 foreach (BGMData item in itemsDay)
249 {
250 ELayer._map._plDay.Add(item.id);
251 }
252 foreach (BGMData item2 in itemsNight)
253 {
254 ELayer._map._plNight.Add(item2.id);
255 }
256 Object.DestroyImmediate(ELayer._map.plDay);
257 ELayer._map.plDay = null;
259 if (!keepPlaying)
260 {
261 ELayer.Sound.StopBGM();
263 }
264 }
265
266 public override void OnSwitchContent(Window window)
267 {
268 if (multi.owners.Count > 0)
269 {
270 multi.owners[window.windowIndex].OnSwitchContent();
271 }
272 }
273}
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:463
virtual void OnSwitchContent()
Definition: ListOwner.cs:85
List< int > _plNight
Definition: Map.cs:61
List< int > _plDay
Definition: Map.cs:58
Playlist plDay
Definition: Map.cs:80
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
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
Definition: Window.cs:13
int windowIndex
Definition: Window.cs:697
void RefreshBGM()
Definition: Zone.cs:3309
void RefreshPlaylist()
Definition: Zone.cs:3293