Added generic DefModExtension for Distance and Ticks

This commit is contained in:
Vegapnk 2023-07-17 06:58:00 +02:00
parent d21a665a3c
commit ef1e3cdd0f
3 changed files with 86 additions and 0 deletions

View file

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
namespace RJW_Genes
{
/// <summary>
/// Small Extension that covers distances for Genes.
/// This allows to set distance in the XMLs.
/// The distance is measured in tiles, so a distance of ~25 means 25 tiles away from the pawn in any direction.
/// </summary>
public class DistanceExtension : DefModExtension
{
public int Distance;
}
}

View file

@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
namespace RJW_Genes
{
internal class ModExtensionHelper
{
public static int GetDistanceFromModExtension(GeneDef defOf, int fallback)
{
DistanceExtension distanceExt = defOf.GetModExtension<DistanceExtension>();
int potentialDistance = distanceExt?.Distance ?? fallback;
if (potentialDistance > 0)
{
return potentialDistance;
} else {
ModLog.Warning($"Retrieved a bad distance ({potentialDistance}) reading the RJW_Genes.DistanceExtension for {defOf.defName}");
return 1;
}
}
public static int GetTickIntervalFromModExtension(GeneDef defOf, int fallback)
{
TickIntervalExtension tickExt = defOf.GetModExtension<TickIntervalExtension>();
int potentialTickInterval = tickExt?.tickInterval ?? fallback;
if (potentialTickInterval > 0)
{
return potentialTickInterval;
}
else
{
ModLog.Warning($"Retrieved a bad distance ({potentialTickInterval}) reading the RJW_Genes.DistanceExtension for {defOf.defName}");
return 1;
}
}
}
}

View file

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
namespace RJW_Genes
{
/// <summary>
/// General DefModExtension to cover various genes that need to tick regularly.
/// Defining it like this allows to adjust things in XML.
/// </summary>
public class TickIntervalExtension : DefModExtension
{
public int tickInterval;
}
}