Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ Update()

static void Terraria.UI.Gamepad.UILinkPointNavigator.Update ( )
inlinestatic

Definition at line 202 of file UILinkPointNavigator.cs.

203 {
204 bool inUse = InUse;
205 InUse = false;
206 bool flag = true;
207 if (flag)
208 {
210 if ((uint)currentInputMode <= 2u && !Main.gameMenu)
211 {
212 flag = false;
213 }
214 }
215 if (flag && PlayerInput.NavigatorRebindingLock > 0)
216 {
217 flag = false;
218 }
219 if (flag && !Main.gameMenu && !PlayerInput.UsingGamepadUI)
220 {
221 flag = false;
222 }
223 if (flag && !Main.gameMenu && PlayerInput.InBuildingMode)
224 {
225 flag = false;
226 }
227 if (flag && !Main.gameMenu && !Available)
228 {
229 flag = false;
230 }
231 bool flag2 = false;
232 if (!Pages.TryGetValue(CurrentPage, out var value))
233 {
234 flag2 = true;
235 }
236 else if (!value.IsValid())
237 {
238 flag2 = true;
239 }
240 if (flag2)
241 {
244 flag = false;
245 }
246 if (inUse != flag)
247 {
248 if (!flag)
249 {
250 value.Leave();
253 }
254 else
255 {
259 value.Enter();
260 }
261 if (flag)
262 {
264 {
265 Main.player[Main.myPlayer].releaseInventory = false;
266 }
267 Main.player[Main.myPlayer].releaseUseTile = false;
268 PlayerInput.LockGamepadTileUseButton = true;
269 }
270 if (!Main.gameMenu)
271 {
272 if (flag)
273 {
275 }
276 else
277 {
279 }
280 }
281 }
283 if (!flag)
284 {
285 return;
286 }
287 InUse = true;
288 OverridePoint = -1;
289 if (PageLeftCD > 0)
290 {
291 PageLeftCD--;
292 }
293 if (PageRightCD > 0)
294 {
295 PageRightCD--;
296 }
297 Vector2 navigatorDirections = PlayerInput.Triggers.Current.GetNavigatorDirections();
298 bool num = PlayerInput.Triggers.Current.HotbarMinus && !PlayerInput.Triggers.Current.HotbarPlus;
299 bool flag3 = PlayerInput.Triggers.Current.HotbarPlus && !PlayerInput.Triggers.Current.HotbarMinus;
300 if (!num)
301 {
302 PageLeftCD = 0;
303 }
304 if (!flag3)
305 {
306 PageRightCD = 0;
307 }
308 bool num2 = num && PageLeftCD == 0;
309 flag3 = flag3 && PageRightCD == 0;
311 {
312 XCooldown = 0;
313 }
315 {
316 YCooldown = 0;
317 }
318 if (XCooldown > 0)
319 {
320 XCooldown--;
321 }
322 if (YCooldown > 0)
323 {
324 YCooldown--;
325 }
327 if (num2)
328 {
329 PageLeftCD = 16;
330 }
331 if (flag3)
332 {
333 PageRightCD = 16;
334 }
335 Pages[CurrentPage].Update();
336 int num3 = 10;
337 if (!Main.gameMenu && Main.playerInventory && !Main.ingameOptionsWindow && !Main.inFancyUI && (CurrentPage == 0 || CurrentPage == 4 || CurrentPage == 2 || CurrentPage == 1 || CurrentPage == 20 || CurrentPage == 21))
338 {
339 num3 = PlayerInput.CurrentProfile.InventoryMoveCD;
340 }
341 if (navigatorDirections.X == -1f && XCooldown == 0)
342 {
343 XCooldown = num3;
344 Pages[CurrentPage].TravelLeft();
345 }
346 if (navigatorDirections.X == 1f && XCooldown == 0)
347 {
348 XCooldown = num3;
349 Pages[CurrentPage].TravelRight();
350 }
351 if (navigatorDirections.Y == -1f && YCooldown == 0)
352 {
353 YCooldown = num3;
354 Pages[CurrentPage].TravelUp();
355 }
356 if (navigatorDirections.Y == 1f && YCooldown == 0)
357 {
358 YCooldown = num3;
359 Pages[CurrentPage].TravelDown();
360 }
362 if (num2)
363 {
364 Pages[CurrentPage].SwapPageLeft();
365 }
366 if (flag3)
367 {
368 Pages[CurrentPage].SwapPageRight();
369 }
370 if (PlayerInput.Triggers.Current.UsedMovementKey)
371 {
372 Vector2 position = Points[CurrentPoint].Position;
374 float amount = 0.3f;
376 {
377 amount = 1f;
378 }
379 Vector2 vector = Vector2.Lerp(value2, position, amount);
380 if (Main.gameMenu)
381 {
382 if (Math.Abs(vector.X - position.X) <= 5f)
383 {
384 vector.X = position.X;
385 }
386 if (Math.Abs(vector.Y - position.Y) <= 5f)
387 {
388 vector.Y = position.Y;
389 }
390 }
391 PlayerInput.MouseX = (int)vector.X;
392 PlayerInput.MouseY = (int)vector.Y;
393 }
395 }
static double Abs(double value)
static byte Max(byte val1, byte val2)
Definition Math.cs:738
static TriggersPack Triggers
static bool PreventCursorModeSwappingToGamepad
static InputMode CurrentInputMode
static PlayerInputProfile CurrentProfile
static void GoToDefaultPage(int specialFlag=0)
static Dictionary< int, UILinkPoint > Points
static Dictionary< int, UILinkPage > Pages
static Vector2 Lerp(Vector2 value1, Vector2 value2, float amount)
Definition Vector2.cs:227

