Skip to content

Commit 45c7416

Browse files
solidDoWantsolidDoWant
authored andcommitted
2.0.0.0
Changed to support my new framework
1 parent 22a7ce9 commit 45c7416

File tree

8 files changed

+104
-161
lines changed

8 files changed

+104
-161
lines changed

CompilerTest/Class1.cs

Lines changed: 0 additions & 21 deletions
This file was deleted.

CompilerTest/CompilerTest.csproj

Lines changed: 0 additions & 57 deletions
This file was deleted.

CompilerTest/Properties/AssemblyInfo.cs

Lines changed: 0 additions & 36 deletions
This file was deleted.

Patcher/App.config

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
1-
<?xml version="1.0" encoding="utf-8" ?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<configuration>
33
<startup>
44
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
55
</startup>
6+
<runtime>
7+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
8+
<dependentAssembly>
9+
<assemblyIdentity name="Mono.Cecil" publicKeyToken="0738eb9f132ed756" culture="neutral" />
10+
<bindingRedirect oldVersion="0.0.0.0-0.9.6.0" newVersion="0.9.6.0" />
11+
</dependentAssembly>
12+
</assemblyBinding>
13+
</runtime>
614
</configuration>

Patcher/MainWindow.xaml.cs

Lines changed: 50 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
public partial class MainWindow : Window
1616
{
1717
private const string PRE_PATCHER_VERSION = "ldstr \"1.";
18-
private const string PATCHER_VERSION = @"[P]";
18+
private const string PATCHER_VERSION = @"[P 2.0]";
1919

2020
private const string PRE_LOAD_MODS = @"call void Planetbase.GameManager::initQualitySettings()";
2121
private const string LOAD_MODS = @"call void Planetbase.GameManager::loadMods()";
@@ -26,23 +26,7 @@ public partial class MainWindow : Window
2626
private const string UPDATE_MODS = @"call void Planetbase.GameManager::updateMods()";
2727

2828
private const string PRE_MODS_FIELD = @".field public notserialized static class Planetbase.GameManager mInstance";
29-
private const string MODS_FIELD = @".field public static class [mscorlib]System.Collections.Generic.List`1<class Planetbase.IMod> modList";
30-
31-
private const string PRE_IMOD = @".class public auto ansi beforefieldinit Planetbase.GameManager";
32-
private const string IMOD = @".class interface public auto ansi abstract Planetbase.IMod
33-
{
34-
// Methods
35-
.method public hidebysig newslot abstract virtual
36-
instance void Init () cil managed
37-
{
38-
} // end of method IMod::Init
39-
40-
.method public hidebysig newslot abstract virtual
41-
instance void Update () cil managed
42-
{
43-
} // end of method IMod::Update
44-
45-
} // end of class Planetbase.IMod";
29+
private const string MODS_FIELD = @".field public static class [mscorlib]System.Collections.Generic.List`1<class [PlanetbaseFramework]PlanetbaseFramework.ModBase> modList";
4630

4731
private const string PRE_MOD_FUNCS = @"} // end of class Planetbase.GameManager";
4832
private const string MOD_FUNCS = @".method public hidebysig static
@@ -58,12 +42,12 @@ .locals init (
5842
[3] int32,
5943
[4] class [mscorlib]System.Type[],
6044
[5] int32,
61-
[6] class Planetbase.IMod,
45+
[6] class [PlanetbaseFramework]PlanetbaseFramework.ModBase,
6246
[7] class [mscorlib]System.Exception
6347
)
6448
65-
IL_0000: newobj instance void class [mscorlib]System.Collections.Generic.List`1<class Planetbase.IMod>::.ctor()
66-
IL_0005: stsfld class [mscorlib]System.Collections.Generic.List`1<class Planetbase.IMod> Planetbase.GameManager::modList
49+
IL_0000: newobj instance void class [mscorlib]System.Collections.Generic.List`1<class [PlanetbaseFramework]PlanetbaseFramework.ModBase>::.ctor()
50+
IL_0005: stsfld class [mscorlib]System.Collections.Generic.List`1<class [PlanetbaseFramework]PlanetbaseFramework.ModBase> Planetbase.GameManager::modList
6751
IL_000a: call string Planetbase.Util::getFilesFolder()
6852
IL_000f: ldsfld char [mscorlib]System.IO.Path::DirectorySeparatorChar
6953
IL_0014: stloc.1
@@ -97,7 +81,7 @@ [7] class [mscorlib]System.Exception
9781
IL_005b: stloc.s 5
9882
IL_005d: br.s IL_00ca
9983
// loop start (head: IL_00ca)
100-
IL_005f: ldtoken Planetbase.IMod
84+
IL_005f: ldtoken [PlanetbaseFramework]PlanetbaseFramework.ModBase
10185
IL_0064: call class [mscorlib]
10286
System.Type[mscorlib] System.Type::GetTypeFromHandle(valuetype[mscorlib] System.RuntimeTypeHandle)
10387
IL_0069: ldloc.s 4
@@ -113,17 +97,17 @@ [7] class [mscorlib]System.Exception
11397
IL_0079: ldelem.ref
11498
IL_007a: call object[mscorlib] System.Activator::CreateInstance(class [mscorlib]
11599
System.Type)
116-
IL_007f: isinst Planetbase.IMod
100+
IL_007f: isinst [PlanetbaseFramework]PlanetbaseFramework.ModBase
117101
IL_0084: stloc.s 6
118102
IL_0086: ldloc.s 6
119-
IL_0088: callvirt instance void Planetbase.IMod::Init()
103+
IL_0088: callvirt instance void [PlanetbaseFramework]PlanetbaseFramework.ModBase::Init()
120104
IL_008d: ldsfld class [mscorlib]
121105
System.Collections.Generic.List`1<class
122-
Planetbase.IMod> Planetbase.GameManager::modList
106+
[PlanetbaseFramework]PlanetbaseFramework.ModBase> Planetbase.GameManager::modList
123107
IL_0092: ldloc.s 6
124108
IL_0094: callvirt instance void class [mscorlib]
125109
System.Collections.Generic.List`1<class
126-
Planetbase.IMod>::Add(!0)
110+
[PlanetbaseFramework]PlanetbaseFramework.ModBase>::Add(!0)
127111
IL_0099: leave.s IL_00c4
128112
} // end .try
129113
catch [mscorlib]
@@ -187,13 +171,13 @@ [0] int32
187171
// loop start (head: IL_0018)
188172
IL_0004: ldsfld class [mscorlib]
189173
System.Collections.Generic.List`1<class
190-
Planetbase.IMod> Planetbase.GameManager::modList
174+
[PlanetbaseFramework]PlanetbaseFramework.ModBase> Planetbase.GameManager::modList
191175
IL_0009: ldloc.0
192176
IL_000a: callvirt instance !0 class [mscorlib]
193177
System.Collections.Generic.List`1<class
194-
Planetbase.IMod>::get_Item(int32)
178+
[PlanetbaseFramework]PlanetbaseFramework.ModBase>::get_Item(int32)
195179
IL_000f: callvirt instance void
196-
Planetbase.IMod::Update()
180+
[PlanetbaseFramework]PlanetbaseFramework.ModBase::Update()
197181
IL_0014: ldloc.0
198182
IL_0015: ldc.i4.1
199183
IL_0016: add
@@ -202,10 +186,10 @@ [0] int32
202186
IL_0018: ldloc.0
203187
IL_0019: ldsfld class [mscorlib]
204188
System.Collections.Generic.List`1<class
205-
Planetbase.IMod> Planetbase.GameManager::modList
189+
[PlanetbaseFramework]PlanetbaseFramework.ModBase> Planetbase.GameManager::modList
206190
IL_001e: callvirt instance int32 class [mscorlib]
207191
System.Collections.Generic.List`1<class
208-
Planetbase.IMod>::get_Count()
192+
[PlanetbaseFramework]PlanetbaseFramework.ModBase>::get_Count()
209193
IL_0023: blt.s IL_0004
210194
// end loop
211195
@@ -292,7 +276,7 @@ await this.labelDll.Dispatcher.InvokeAsync(
292276

293277
if (File.Exists("Assembly-CSharp.il"))
294278
{
295-
File.Delete("Assembly-CSharp.il");
279+
//File.Delete("Assembly-CSharp.il");
296280
}
297281

298282
if (File.Exists("Assembly-CSharp.res"))
@@ -302,7 +286,7 @@ await this.labelDll.Dispatcher.InvokeAsync(
302286

303287
if (File.Exists("Assembly-CSharp-orig.il"))
304288
{
305-
File.Delete("Assembly-CSharp-orig.il");
289+
//File.Delete("Assembly-CSharp-orig.il");
306290
}
307291

308292
this.buttonPatch.Content = "Decompiling...";
@@ -314,8 +298,8 @@ await this.labelDll.Dispatcher.InvokeAsync(
314298

315299
Console.WriteLine("BUILDING GRAPH");
316300

317-
MSILNode rootNode = new MSILNode();
318-
rootNode.parseString(File.ReadAllText("Assembly-CSharp-orig.il"));
301+
// MSILNode rootNode = new MSILNode();
302+
// rootNode.parseString(File.ReadAllText("Assembly-CSharp-orig.il"));
319303

320304
Console.WriteLine("READ ALL DATA");
321305

@@ -370,6 +354,36 @@ await this.labelDll.Dispatcher.InvokeAsync(
370354
line = line.Replace("call ", "callvirt");
371355
}
372356

357+
if(line.Contains(".assembly extern UnityEngine.UI"))
358+
{
359+
await writer.WriteLineAsync(line);
360+
await writer.WriteLineAsync(await reader.ReadLineAsync()); //Skip 3 lines
361+
await writer.WriteLineAsync(await reader.ReadLineAsync());
362+
await writer.WriteLineAsync(await reader.ReadLineAsync());
363+
364+
await writer.WriteLineAsync(".assembly extern PlanetbaseFramework");
365+
await writer.WriteLineAsync("{");
366+
//await writer.WriteLineAsync(" .ver 1:0:0:0");
367+
await writer.WriteLineAsync("}");
368+
369+
continue;
370+
}
371+
372+
if(line.Contains("setGameStateTitle() cil managed"))
373+
{
374+
await writer.WriteLineAsync(line);
375+
await writer.WriteLineAsync(await reader.ReadLineAsync());
376+
await writer.WriteLineAsync(await reader.ReadLineAsync());
377+
await writer.WriteLineAsync(await reader.ReadLineAsync());
378+
await writer.WriteLineAsync(await reader.ReadLineAsync());
379+
await writer.WriteLineAsync(await reader.ReadLineAsync());
380+
await writer.WriteLineAsync(await reader.ReadLineAsync());
381+
string nextLine = await reader.ReadLineAsync();
382+
nextLine = nextLine.Replace("Planetbase.GameStateTitle", "[PlanetbaseFramework]PlanetbaseFramework.GameStateTitleReplacement");
383+
await writer.WriteLineAsync(nextLine);
384+
continue;
385+
}
386+
373387
// Init mods
374388
if (line.Contains(PRE_LOAD_MODS))
375389
{
@@ -402,14 +416,6 @@ await this.labelDll.Dispatcher.InvokeAsync(
402416
continue;
403417
}
404418

405-
// IMod
406-
if (line.Contains(PRE_IMOD))
407-
{
408-
await writer.WriteLineAsync(IMOD);
409-
await writer.WriteLineAsync(line);
410-
continue;
411-
}
412-
413419
// Mod Funtions
414420
if (line.Contains(PRE_MOD_FUNCS))
415421
{
@@ -499,7 +505,7 @@ await Task.Run(
499505
() =>
500506
{
501507
//File.Delete("Assembly-CSharp.il");
502-
File.Delete("Assembly-CSharp-orig.il");
508+
//File.Delete("Assembly-CSharp-orig.il");
503509
File.Delete("Assembly-CSharp-orig.res");
504510
File.Delete("fusion.dll");
505511
File.Delete("ilasm.exe");

0 commit comments

Comments
 (0)