ModScriptBasics: Difference between revisions

From The Colonists
Jump to navigation Jump to search
No edit summary
No edit summary
Line 3: Line 3:
=Basics=
=Basics=


For now follow the Rimworld, setup, but instead of the Rimworld dll use Game.dll from TheColonists folder.
For now follow the Rimworld setup but instead of the Rimworld dll use Game.dll from the respective TheColonists folder.


[https://rimworldwiki.com/wiki/Modding_Tutorials/Setting_up_a_solution](https://rimworldwiki.com/wiki/Modding_Tutorials/Setting_up_a_solution)
[https://rimworldwiki.com/wiki/Modding_Tutorials/Setting_up_a_solution](https://rimworldwiki.com/wiki/Modding_Tutorials/Setting_up_a_solution)

Revision as of 19:28, 5 January 2023

Basics-Scripting (C#) This page is in work! - needs code block formatting in particular.

Basics

For now follow the Rimworld setup but instead of the Rimworld dll use Game.dll from the respective TheColonists folder.

[1](https://rimworldwiki.com/wiki/Modding_Tutorials/Setting_up_a_solution)

Framework Sample

This is a basic class which sets up Harmony, registers a custom tech and contains a Harmony prefix for when a player completes a research.

using HarmonyLib;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;

namespace TestMod2 {

    public class TestMod2 {

        static public int CUSTOM_TECH_1_ID = 200;

        [StaticConstructorOnStartup]
        public static int Init() {
            Harmony.DEBUG = true;

            var harmony = new Harmony("testmod2");

            FileLog.Log("testing harmony logging");

            harmony.PatchAll();

            SerialiseFactory.AddCustom(typeof(TechInfo), (byte) CUSTOM_TECH_1_ID, typeof(CustomTechInfo));

            Debug.Log("#TestMod2# Init Complete!");

            return 2;
        }

    }

    [HarmonyPatch(typeof(Player), "OnTechResearched")]
    class Patch {
        static void Prefix(TechID techId) {
            Debug.Log("#TestMod2# OnTechResearched:" + techId);
						if((int) techId == TechMod2.CUSTOM_TECH_1_ID) {
		            FileLog.Log("custom tech researched - myVar: " + techId.ToInfo<CustomTechInfo>().myVar);
						}
        }
    }
}