Terraria 1.4.0.5 Source Code

This commit is contained in:
MikeyIsBaeYT 2021-10-26 12:45:26 -04:00
commit 05205f009e
1059 changed files with 563450 additions and 0 deletions

View file

@ -0,0 +1,102 @@
// Decompiled with JetBrains decompiler
// Type: Terraria.UI.InGameNotificationsTracker
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System.Collections.Generic;
using Terraria.Achievements;
using Terraria.GameInput;
using Terraria.Social;
using Terraria.Social.Base;
namespace Terraria.UI
{
public class InGameNotificationsTracker
{
private static List<IInGameNotification> _notifications = new List<IInGameNotification>();
public static void Initialize()
{
Main.Achievements.OnAchievementCompleted += new Achievement.AchievementCompleted(InGameNotificationsTracker.AddCompleted);
SocialAPI.JoinRequests.OnRequestAdded += new ServerJoinRequestEvent(InGameNotificationsTracker.JoinRequests_OnRequestAdded);
SocialAPI.JoinRequests.OnRequestRemoved += new ServerJoinRequestEvent(InGameNotificationsTracker.JoinRequests_OnRequestRemoved);
}
private static void JoinRequests_OnRequestAdded(UserJoinToServerRequest request) => InGameNotificationsTracker.AddJoinRequest(request);
private static void JoinRequests_OnRequestRemoved(UserJoinToServerRequest request)
{
for (int index = InGameNotificationsTracker._notifications.Count - 1; index >= 0; --index)
{
if (InGameNotificationsTracker._notifications[index].CreationObject == request)
InGameNotificationsTracker._notifications.RemoveAt(index);
}
}
public static void DrawInGame(SpriteBatch sb)
{
float y = (float) (Main.screenHeight - 40);
if (PlayerInput.UsingGamepad)
y -= 25f;
Vector2 positionAnchorBottom = new Vector2((float) (Main.screenWidth / 2), y);
foreach (IInGameNotification notification in InGameNotificationsTracker._notifications)
{
notification.DrawInGame(sb, positionAnchorBottom);
notification.PushAnchor(ref positionAnchorBottom);
if ((double) positionAnchorBottom.Y < -100.0)
break;
}
}
public static void DrawInIngameOptions(
SpriteBatch spriteBatch,
Rectangle area,
ref int gamepadPointIdLocalIndexToUse)
{
int num1 = 4;
int height = area.Height / 5 - num1;
Rectangle area1 = new Rectangle(area.X, area.Y, area.Width - 6, height);
int num2 = 0;
foreach (IInGameNotification notification in InGameNotificationsTracker._notifications)
{
notification.DrawInNotificationsArea(spriteBatch, area1, ref gamepadPointIdLocalIndexToUse);
area1.Y += height + num1;
++num2;
if (num2 >= 5)
break;
}
}
public static void AddCompleted(Achievement achievement)
{
if (Main.netMode == 2)
return;
InGameNotificationsTracker._notifications.Add((IInGameNotification) new InGamePopups.AchievementUnlockedPopup(achievement));
}
public static void AddJoinRequest(UserJoinToServerRequest request)
{
if (Main.netMode == 2)
return;
InGameNotificationsTracker._notifications.Add((IInGameNotification) new InGamePopups.PlayerWantsToJoinGamePopup(request));
}
public static void Clear() => InGameNotificationsTracker._notifications.Clear();
public static void Update()
{
for (int index = 0; index < InGameNotificationsTracker._notifications.Count; ++index)
{
InGameNotificationsTracker._notifications[index].Update();
if (InGameNotificationsTracker._notifications[index].ShouldBeRemoved)
{
InGameNotificationsTracker._notifications.Remove(InGameNotificationsTracker._notifications[index]);
--index;
}
}
}
}
}