Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
GameLoadingScreen.cs
浏览该文件的文档.
1using System.Xml.Linq;
2
3namespace Game {
4 public class GameLoadingScreen : Screen {
6
7 public string m_worldSnapshotName;
8
10
12
13 public bool m_upgradeCompleted;
14
15 public Exception m_upgradeError;
16 public static string fName = "GameLoadingScreen";
17
19 XElement node = ContentManager.Get<XElement>("Screens/GameLoadingScreen");
20 LoadContents(this, node);
21 m_stateMachine.AddState(
22 "WaitingForFadeIn",
23 null,
24 delegate {
26 if (string.IsNullOrEmpty(m_worldSnapshotName)) {
27 m_stateMachine.TransitionTo("Loading");
28 }
29 else {
30 m_stateMachine.TransitionTo("RestoringSnapshot");
31 }
32 }
33 },
34 null
35 );
36 m_stateMachine.AddState(
37 "Upgrading",
38 delegate {
40 m_upgradeCompleted = false;
41 m_upgradeError = null;
42 Task.Run(
43 delegate {
44 try {
46 m_upgradeCompleted = true;
47 }
48 catch (Exception upgradeError) {
49 m_upgradeError = upgradeError;
50 }
51 }
52 );
53 },
54 delegate {
56 m_stateMachine.TransitionTo("Loading");
57 }
58 else if (m_upgradeError != null) {
59 throw m_upgradeError;
60 }
61 },
62 null
63 );
64 m_stateMachine.AddState(
65 "Loading",
66 null,
67 delegate {
68 ContainerWidget gamesWidget = ScreensManager.FindScreen<GameScreen>("Game").Children.Find<ContainerWidget>("GamesWidget");
71 },
72 null
73 );
74 m_stateMachine.AddState(
75 "RestoringSnapshot",
76 null,
77 delegate {
80 m_stateMachine.TransitionTo("Upgrading");
81 },
82 null
83 );
84 }
85
86 public override void Update() {
87 try {
88 m_stateMachine.Update();
89 }
90 catch (Exception) {
92 ViewGameLogDialog dialog = new();
93 dialog.SetErrorHead(11, 10);
94 DialogsManager.ShowDialog(null, dialog);
95 }
96 }
97
98 public override void Enter(object[] parameters) {
99 m_worldInfo = (WorldInfo)parameters[0];
100 m_worldSnapshotName = (string)parameters[1];
101 m_stateMachine.TransitionTo("WaitingForFadeIn");
102 ProgressManager.UpdateProgress("Loading World", 0f);
103 CommunityContentScreen screen = ScreensManager.FindScreen<CommunityContentScreen>("CommunityContent");
104 if (screen != null) {
105 screen.m_treePanel.Clear();
106 screen.m_treePanel.ScrollPosition = 0f;
107 screen.m_contentExpiryTime = 0;
108 }
109 OriginalCommunityContentScreen originalCommunityContentScreen = ScreensManager.FindScreen<OriginalCommunityContentScreen>("OriginalCommunityContent");
110 if (originalCommunityContentScreen != null) {
111 originalCommunityContentScreen.m_listPanel.ClearItems();
112 originalCommunityContentScreen.m_listPanel.ScrollPosition = 0f;
113 originalCommunityContentScreen.m_itemsCacheExpiryTime = 0;
114 }
115 }
116 }
117}
readonly WidgetsList Children
static object Get(Type type, string name)
static void ShowDialog(ContainerWidget parentWidget, Dialog dialog)
override void Enter(object[] parameters)
static void RepairAndUpgradeWorld(WorldInfo worldInfo)
static void LoadProject(WorldInfo worldInfo, ContainerWidget gamesWidget)
static void DisposeProject()
static void UpdateProgress(string operationName, float progress)
static Screen PreviousScreen
上一个Screen
static void SwitchScreen(string name, params object[] parameters)
void Clear(bool dispose=true)
void SetErrorHead(int headLangIndex, int adviceLangIndex)
virtual void LoadContents(object eventsTarget, XElement node)
static void RestoreWorldFromSnapshot(string directoryName, string snapshotName)