Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SubsystemBlocksManager.cs
浏览该文件的文档.
3using static Game.BlocksManager;
4
5namespace Game {
7 //以ClassName, BlockContent的形式存储和读取方块信息
8
9 /*流程:
10 * 在加载世界时Load调用(需要将这个调整为高优先级加载)
11 * BlocksManager加载原版和所有mod的静态ID方块
12 * 调用SubsystemBlocksManager.CallAllocate()调用分配动态ID方块
13 * BlocksManager加载项目声明的动态ID方块
14 * BlocksManager加载剩下的动态ID方块
15 * PostProcess进行后处理
16 */
17
18 //BlocksManager存储的是类名Name,SubsystemBlockManager存储的也是类名
19 public Dictionary<string, int> DynamicBlockNameToIndex = new();
20
22
23 public override void Initialize(Project project, ValuesDictionary valuesDictionary) {
24 base.Initialize(project, valuesDictionary);
26 m_savedValuesDictionary = valuesDictionary;
27 InitializeBlocks(this);
28 PostProcessBlocksLoad();
30 }
31
32 public virtual void CallAllocate() {
33 //int tick1 = Environment.TickCount;
34 for (int i = SurvivalCraftBlockCount + 1; i < 1024; i++) {
35 string blockName = m_savedValuesDictionary.GetValue(i.ToString(), string.Empty);
36 if (!string.IsNullOrEmpty(blockName)) {
37 DynamicBlockNameToIndex[blockName] = i;
38 }
39 /*
40 if (!String.IsNullOrEmpty(fullName))
41 {
42 foreach(var blockAllocateData in BlocksAllocateData)
43 {
44 if(blockAllocateData.Block.GetType().FullName == fullName)
45 {
46 DynamicBlockNameToIndex[blockAllocateData.Block.GetType().FullName] = i;
47 Log.Information("加载方块:" + fullName + ", Index = " + i);
48 break;
49 }
50 }
51 }*/
52 }
53 //int tick2 = Environment.TickCount;
54 //Engine.Log.Information("加载项目方块系统耗时" + (tick2 - tick1).ToString() + "ms");
55 }
56
57 public override void Save(ValuesDictionary valuesDictionary) {
58 foreach (KeyValuePair<string, int> item in DynamicBlockNameToIndex) {
59 valuesDictionary.SetValue(item.Value.ToString(), item.Key);
60 }
61 }
62 }
63}
Dictionary< string, int > DynamicBlockNameToIndex
override void Save(ValuesDictionary valuesDictionary)
override void Initialize(Project project, ValuesDictionary valuesDictionary)
ValuesDictionary ValuesDictionary