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,87 @@
// Decompiled with JetBrains decompiler
// Type: Terraria.Social.WeGame.CoreSocialModule
// 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 rail;
using System;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
namespace Terraria.Social.WeGame
{
public class CoreSocialModule : ISocialModule
{
private RailCallBackHelper _callbackHelper = new RailCallBackHelper();
private static object _railTickLock = new object();
private bool isRailValid;
[DllImport("kernel32.dll")]
private static extern uint GetCurrentThreadId();
public static event Action OnTick;
public void Initialize()
{
RailGameID railGameId = new RailGameID();
((RailComparableID) railGameId).id_ = (__Null) 2000328L;
string[] strArray = new string[1]{ " " };
if (rail_api.RailNeedRestartAppForCheckingEnvironment(railGameId, strArray.Length, strArray))
Environment.Exit(1);
if (!rail_api.RailInitialize())
Environment.Exit(1);
// ISSUE: method pointer
this._callbackHelper.RegisterCallback((RAILEventID) 2, new RailEventCallBackHandler((object) null, __methodptr(RailEventCallBack)));
this.isRailValid = true;
ThreadPool.QueueUserWorkItem(new WaitCallback(this.TickThread), (object) null);
Main.OnTickForThirdPartySoftwareOnly += new Action(CoreSocialModule.RailEventTick);
}
public static void RailEventTick()
{
rail_api.RailFireEvents();
if (!Monitor.TryEnter(CoreSocialModule._railTickLock))
return;
Monitor.Pulse(CoreSocialModule._railTickLock);
Monitor.Exit(CoreSocialModule._railTickLock);
}
private void TickThread(object context)
{
Monitor.Enter(CoreSocialModule._railTickLock);
while (this.isRailValid)
{
if (CoreSocialModule.OnTick != null)
CoreSocialModule.OnTick();
Monitor.Wait(CoreSocialModule._railTickLock);
}
Monitor.Exit(CoreSocialModule._railTickLock);
}
public void Shutdown()
{
Application.ApplicationExit += (EventHandler) ((obj, evt) => this.isRailValid = false);
this._callbackHelper.UnregisterAllCallback();
rail_api.RailFinalize();
}
public static void RailEventCallBack(RAILEventID eventId, EventBase data)
{
if (eventId != 2)
return;
CoreSocialModule.ProcessRailSystemStateChange((RailSystemState) ((RailSystemStateChanged) data).state);
}
public static void SaveAndQuitCallBack() => Main.WeGameRequireExitGame();
private static void ProcessRailSystemStateChange(RailSystemState state)
{
if (state != 2 && state != 3)
return;
int num = (int) MessageBox.Show("检测到WeGame异常游戏将自动保存进度并退出游戏", "Terraria--WeGame Error");
WorldGen.SaveAndQuit(new Action(CoreSocialModule.SaveAndQuitCallBack));
}
}
}