References System.Math.Abs(), Terraria.UI.Gamepad.UILinkPointNavigator.Available, Terraria.UI.Gamepad.UILinkPointNavigator.ClearSuggestion(), Terraria.UI.Gamepad.UILinkPointNavigator.ConsumeSuggestion(), Terraria.GameInput.PlayerInput.CurrentInputMode, Terraria.UI.Gamepad.UILinkPointNavigator.CurrentPage, Terraria.UI.Gamepad.UILinkPointNavigator.CurrentPoint, Terraria.GameInput.PlayerInput.CurrentProfile, Terraria.Main.gameMenu, Terraria.UI.Gamepad.UILinkPointNavigator.GoToDefaultPage(), Terraria.GameInput.PlayerInput.InBuildingMode, Terraria.Main.inFancyUI, Terraria.Main.ingameOptionsWindow, Terraria.UI.Gamepad.UILinkPointNavigator.InUse, Terraria.GameInput.PlayerInput.InvisibleGamepadInMenus, Terraria.UI.Gamepad.UILinkPointNavigator.LastInput, Microsoft.Xna.Framework.Vector2.Lerp(), System.Math.Max(), Terraria.GameInput.PlayerInput.MouseX, Terraria.GameInput.PlayerInput.MouseY, Terraria.Main.myPlayer, Terraria.GameInput.PlayerInput.NavigatorCachePosition(), Terraria.GameInput.PlayerInput.NavigatorRebindingLock, Terraria.GameInput.PlayerInput.NavigatorUnCachePosition(), Terraria.UI.Gamepad.UILinkPointNavigator.OverridePoint, Terraria.UI.Gamepad.UILinkPointNavigator.PageLeftCD, Terraria.UI.Gamepad.UILinkPointNavigator.PageRightCD, Terraria.UI.Gamepad.UILinkPointNavigator.Pages, Terraria.Main.player, Terraria.Main.playerInventory, Terraria.UI.Gamepad.UILinkPointNavigator.Points, Terraria.GameInput.PlayerInput.PreventCursorModeSwappingToGamepad, Terraria.UI.Gamepad.UILinkPointNavigator.ProcessChanges(), Terraria.UI.Gamepad.UILinkPointNavigator.ResetFlagsEnd(), Terraria.GameInput.PlayerInput.SteamDeckIsUsed, Terraria.GameInput.PlayerInput.Triggers, Terraria.GameInput.PlayerInput.UsingGamepadUI, System.value, Microsoft.Xna.Framework.Vector2.X, Terraria.UI.Gamepad.UILinkPointNavigator.XCooldown, Microsoft.Xna.Framework.Vector2.Y, and Terraria.UI.Gamepad.UILinkPointNavigator.YCooldown.

Referenced by Terraria.Main.DoUpdate_HandleInput().