Difference between revisions of "Modding Tutorials/Transpiler Hints"

From RimWorld Wiki
Jump to navigation Jump to search
(Added category.)
(Added link.)
 
Line 1: Line 1:
 +
{{BackToTutorials}}
 +
 
Debugging Transpilers can seem impossible.  It's very difficult to count exactly correctly, and any mistakes will likely throw a system exception.
 
Debugging Transpilers can seem impossible.  It's very difficult to count exactly correctly, and any mistakes will likely throw a system exception.
  

Latest revision as of 01:34, 10 September 2020

Modding Tutorials

Debugging Transpilers can seem impossible. It's very difficult to count exactly correctly, and any mistakes will likely throw a system exception.

Helpful examples[edit]

One way to get an idea of how to use the Transpiler is to search github for Harmony Transpilers.

Useful debugging tools.[edit]

See what your IL code is[edit]

One thing that can potentially help is to print out your entire modified IL code, to make sure you've got it correct:

       public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator) {
           var l=XTranspiler(instructions, generator).ToList(); // name your actual transpiler XTranspiler
           string s="Code:";
           int i=0;
           foreach (var c in l) {
               if (c.opcode==OpCodes.Call ||
                   c.opcode==OpCodes.Callvirt) { // you can make certain operations more visible
                   Log.Warning(""+i+": "+c);
               } else {
                   Log.Message(""+i+": "+c);
               }
               s+="\n"+i+": "+c;
               i++;
               yield return c;
           }
           Log.Error(s); // or just print the entire thing out to copy to a text editor.
       }