rjw_menstruation/1.2/source/RJW_Menstruation/RJW_Menstruation/Patch/Pawn_Patch.cs

167 lines
5.5 KiB
C#
Raw Normal View History

2021-03-06 13:32:33 +00:00
using HarmonyLib;
using HugsLib;
using RimWorld;
2021-02-03 05:20:03 +00:00
using System.Collections.Generic;
using System.Linq;
2021-02-13 09:45:22 +00:00
using UnityEngine;
2021-02-03 05:20:03 +00:00
using Verse;
2021-06-12 15:51:34 +00:00
using rjw;
2021-02-03 05:20:03 +00:00
namespace RJW_Menstruation
{
[HarmonyPatch(typeof(Pawn), "SpawnSetup")]
public class Pawn_Patch
{
public static void Postfix(Map map, bool respawningAfterLoad, Pawn __instance)
{
2021-02-03 05:54:25 +00:00
//Log.Message("Initialize on spawnsetup");
2021-03-01 14:40:50 +00:00
HediffComp_Menstruation comp = __instance.GetMenstruationComp();
2021-02-03 05:20:03 +00:00
if (comp != null)
{
HugsLibController.Instance.TickDelayScheduler.TryUnscheduleCallback(comp.actionref);
comp.Initialize();
}
HediffComp_Breast bcomp = __instance.GetBreastComp();
if (bcomp != null)
{
HugsLibController.Instance.TickDelayScheduler.TryUnscheduleCallback(bcomp.action);
bcomp.Initialize();
}
2021-02-03 05:20:03 +00:00
}
2021-02-13 09:45:22 +00:00
}
[HarmonyPatch(typeof(FloatMenuMakerMap), "AddHumanlikeOrders")]
public class HumanlikeOrder_Patch
{
public static void Postfix(Vector3 clickPos, Pawn pawn, List<FloatMenuOption> opts)
{
var selftargets = GenUI.TargetsAt_NewTemp(clickPos, TargetingParameters.ForSelf(pawn));
foreach (LocalTargetInfo t in selftargets)
{
2021-02-25 09:09:24 +00:00
if (pawn.HasMenstruationComp()) opts.AddDistinct(MakeSelfMenu(pawn, t));
2021-02-19 06:42:08 +00:00
break;
2021-02-13 09:45:22 +00:00
}
2021-03-06 13:32:33 +00:00
2021-02-13 09:45:22 +00:00
}
2021-03-06 13:32:33 +00:00
2021-02-13 09:45:22 +00:00
public static FloatMenuOption MakeSelfMenu(Pawn pawn, LocalTargetInfo target)
{
2021-02-22 10:51:41 +00:00
FloatMenuOption option = FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption(Translations.FloatMenu_CleanSelf, delegate ()
2021-02-13 09:45:22 +00:00
{
pawn.jobs.TryTakeOrderedJob_NewTemp(new Verse.AI.Job(VariousDefOf.VaginaWashing, null, null, target.Cell));
}, MenuOptionPriority.Low), pawn, target);
return option;
}
2021-02-03 05:20:03 +00:00
}
2021-03-06 13:32:33 +00:00
2021-03-01 14:40:50 +00:00
//[HarmonyPatch(typeof(HealthCardUtility), "DrawHediffListing")]
//public class DrawHediffListing_Patch
//{
// public const float buttonWidth = 80f;
// public const float buttonHeight = 20f;
//
// public static void Postfix(Rect rect, Pawn pawn, bool showBloodLoss)
// {
// if (Configurations.EnableButtonInHT && pawn.HasMenstruationComp())
// {
// Rect buttonrect = new Rect(rect.xMax - buttonWidth, rect.yMax - buttonHeight, buttonWidth, buttonHeight);
// if (Widgets.ButtonText(buttonrect, "Status"))
// {
// Dialog_WombStatus.ToggleWindow(pawn,pawn.GetMenstruationComp());
// }
// }
//
//
// }
//}
[HarmonyPatch(typeof(HealthCardUtility), "DrawHediffRow")]
public class DrawHediffRow_Patch
{
public const float buttonWidth = 50f;
public const float buttonHeight = 20f;
public static void Prefix(Rect rect, Pawn pawn, IEnumerable<Hediff> diffs, ref float curY)
{
if (Configurations.EnableButtonInHT && pawn.ShowStatus())
{
HediffComp_Menstruation comp = diffs.First().GetMenstruationComp();
if (comp != null)
{
Rect buttonrect = new Rect((rect.xMax) / 2 - 5f, curY + 2f, buttonWidth, buttonHeight);
if (Widgets.ButtonText(buttonrect, Translations.Button_HealthTab))
{
Dialog_WombStatus.ToggleWindow(pawn, comp);
}
}
}
}
}
2021-06-16 12:53:52 +00:00
//Merged to RJW
2021-06-16 16:39:34 +00:00
//[HarmonyPatch(typeof(PawnColumnWorker_Pregnant), "GetIconFor")]
//public class PawnColumnWorker_Patch_Icon
//{
// public static void Postfix(Pawn pawn, ref Texture2D __result)
// {
// if (pawn.IsVisiblyPregnant()) __result = ContentFinder<Texture2D>.Get("UI/Icons/Animal/Pregnant", true);
// }
//
//}
//
//[HarmonyPatch(typeof(PawnColumnWorker_Pregnant), "GetTooltipText")]
//public class PawnColumnWorker_Patch_Tooltip
//{
// public static bool Prefix(Pawn pawn, ref string __result)
// {
// float gestationProgress = PregnancyHelper.GetPregnancy(pawn).Severity;
// int num = (int)(pawn.RaceProps.gestationPeriodDays * 60000f);
// int numTicks = (int)(gestationProgress * (float)num);
// __result = "PregnantIconDesc".Translate(numTicks.ToStringTicksToDays("F0"), num.ToStringTicksToDays("F0"));
// return false;
// }
//
//}
//
//[HarmonyPatch(typeof(TransferableUIUtility), "DoExtraAnimalIcons")]
//public class TransferableUIUtility_Patch_Icon
//{
2021-06-29 17:21:59 +00:00
// //private static readonly Texture2D PregnantIcon = ContentFinder<Texture2D>.Get("UI/Icons/Animal/Pregnant", true);
//
//
//
// public static void Postfix(Transferable trad, Rect rect, ref float curX, Texture2D ___PregnantIcon)
2021-06-16 16:39:34 +00:00
// {
// Pawn pawn = trad.AnyThing as Pawn;
2021-06-29 17:21:59 +00:00
// if (pawn?.health?.hediffSet != null && pawn.IsVisiblyPregnant())
2021-06-16 16:39:34 +00:00
// {
// Rect rect3 = new Rect(curX - 24f, (rect.height - 24f) / 2f, 24f, 24f);
// curX -= 24f;
// if (Mouse.IsOver(rect3))
// {
// TooltipHandler.TipRegion(rect3, PawnColumnWorker_Pregnant.GetTooltipText(pawn));
// }
2021-06-29 17:21:59 +00:00
// GUI.DrawTexture(rect3, ___PregnantIcon);
2021-02-22 10:51:41 +00:00
// }
// }
//}
2021-02-13 09:45:22 +00:00
2021-02-03 05:20:03 +00:00
}