Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
CoreSocialModule.cs
Go to the documentation of this file.
1
using
System
;
2
using
System.Runtime.InteropServices
;
3
using
System.Threading
;
4
using
System.Windows.Forms;
5
using
rail;
6
using
ReLogic.OS
;
7
8
namespace
Terraria.Social.WeGame
;
9
10
public
class
CoreSocialModule
:
ISocialModule
11
{
12
private
RailCallBackHelper
_callbackHelper
=
new
RailCallBackHelper();
13
14
private
static
object
_railTickLock
=
new
object();
15
16
private
bool
isRailValid
;
17
18
public
static
event
Action
OnTick
;
19
20
[DllImport(
"kernel32.dll"
, ExactSpelling =
true
)]
21
private
static
extern
uint
GetCurrentThreadId
();
22
23
public
void
Initialize
()
24
{
25
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
26
//IL_0006: Expected O, but got Unknown
27
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
28
//IL_0067: Expected O, but got Unknown
29
RailGameID val =
new
RailGameID();
30
((RailComparableID)val).id_ = 2000328uL;
31
string
[]
array
= ((!
Main
.
dedServ
) ?
new
string
[1] {
" "
} :
Environment
.
GetCommandLineArgs
());
32
if
(rail_api.RailNeedRestartAppForCheckingEnvironment(val,
array
.Length,
array
))
33
{
34
Environment
.
Exit
(1);
35
}
36
if
(!rail_api.RailInitialize())
37
{
38
Environment
.
Exit
(1);
39
}
40
_callbackHelper
.RegisterCallback((RAILEventID)2,
new
RailEventCallBackHandler(
RailEventCallBack
));
41
isRailValid
=
true
;
42
ThreadPool
.
QueueUserWorkItem
(
TickThread
,
null
);
43
Main.OnTickForThirdPartySoftwareOnly +=
RailEventTick
;
44
}
45
46
public
static
void
RailEventTick
()
47
{
48
rail_api.RailFireEvents();
49
if
(
Monitor
.
TryEnter
(
_railTickLock
))
50
{
51
Monitor
.
Pulse
(
_railTickLock
);
52
Monitor
.
Exit
(
_railTickLock
);
53
}
54
}
55
56
private
void
TickThread
(
object
context)
57
{
58
Monitor
.
Enter
(
_railTickLock
);
59
while
(
isRailValid
)
60
{
61
if
(
CoreSocialModule
.
OnTick
!=
null
)
62
{
63
CoreSocialModule
.
OnTick
();
64
}
65
Monitor
.
Wait
(
_railTickLock
);
66
}
67
Monitor
.
Exit
(
_railTickLock
);
68
}
69
70
public
void
Shutdown
()
71
{
72
if
(
Platform
.
IsWindows
)
73
{
74
Application.ApplicationExit += delegate
75
{
76
isRailValid
=
false
;
77
};
78
}
79
else
80
{
81
isRailValid
=
false
;
82
AppDomain.CurrentDomain.ProcessExit += delegate
83
{
84
isRailValid
=
false
;
85
};
86
}
87
_callbackHelper
.UnregisterAllCallback();
88
rail_api.RailFinalize();
89
}
90
91
public
static
void
RailEventCallBack
(RAILEventID eventId, EventBase data)
92
{
93
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
94
//IL_0002: Invalid comparison between Unknown and I4
95
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
96
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
97
if
((
int
)eventId == 2)
98
{
99
ProcessRailSystemStateChange
(((RailSystemStateChanged)data).
state
);
100
}
101
}
102
103
public
static
void
SaveAndQuitCallBack
()
104
{
105
Main
.
WeGameRequireExitGame
();
106
}
107
108
private
static
void
ProcessRailSystemStateChange
(RailSystemState
state
)
109
{
110
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
111
//IL_0002: Invalid comparison between Unknown and I4
112
//IL_0004: Unknown result type (might be due to invalid IL or missing references)
113
//IL_0006: Invalid comparison between Unknown and I4
114
if
((
int
)
state
== 2 || (
int
)
state
== 3)
115
{
116
MessageBox.Show(
"检测到WeGame异常,游戏将自动保存进度并退出游戏"
,
"Terraria--WeGame Error"
);
117
WorldGen
.
SaveAndQuit
(
SaveAndQuitCallBack
);
118
}
119
}
120
}
ReLogic.OS.Platform.IsWindows
static bool IsWindows
Definition
Platform.cs:19
ReLogic.OS.Platform
Definition
Platform.cs:10
System.Environment.GetCommandLineArgs
static string[] GetCommandLineArgs()
Definition
Environment.cs:424
System.Environment.Exit
static void Exit(int exitCode)
Definition
Environment.cs:404
System.Environment
Definition
Environment.cs:15
System.Threading.Monitor.Exit
static void Exit(object obj)
System.Threading.Monitor.Wait
static bool Wait(object obj, int millisecondsTimeout)
Definition
Monitor.cs:87
System.Threading.Monitor.TryEnter
static bool TryEnter(object obj)
Definition
Monitor.cs:36
System.Threading.Monitor.Enter
static void Enter(object obj)
System.Threading.Monitor.Pulse
static void Pulse(object obj)
Definition
Monitor.cs:103
System.Threading.Monitor
Definition
Monitor.cs:9
System.Threading.ThreadPool.QueueUserWorkItem
static bool QueueUserWorkItem(WaitCallback callBack)
Definition
ThreadPool.cs:498
System.Threading.ThreadPool
Definition
ThreadPool.cs:11
Terraria.Main.dedServ
static bool dedServ
Definition
Main.cs:1226
Terraria.Main.WeGameRequireExitGame
static void WeGameRequireExitGame()
Definition
Main.cs:63231
Terraria.Main
Definition
Main.cs:79
Terraria.Social.WeGame.CoreSocialModule.Initialize
void Initialize()
Definition
CoreSocialModule.cs:23
Terraria.Social.WeGame.CoreSocialModule.TickThread
void TickThread(object context)
Definition
CoreSocialModule.cs:56
Terraria.Social.WeGame.CoreSocialModule.isRailValid
bool isRailValid
Definition
CoreSocialModule.cs:16
Terraria.Social.WeGame.CoreSocialModule.RailEventTick
static void RailEventTick()
Definition
CoreSocialModule.cs:46
Terraria.Social.WeGame.CoreSocialModule.OnTick
static Action OnTick
Definition
CoreSocialModule.cs:18
Terraria.Social.WeGame.CoreSocialModule._railTickLock
static object _railTickLock
Definition
CoreSocialModule.cs:14
Terraria.Social.WeGame.CoreSocialModule.ProcessRailSystemStateChange
static void ProcessRailSystemStateChange(RailSystemState state)
Definition
CoreSocialModule.cs:108
Terraria.Social.WeGame.CoreSocialModule.GetCurrentThreadId
static uint GetCurrentThreadId()
Terraria.Social.WeGame.CoreSocialModule.RailEventCallBack
static void RailEventCallBack(RAILEventID eventId, EventBase data)
Definition
CoreSocialModule.cs:91
Terraria.Social.WeGame.CoreSocialModule.Shutdown
void Shutdown()
Definition
CoreSocialModule.cs:70
Terraria.Social.WeGame.CoreSocialModule.SaveAndQuitCallBack
static void SaveAndQuitCallBack()
Definition
CoreSocialModule.cs:103
Terraria.Social.WeGame.CoreSocialModule._callbackHelper
RailCallBackHelper _callbackHelper
Definition
CoreSocialModule.cs:12
Terraria.Social.WeGame.CoreSocialModule
Definition
CoreSocialModule.cs:11
Terraria.WorldGen.SaveAndQuit
static void SaveAndQuit(Action callback=null)
Definition
WorldGen.cs:3146
Terraria.WorldGen
Definition
WorldGen.cs:32
Terraria.Social.ISocialModule
Definition
ISocialModule.cs:4
ReLogic.OS
Definition
Clipboard.cs:3
System.Runtime.InteropServices
Definition
SequenceMarshal.cs:4
System.Threading
Definition
TaskToApm.cs:3
System.ExceptionArgument.state
@ state
System.ExceptionArgument.array
@ array
System
Definition
BlockingCollection.cs:8
Terraria.Social.WeGame
Definition
AchievementsSocialModule.cs:6
source
Terraria.Social.WeGame
CoreSocialModule.cs
Generated by
1.10.0