Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
LayerDragGrid.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using UnityEngine;
3using UnityEngine.UI;
4
6{
7 public class PutbackInfo
8 {
9 public Thing thing;
10
12 }
13
14 public static LayerDragGrid Instance;
15
16 public List<PutbackInfo> putBacks = new List<PutbackInfo>();
17
19
20 public Image imageOwner;
21
23
25
26 public Transform transIndex;
27
28 public List<ButtonGrid> buttons;
29
31
33
35
37
39
41
43
44 public int currentIndex;
45
47
49
51
52 private bool wasInventoryOpen;
53
54 private int lastNum;
55
57
58 public override bool CanCancelAI => true;
59
60 public override bool RepeatAI => true;
61
62 public void OnOpen()
63 {
64 Instance = this;
65 InvOwner.Trader = owner;
66 wasInventoryOpen = ELayer.ui.IsInventoryOpen;
68 {
69 ELayer.ui.OpenFloatInv(ignoreSound: true);
70 }
71 }
72
73 public LayerDragGrid SetInv(InvOwnerDraglet owner, bool refuelFromLayerDragGrid = false)
74 {
75 owner.Init();
77 this.owner = owner;
78 textTitle.text = owner.langTransfer.lang();
79 OnOpen();
82 for (int j = 0; j < buttons.Count; j++)
83 {
84 buttons[j].gameObject.AddComponent<CanvasGroup>();
85 if (owner.numDragGrid > j)
86 {
87 buttons[j].SetCardGrid(null, owner);
88 buttons[j].index = j;
89 owner.buttons.Add(buttons[j]);
90 }
91 else
92 {
93 buttons[j].SetActive(enable: false);
94 }
95 }
99 InvokeRepeating("RefreshCost", 0f, 0.2f);
100 this.RebuildLayout(recursive: true);
102 RefreshCost();
103 this.RebuildLayout(recursive: true);
104 buttonRefuel.SetActive(owner.ShowFuel);
107 if (owner.CanTargetAlly && ELayer.pc.party.members.Count > 1)
108 {
109 listAlly.callbacks = new UIList.Callback<Chara, UIButton>
110 {
111 onInstantiate = delegate(Chara a, UIButton b)
112 {
113 a.SetImage(b.icon);
114 b.SetTooltipLang(a.Name);
115 },
116 onClick = delegate(Chara c, UIButton i)
117 {
119 {
120 SE.PopInventory();
122 }
123 },
124 onSort = delegate(Chara a, UIList.SortMode m)
125 {
126 a.SetSortVal(m);
127 return -a.sortVal;
128 },
129 onList = delegate
130 {
131 foreach (Chara member in ELayer.pc.party.members)
132 {
133 if (!member.IsPC)
134 {
135 listAlly.Add(member);
136 }
137 }
138 }
139 };
140 listAlly.List();
141 }
142 else
143 {
144 listAlly.SetActive(enable: false);
145 }
146 buttonRefuel.SetOnClick(delegate
147 {
148 if (!ELayer.pc.HasNoGoal)
149 {
150 SE.BeepSmall();
151 }
152 else
153 {
154 windows[0].SetInteractable(enable: false, 0f);
155 info.InitFuel(owner.owner);
156 Create(new InvOwnerRefuel(owner.owner), refuelFromLayerDragGrid: true).SetOnKill(delegate
157 {
158 if (!isDestroyed)
159 {
160 windows[0].SetInteractable(enable: true);
161 info.Init(owner.owner);
162 OnOpen();
163 RefreshCurrentGrid();
164 Redraw();
165 owner.OnAfterRefuel();
166 }
167 });
168 }
169 });
170 buttonAutoRefuel.SetOnClick(delegate
171 {
172 SE.Click();
173 owner.owner.autoRefuel = !owner.owner.autoRefuel;
174 RefreshCost();
176 {
178 }
179 });
180 buttonStock.SetOnClick(delegate
181 {
182 SE.Click();
183 owner.owner.c_isDisableStockUse = !owner.owner.c_isDisableStockUse;
185 RefreshCost();
186 });
187 if (owner is InvOwnerRefuel)
188 {
189 if (refuelFromLayerDragGrid)
190 {
191 info.SetActive(enable: false);
192 }
193 else
194 {
195 Debug.Log(owner.owner);
197 }
198 }
199 else
200 {
202 }
203 return this;
204 }
205
206 public int GetPrice()
207 {
208 return owner.price;
209 }
210
211 public void RefreshCost()
212 {
213 buttonAutoRefuel.mainText.text = (owner.owner.autoRefuel ? "On" : "Off");
214 buttonAutoRefuel.icon.SetAlpha(owner.owner.autoRefuel ? 1f : 0.4f);
215 buttonStock.mainText.text = ((!owner.owner.c_isDisableStockUse) ? "On" : "Off");
216 buttonStock.icon.SetAlpha((!owner.owner.c_isDisableStockUse) ? 1f : 0.4f);
217 textFuel.text = (int)((float)owner.owner.c_charges / (float)owner.owner.trait.MaxFuel * 100f) + "%";
218 int price = GetPrice();
219 itemCost.transform.parent.SetActive(price != 0);
220 if (price != 0)
221 {
222 itemCost.text1.SetText(Lang._currency(GetPrice()), (ELayer.pc.GetCurrency(owner.IDCurrency) >= price) ? FontColor.Good : FontColor.Bad);
223 itemCost.image1.sprite = SpriteSheet.Get("icon_" + owner.IDCurrency);
224 }
225 }
226
227 public bool IsAllGridSet()
228 {
229 for (int i = 0; i < owner.numDragGrid; i++)
230 {
231 if (buttons[i].card == null)
232 {
233 return false;
234 }
235 }
236 return true;
237 }
238
239 public override void ClearButtons()
240 {
241 for (int i = 0; i < owner.numDragGrid; i++)
242 {
243 buttons[i].SetCardGrid(null);
244 }
245 RefreshCurrentGrid();
246 uiIngredients.Refresh();
247 }
248
249 public override void RefreshCurrentGrid()
250 {
251 int num = -1;
252 for (int i = 0; i < buttons.Count; i++)
253 {
254 bool flag = buttons[i].Card != null;
255 if (num == -1 && (!flag || i == owner.numDragGrid - 1))
256 {
257 num = i;
258 }
259 buttons[i].interactable = flag || num == i;
260 buttons[i].GetComponent<CanvasGroup>().alpha = (buttons[i].interactable ? 1f : 0.5f);
261 }
262 currentIndex = num;
263 bool flag2 = num >= 0 && num < owner.numDragGrid;
264 if (flag2)
265 {
266 transIndex.position = buttons[num].transform.position;
267 }
268 transIndex.SetActive(flag2);
269 Redraw();
270 }
271
272 public override List<Thing> GetTargets()
273 {
274 List<Thing> list = new List<Thing>();
275 TraitCrafter traitCrafter = owner.owner.trait as TraitCrafter;
276 for (int i = 0; i < traitCrafter.numIng; i++)
277 {
278 list.Add(buttons[i].card?.Thing ?? null);
279 }
280 return list;
281 }
282
283 private void Update()
284 {
285 Validate();
286 }
287
288 public void Validate()
289 {
290 Card card = buttonOwner.card;
291 if (card.Num != lastNum)
292 {
293 lastNum = card.Num;
294 buttonOwner.SetCardGrid(owner.owner);
295 }
296 if (card == null || card.isDestroyed)
297 {
298 Close();
299 }
300 }
301
302 public void Redraw()
303 {
304 foreach (ButtonGrid button in buttons)
305 {
306 if (button.gameObject.activeSelf)
307 {
308 button.Redraw();
309 }
310 }
311 LayerInventory.SetDirtyAll(immediate: true);
312 }
313
314 public void AddPutBack(Thing t, Thing container)
315 {
316 if (container != null)
317 {
318 putBacks.Add(new PutbackInfo
319 {
320 thing = t,
321 container = container
322 });
323 }
324 }
325
326 public void TryPutBack()
327 {
328 foreach (PutbackInfo putBack in putBacks)
329 {
330 if (!putBack.thing.isDestroyed && putBack.thing.Num != 0 && putBack.thing.parent != putBack.container && !putBack.container.isDestroyed)
331 {
332 putBack.container.AddCard(putBack.thing);
333 }
334 }
335 putBacks.Clear();
336 RefreshCurrentGrid();
337 }
338
339 public override void OnEndCraft()
340 {
341 TryPutBack();
342 }
343
344 public override void OnKill()
345 {
346 EInput.haltInput = false;
348 InvOwner.Trader = null;
349 if (!wasInventoryOpen && ELayer.ui.IsInventoryOpen)
350 {
351 ELayer.ui.ToggleInventory();
352 }
355 {
356 ELayer.pc.ai.Cancel();
357 }
358 }
359
360 public override void OnUpdateInput()
361 {
362 if (EInput.action == EAction.MenuInventory || Input.GetKeyDown(KeyCode.Tab))
363 {
364 Close();
366 }
367 else
368 {
369 base.OnUpdateInput();
370 }
371 }
372
373 public override void OnRightClick()
374 {
375 if (InputModuleEX.GetComponentOf<ButtonGrid>() == null)
376 {
377 Close();
378 }
379 }
380
381 public static LayerDragGrid Create(InvOwnerDraglet owner, bool refuelFromLayerDragGrid = false)
382 {
383 return ELayer.ui.AddLayer<LayerDragGrid>("LayerInventory/LayerDragGrid").SetInv(owner, refuelFromLayerDragGrid);
384 }
385
387 {
388 Msg.Say("offer_what");
389 return Create(new InvOwnerChaosOffering(altar.owner)
390 {
391 altar = altar
392 });
393 }
394
396 {
397 Msg.Say("offer_what");
398 return Create(new InvOwnerOffering(altar.owner)
399 {
400 altar = altar
401 });
402 }
403
404 public static LayerDragGrid CreateDeliver(InvOwnerDeliver.Mode mode = InvOwnerDeliver.Mode.Default, Card owner = null)
405 {
406 if (mode == InvOwnerDeliver.Mode.Tax)
407 {
408 Msg.Say("bills", ELayer.player.taxBills.ToString() ?? "");
409 }
410 Msg.Say("deliver_what");
411 return Create(new InvOwnerDeliver(owner)
412 {
413 mode = mode
414 });
415 }
416
418 {
419 return Create(new InvOwnerGive(c)
420 {
421 chara = c
422 });
423 }
424
426 {
427 return Create(new InvOwnerCraft(crafter.owner)
428 {
429 crafter = crafter
430 });
431 }
432
434 {
435 Msg.Say("recycle_what");
436 return Create(new InvOwnerRecycle(recycle.owner)
437 {
438 recycle = recycle
439 });
440 }
441
443 {
444 Msg.Say("target_what");
445 return Create(new InvOwnerGacha(gacha.owner)
446 {
447 gacha = gacha
448 });
449 }
450
451 public static LayerDragGrid TryProc(Chara cc, InvOwnerEffect owner)
452 {
453 owner.cc = cc;
454 if (cc.IsPC)
455 {
456 return Create(owner);
457 }
458 int num = ((owner.count == -1) ? 1 : owner.count);
459 for (int i = 0; i < num; i++)
460 {
461 List<Thing> list = cc.things.List((Thing t) => owner.ShouldShowGuide(t));
462 if (list.Count > 0)
463 {
464 Thing t2 = list.RandomItem();
465 owner._OnProcess(t2);
466 continue;
467 }
468 if (i == 0)
469 {
471 }
472 break;
473 }
474 return null;
475 }
476
477 public static LayerDragGrid CreateIdentify(Chara cc, bool superior = false, BlessedState state = BlessedState.Normal, int price = 0, int count = 1)
478 {
479 return TryProc(cc, new InvOwnerIdentify
480 {
481 state = state,
482 price = price,
483 count = count,
484 superior = superior
485 });
486 }
487
488 public static LayerDragGrid CreateEnchant(Chara cc, bool armor, bool superior = false, BlessedState state = BlessedState.Normal, int count = 1)
489 {
490 return TryProc(cc, new InvOwnerEnchant
491 {
492 armor = armor,
493 state = state,
494 superior = superior,
495 count = count
496 });
497 }
498
499 public static LayerDragGrid CreateChangeMaterial(Chara cc, Thing consume, SourceMaterial.Row mat, EffectId idEffect, BlessedState state = BlessedState.Normal, int price = 0, int count = 1)
500 {
501 return TryProc(cc, new InvOwnerChangeMaterial
502 {
503 consume = consume,
504 mat = mat,
505 state = state,
506 price = price,
507 count = count,
508 idEffect = idEffect
509 });
510 }
511
512 public static LayerDragGrid CreateUncurse(Chara cc, BlessedState state = BlessedState.Normal, int price = 0, int count = 1)
513 {
514 return TryProc(cc, new InvOwnerUncurse
515 {
516 state = state,
517 price = price,
518 count = count
519 });
520 }
521
522 public static LayerDragGrid CreateLighten(Chara cc, BlessedState state = BlessedState.Normal, int price = 0, int count = 1)
523 {
524 return TryProc(cc, new InvOwnerLighten
525 {
526 state = state,
527 price = price,
528 count = count
529 });
530 }
531
532 public static LayerDragGrid CreateReconstruction(Chara cc, BlessedState state = BlessedState.Normal, int price = 0, int count = 1)
533 {
534 return TryProc(cc, new InvOwnerReconstruction
535 {
536 state = state,
537 price = price,
538 count = count
539 });
540 }
541}
BlessedState
Definition: BlessedState.cs:2
EAction
Definition: EAction.cs:2
EffectId
Definition: EffectId.cs:2
FontColor
Definition: FontColor.cs:2
virtual bool IsRunning
Definition: AIAct.cs:31
virtual Status Cancel()
Definition: AIAct.cs:291
Card card
Definition: ButtonGrid.cs:24
void Redraw()
Definition: ButtonGrid.cs:140
void SetCardGrid(Card c, InvOwner owner=null)
Definition: ButtonGrid.cs:145
Definition: Card.cs:11
bool isDestroyed
Definition: Card.cs:71
Card AddCard(Card c)
Definition: Card.cs:2887
string Name
Definition: Card.cs:2013
ICardParent parent
Definition: Card.cs:51
int GetCurrency(string id="money")
Definition: Card.cs:3652
bool autoRefuel
Definition: Card.cs:598
int sortVal
Definition: Card.cs:97
Trait trait
Definition: Card.cs:49
void SayNothingHappans()
Definition: Card.cs:6041
ThingContainer things
Definition: Card.cs:34
bool c_isDisableStockUse
Definition: Card.cs:1044
void SetImage(Image image, int dir, int idSkin=0)
Definition: Card.cs:5355
int Num
Definition: Card.cs:154
Definition: Chara.cs:10
AIAct ai
Definition: Chara.cs:187
override void SetSortVal(UIList.SortMode m, CurrencyType currency=CurrencyType.Money)
Definition: Chara.cs:6593
override bool IsPC
Definition: Chara.cs:597
Party party
Definition: Chara.cs:43
bool HasNoGoal
Definition: Chara.cs:821
Definition: EInput.cs:8
static void WaitReleaseKey()
Definition: EInput.cs:650
static EAction action
Definition: EInput.cs:259
Definition: ELayer.cs:4
static Chara pc
Definition: ELayer.cs:15
static Player player
Definition: ELayer.cs:13
static UI ui
Definition: ELayer.cs:21
virtual bool CanTargetAlly
virtual bool AllowStockIngredients
virtual void _OnProcess(Thing t)
override void BuildUICurrency(UICurrency uiCurrency, bool canReroll=false)
virtual void OnAfterRefuel()
virtual bool ShowFuel
void Init()
Definition: InvOwner.cs:743
Card owner
Definition: InvOwner.cs:538
Card Container
Definition: InvOwner.cs:540
string IDCurrency
Definition: InvOwner.cs:642
List< ButtonGrid > buttons
Definition: InvOwner.cs:542
virtual int numDragGrid
Definition: InvOwner.cs:624
virtual string langTransfer
Definition: InvOwner.cs:592
virtual bool ShouldShowGuide(Thing t)
Definition: InvOwner.cs:686
Definition: Lang.cs:6
static string _currency(object a, string IDCurrency)
Definition: Lang.cs:162
UIButton buttonAlly
override bool RepeatAI
void AddPutBack(Thing t, Thing container)
static LayerDragGrid CreateDeliver(InvOwnerDeliver.Mode mode=InvOwnerDeliver.Mode.Default, Card owner=null)
override void ClearButtons()
static LayerDragGrid CreateOffering(TraitAltar altar)
static LayerDragGrid CreateGacha(TraitGacha gacha)
static LayerDragGrid CreateGive(Chara c)
static LayerDragGrid CreateEnchant(Chara cc, bool armor, bool superior=false, BlessedState state=BlessedState.Normal, int count=1)
UIButton buttonAutoRefuel
UIDragGridInfo info
static LayerDragGrid CreateChangeMaterial(Chara cc, Thing consume, SourceMaterial.Row mat, EffectId idEffect, BlessedState state=BlessedState.Normal, int price=0, int count=1)
override List< Thing > GetTargets()
static LayerDragGrid CreateLighten(Chara cc, BlessedState state=BlessedState.Normal, int price=0, int count=1)
bool wasInventoryOpen
ButtonGrid CurrentButton
override void OnEndCraft()
static LayerDragGrid TryProc(Chara cc, InvOwnerEffect owner)
UIButton buttonRefuel
InvOwnerDraglet owner
UIButton buttonStock
List< PutbackInfo > putBacks
static LayerDragGrid Create(InvOwnerDraglet owner, bool refuelFromLayerDragGrid=false)
LayerDragGrid SetInv(InvOwnerDraglet owner, bool refuelFromLayerDragGrid=false)
UIDragGridIngredients uiIngredients
List< ButtonGrid > buttons
void RefreshCost()
override void OnUpdateInput()
UICurrency uiCurrency
bool IsAllGridSet()
Transform transIndex
static LayerDragGrid Instance
static LayerDragGrid CreateUncurse(Chara cc, BlessedState state=BlessedState.Normal, int price=0, int count=1)
override void RefreshCurrentGrid()
override bool CanCancelAI
override void OnKill()
UIText textTitle
static LayerDragGrid CreateChaosOffering(TraitAltarChaos altar)
static LayerDragGrid CreateRecycle(TraitRecycle recycle)
ButtonGrid buttonOwner
override void OnRightClick()
static LayerDragGrid CreateCraft(TraitCrafter crafter)
static LayerDragGrid CreateReconstruction(Chara cc, BlessedState state=BlessedState.Normal, int price=0, int count=1)
static LayerDragGrid CreateIdentify(Chara cc, bool superior=false, BlessedState state=BlessedState.Normal, int price=0, int count=1)
static bool CloseAllyInv(Chara c)
static LayerInventory CreateContainerAlly(Chara owner, Card container)
static void SetDirtyAll(bool immediate=false)
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
List< Chara > members
Definition: Party.cs:18
int taxBills
Definition: Player.cs:715
static Sprite Get(string id)
Definition: SpriteSheet.cs:28
List< Thing > List(Func< Thing, bool > func, bool onlyAccessible=false)
Definition: Thing.cs:8
virtual int numIng
Definition: TraitCrafter.cs:33
bool IsRequireFuel
Definition: Trait.cs:451
virtual int MaxFuel
Definition: Trait.cs:436
Card owner
Definition: Trait.cs:26
bool IsFuelEnough(int num=1, List< Thing > excludes=null, bool tryRefuel=true)
Definition: Trait.cs:1269
Image icon
Definition: UIButton.cs:110
void SetTooltipLang(string lang=null)
Definition: UIButton.cs:373
void Init(Card _owner)
void InitFuel(Card _owner)
Definition: UIItem.cs:5
UIText text1
Definition: UIItem.cs:6
Definition: UIList.cs:9
SortMode
Definition: UIList.cs:27
override void Add(object item)
Definition: UIList.cs:302
override void List()
Definition: UIList.cs:717
Definition: UIText.cs:6
void SetText(string s)
Definition: UIText.cs:159