Elin Decompiled Documentation EA 23.264 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), onlyAccessible: true);
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 power = 100, int price = 0, int count = 1)
533 {
534 return TryProc(cc, new InvOwnerReconstruction
535 {
536 state = state,
537 price = price,
538 count = count,
539 power = power
540 });
541 }
542}
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:295
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:76
Card AddCard(Card c)
Definition: Card.cs:3109
string Name
Definition: Card.cs:2140
ICardParent parent
Definition: Card.cs:56
int GetCurrency(string id="money")
Definition: Card.cs:4000
bool autoRefuel
Definition: Card.cs:627
int sortVal
Definition: Card.cs:102
Trait trait
Definition: Card.cs:54
void SayNothingHappans()
Definition: Card.cs:6986
ThingContainer things
Definition: Card.cs:39
bool c_isDisableStockUse
Definition: Card.cs:1085
void SetImage(Image image, int dir, int idSkin=0)
Definition: Card.cs:6255
int Num
Definition: Card.cs:159
Definition: Chara.cs:10
AIAct ai
Definition: Chara.cs:204
override void SetSortVal(UIList.SortMode m, CurrencyType currency=CurrencyType.Money)
Definition: Chara.cs:7261
override bool IsPC
Definition: Chara.cs:614
Party party
Definition: Chara.cs:43
bool HasNoGoal
Definition: Chara.cs:1002
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:738
Card owner
Definition: InvOwner.cs:533
Card Container
Definition: InvOwner.cs:535
string IDCurrency
Definition: InvOwner.cs:637
List< ButtonGrid > buttons
Definition: InvOwner.cs:537
virtual int numDragGrid
Definition: InvOwner.cs:619
virtual string langTransfer
Definition: InvOwner.cs:587
virtual bool ShouldShowGuide(Thing t)
Definition: InvOwner.cs:681
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()
static LayerDragGrid CreateReconstruction(Chara cc, BlessedState state=BlessedState.Normal, int power=100, int price=0, int count=1)
UIText textTitle
static LayerDragGrid CreateChaosOffering(TraitAltarChaos altar)
static LayerDragGrid CreateRecycle(TraitRecycle recycle)
ButtonGrid buttonOwner
override void OnRightClick()
static LayerDragGrid CreateCraft(TraitCrafter crafter)
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:19
int taxBills
Definition: Player.cs:908
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:35
bool IsRequireFuel
Definition: Trait.cs:477
virtual int MaxFuel
Definition: Trait.cs:462
Card owner
Definition: Trait.cs:28
bool IsFuelEnough(int num=1, List< Thing > excludes=null, bool tryRefuel=true)
Definition: Trait.cs:1333
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:353
override void List()
Definition: UIList.cs:768
Definition: UIText.cs:6
void SetText(string s)
Definition: UIText.cs:159