ModScriptBasics: Difference between revisions

From The Colonists
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
Basics-Scripting (C#)
Basics-Scripting (C#) <br>
This page is in work! - needs code block formatting in particular.
This page is in work! - needs code block formatting in particular.
=Basics=
=Basics=

Revision as of 16:35, 7 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);
						}
        }
    }
}