Skip to content

Commit 1fd28b4

Browse files
committed
WorldSaver: Add date-time to world name + fix reflection
On the recent refactoring, wrong types had been used, causing the reflection to fail. Now the name will contain date and time, so that no rename is required when exporting a world.
1 parent 3165bc3 commit 1fd28b4

1 file changed

Lines changed: 8 additions & 5 deletions

File tree

WorldSaver/WorldSaver/src/client/WorldSaver.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections;
23
using System.Collections.Generic;
34
using System.IO;
45
using System.Linq;
@@ -22,10 +23,12 @@ public static void saveWorld()
2223
{
2324
//Ensure target folder exists:
2425
var savesFolder = Path.Combine(SUCC.Utilities.DefaultPath, "saves");
25-
var saveFolder = Path.Combine(savesFolder, "WorldExport");
26+
//TODO: Figure out the world name - should be MP and stuff.
27+
var time = DateTime.Now.ToString("yyyy.MM.dd-hh·mm·ss");
28+
var saveFolder = Path.Combine(savesFolder, "WorldExport@" + time);
2629
if(Directory.Exists(saveFolder))
2730
{
28-
LConsole.WriteLine("First rename the 'WorldExport' folder.");
31+
LConsole.WriteLine("This world folder exist already, try again: " + saveFolder);
2932
return;
3033
}
3134

@@ -95,15 +98,15 @@ public static void saveWorld()
9598
var extraDatas = new List<(string, Type, object)>();
9699
var instance = Instances.MainWorld.ExtraData;
97100
var fieldAllCustomData = Fields.getPrivate(typeof(ExtraData), "AllCustomData");
98-
var allCustomData = Types.checkType<IDictionary<string, object>>(Fields.getNonNull(fieldAllCustomData, instance));
101+
var allCustomData = Types.checkType<IDictionary>(Fields.getNonNull(fieldAllCustomData, instance));
99102
var typeElement = Types.findInAssembly(typeof(ExtraData), "LogicWorld.SharedCode.ExtraData.ExtraDataElement");
100103
var fieldType = Delegator.createPropertyGetter<object, Type>(Properties.getPublic(typeElement, "DataType"));
101104
var fieldValue = Delegator.createPropertyGetter<object, object>(Properties.getPublic(typeElement, "DataValue"));
102-
foreach(var entry in allCustomData)
105+
foreach(DictionaryEntry entry in allCustomData)
103106
{
104107
var type = fieldType(entry.Value);
105108
var value = fieldValue(entry.Value);
106-
extraDatas.Add((entry.Key, type, value));
109+
extraDatas.Add(((string) entry.Key, type, value));
107110
}
108111
return extraDatas;
109112
}

0 commit comments

Comments
 (0)