Difference between revisions of "Modding Tutorials/Transpiler Hints"

From RimWorld Wiki
Jump to navigation Jump to search
(link)
(Added category.)
Line 28: Line 28:
 
         }
 
         }
 
</code>
 
</code>
 +
 +
 +
[[Category:Modding tutorials]]

Revision as of 22:14, 22 June 2020

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

Helpful examples

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

Useful debugging tools.

See what your IL code is

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.
       }