Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
LayerTravel.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using CreativeSpore.SuperTilemapEditor;
3using DG.Tweening;
4using UnityEngine;
5using UnityEngine.UI;
6
7public class LayerTravel : ELayer
8{
9 public UIList list;
10
12
13 public Image bg;
14
15 public float fadeAlpha;
16
17 public float fadeTime;
18
19 public Ease easeFade;
20
21 public Ease easeZoom;
22
23 public float startZoom;
24
25 public float endZoom;
26
27 public float timeZoom;
28
29 public bool highlightZone;
30
31 public bool useBG;
32
33 public bool useZoom;
34
35 private Point posHighlight = new Point();
36
37 public override bool blockWidgetClick => false;
38
39 public override void OnInit()
40 {
41 if (useZoom)
42 {
44 DOTween.To(() => ELayer.scene.screenElona.zoom, delegate(float x)
45 {
46 ELayer.scene.screenElona.zoom = x;
47 }, endZoom, timeZoom).SetEase(easeZoom);
48 }
49 if (useBG)
50 {
51 bg.DOFade(fadeAlpha, fadeTime).SetEase(easeFade);
52 ELayer.ui.layerFloat.SetActive(enable: false);
53 }
54 }
55
56 public override void OnKill()
57 {
58 if (useBG)
59 {
60 ELayer.ui.layerFloat.SetActive(enable: true);
61 }
62 if (useZoom)
63 {
65 }
66 }
67
68 public override void OnSwitchContent(Window window)
69 {
70 Refresh();
71 }
72
73 public int GetTravelFood(Zone z)
74 {
75 if (z.tempDist == 0)
76 {
77 return 0;
78 }
79 return 1 + GetTravelHours(z) / 24;
80 }
81
82 public int GetTravelHours(Zone z)
83 {
84 return z.tempDist * 3 * 100 / (100 + ELayer.pc.Evalue(407) * 2);
85 }
86
87 public int GetSortVal(Zone z)
88 {
89 if (ELayer.pc.homeZone == z)
90 {
91 return -1;
92 }
93 return GetTravelHours(z);
94 }
95
96 public void Refresh()
97 {
99 if (currentZone != null && !currentZone.isKnown)
100 {
101 currentZone = null;
102 }
103 list.callbacks = new UIList.Callback<Zone, UIButton>
104 {
105 onInstantiate = delegate(Zone a, UIButton b)
106 {
107 string text = "travelZone".lang(a.Name, a.tempDist.ToString() ?? "");
108 if (a == ELayer.pc.homeZone)
109 {
110 text = "travelHome".lang() + text;
111 }
112 if (a.isRandomSite)
113 {
114 text += (" (" + "days1".lang() + (ELayer.world.date.GetRemainingHours(a.dateExpire) / 24 + 1) + "days2".lang() + ")").TagSize(13);
115 }
116 b.mainText.SetText(text);
117 b.icon.sprite = TilemapUtils.GetOrCreateTileSprite(ELayer.scene.elomap.actor.tileset, a.icon) ?? b.icon.sprite;
118 b.icon.SetNativeSize();
119 b.refObj = a;
120 int travelFood = GetTravelFood(a);
121 int currency = ELayer.pc.GetCurrency("ration");
122 b.subText.SetText(travelFood.ToString() ?? "", (currency >= travelFood) ? FontColor.Good : FontColor.Bad);
124 },
125 onClick = delegate(Zone a, UIButton b)
126 {
127 if (a == currentZone)
128 {
129 Close();
131 }
132 else if (ELayer.pc.TryPay(GetTravelFood(a), "ration"))
133 {
134 if (ELayer.pc.burden.GetPhase() >= 3)
135 {
136 Msg.Say("errorOverweightTravel");
137 Close();
138 }
139 else
140 {
141 ELayer.player.distanceTravel = a.tempDist;
142 ELayer.player.dateTravel = ELayer.world.date.GetRaw();
143 foreach (UIList.ButtonPair button in list.buttons)
144 {
145 UIButton uIButton = button.component as UIButton;
146 if ((bool)uIButton && uIButton != b)
147 {
148 uIButton.GetComponent<CanvasGroup>().alpha = 0.5f;
149 }
150 }
151 float time = 0f;
152 int h = 0;
153 int maxHours = GetTravelHours(a);
154 ELayer.ui.AddLayer<LayerCover>().SetCondition(delegate(float delta)
155 {
156 time += delta;
157 if (time >= 0.035f)
158 {
159 time = 0f;
160 h++;
162 if (h >= maxHours)
163 {
164 Close();
166 ELayer.player.lastZonePos = null;
168 if (a is Zone_Lumiest)
169 {
170 state = ZoneTransition.EnterState.Right;
171 }
172 ELayer.pc.MoveZone(a, state);
173 return true;
174 }
175 }
176 return false;
177 });
178 }
179 }
180 },
181 onList = delegate
182 {
183 List<Zone> obj = ELayer.game.activeZone.Region.ListTravelZones();
184 obj.Sort((Zone a, Zone b) => GetSortVal(a) - GetSortVal(b));
185 foreach (Zone item in obj)
186 {
187 if (windows[0].idTab != 1)
188 {
189 list.Add(item);
190 }
191 }
192 }
193 };
194 list.List();
195 }
196}
@ currency
FontColor
Definition: FontColor.cs:2
void SetZoom(float z)
virtual float TargetZoom
int GetCurrency(string id="money")
Definition: Card.cs:3652
Point pos
Definition: Card.cs:55
bool TryPay(int a, string id="money")
Definition: Card.cs:3602
int Evalue(int ele)
Definition: Card.cs:2431
void MoveImmediate(Point p, bool focus=true, bool cancelAI=true)
Definition: Card.cs:5127
int GetCurrentDir()
Definition: Chara.cs:3305
Stats burden
Definition: Chara.cs:953
Zone homeZone
Definition: Chara.cs:252
void MoveZone(string alias)
Definition: Chara.cs:3010
Definition: Date.cs:4
int GetRaw(int offsetHours=0)
Definition: Date.cs:322
static string GetText2(int hour)
Definition: Date.cs:304
int GetRemainingHours(int rawDeadLine)
Definition: Date.cs:337
Definition: ELayer.cs:4
static World world
Definition: ELayer.cs:39
static Scene scene
Definition: ELayer.cs:27
static Chara pc
Definition: ELayer.cs:15
static Player player
Definition: ELayer.cs:13
static Game game
Definition: ELayer.cs:9
static UI ui
Definition: ELayer.cs:21
static BaseGameScreen screen
Definition: ELayer.cs:29
Tileset tileset
Definition: EloMapActor.cs:15
EloMapActor actor
Definition: EloMap.cs:118
Zone GetZone(Point p)
Definition: EloMap.cs:420
void AdvanceHour()
Definition: GameDate.cs:71
Zone activeZone
Definition: Game.cs:245
Zone currentZone
Definition: LayerTravel.cs:11
UIList list
Definition: LayerTravel.cs:9
float endZoom
Definition: LayerTravel.cs:25
int GetTravelHours(Zone z)
Definition: LayerTravel.cs:82
bool useZoom
Definition: LayerTravel.cs:33
int GetSortVal(Zone z)
Definition: LayerTravel.cs:87
bool highlightZone
Definition: LayerTravel.cs:29
override void OnSwitchContent(Window window)
Definition: LayerTravel.cs:68
override bool blockWidgetClick
Definition: LayerTravel.cs:37
Ease easeFade
Definition: LayerTravel.cs:19
int GetTravelFood(Zone z)
Definition: LayerTravel.cs:73
override void OnKill()
Definition: LayerTravel.cs:56
float fadeAlpha
Definition: LayerTravel.cs:15
Point posHighlight
Definition: LayerTravel.cs:35
float fadeTime
Definition: LayerTravel.cs:17
float startZoom
Definition: LayerTravel.cs:23
Ease easeZoom
Definition: LayerTravel.cs:21
void Refresh()
Definition: LayerTravel.cs:96
float timeZoom
Definition: LayerTravel.cs:27
override void OnInit()
Definition: LayerTravel.cs:39
List< Window > windows
Definition: Layer.cs:116
virtual void Close()
Definition: Layer.cs:463
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
void EnterLocalZone(bool encounter=false, Chara mob=null)
Definition: Player.cs:1736
Definition: Point.cs:9
List< Zone > ListTravelZones(int radius=100)
Definition: Region.cs:276
EloMap elomap
Definition: Scene.cs:143
GameScreenElona screenElona
Definition: Scene.cs:91
bool isRandomSite
Definition: Spatial.cs:334
int icon
Definition: Spatial.cs:82
virtual string Name
Definition: Spatial.cs:495
bool isKnown
Definition: Spatial.cs:346
virtual Point RegionPos
Definition: Spatial.cs:546
int dateExpire
Definition: Spatial.cs:166
override int GetPhase()
Definition: Stats.cs:117
UIText subText2
Definition: UIButton.cs:106
UIText subText
Definition: UIButton.cs:104
Image icon
Definition: UIButton.cs:110
UIText mainText
Definition: UIButton.cs:102
Definition: UIList.cs:9
List< ButtonPair > buttons
Definition: UIList.cs:244
override void Add(object item)
Definition: UIList.cs:302
override void List()
Definition: UIList.cs:717
void SetText(string s)
Definition: UIText.cs:159
Definition: Window.cs:13
GameDate date
Definition: World.cs:6
static EnterState DirToState(int dir)
Definition: Zone.cs:12
int tempDist
Definition: Zone.cs:74
virtual ZoneTransition.EnterState RegionEnterState
Definition: Zone.cs:170
Region Region
Definition: Zone.cs:160