Skip to content

Commit

Permalink
bugfix the bugfix
Browse files Browse the repository at this point in the history
  • Loading branch information
ajkroeg committed Apr 8, 2021
1 parent 35e3551 commit 235cbd1
Show file tree
Hide file tree
Showing 6 changed files with 149 additions and 38 deletions.
12 changes: 9 additions & 3 deletions MapRandomizer/MapRandomizer/MapRandomizer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@
<HintPath>D:\SteamLibrary\steamapps\common\BATTLETECH\BattleTech_Data\Managed\Assembly-CSharp.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\SteamLibrary\steamapps\common\BATTLETECH\BattleTech_Data\Managed\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
Expand All @@ -62,13 +66,15 @@
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="source\Logger.cs" />
<Compile Include="source\ModInit.cs" />
<Compile Include="source\Patches\ContractPatch.cs" />
<Compile Include="source\Patches\MapRandomizer_NoTravelFix.cs" />
<None Include="source\Patches\MapRandomizer.cs" />
<None Include="source\Patches\MapRandomizer_NoTravelFix.cs" />
<Compile Include="source\Patches\MapRandomizer.cs" />
<Compile Include="source\ModState.cs" />
<Compile Include="source\Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSHARP.Targets" />
<ProjectExtensions>
<VisualStudio AllowExistingFolder="true" />
Expand Down
33 changes: 33 additions & 0 deletions MapRandomizer/MapRandomizer/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("MapRandomizer.Properties")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("MapRandomizer.Properties")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("6e265fda-e382-411d-95b2-c04aedf0a042")]

// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("1.0.0.5")]
[assembly: AssemblyFileVersion("1.0.0.5")]
47 changes: 47 additions & 0 deletions MapRandomizer/MapRandomizer/source/Logger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using System;
using System.IO;

namespace MapRandomizer
{
class Logger
{
private static StreamWriter logStreamWriter;
private bool enableLogging = false;

public Logger(string modDir, string fileName, bool enableLogging)
{
string filePath = Path.Combine(modDir, $"{fileName}.log");
if (File.Exists(filePath))
{
File.Delete(filePath);
}

logStreamWriter = File.AppendText(filePath);
logStreamWriter.AutoFlush = true;

this.enableLogging = enableLogging;
}

public void LogMessage(string message)
{
if (enableLogging)
{
string ts = DateTime.UtcNow.ToString("s", System.Globalization.CultureInfo.InvariantCulture);
logStreamWriter.WriteLine($"INFO: {ts} - {message}");
}
}


public void LogError(string message)
{
string ts = DateTime.UtcNow.ToString("s", System.Globalization.CultureInfo.InvariantCulture);
logStreamWriter.WriteLine($"ERROR: {ts} - {message}");
}

public void LogException(Exception exception)
{
string ts = DateTime.UtcNow.ToString("s", System.Globalization.CultureInfo.InvariantCulture);
logStreamWriter.WriteLine($"CRITICAL: {ts} - {exception}");
}
}
}
33 changes: 29 additions & 4 deletions MapRandomizer/MapRandomizer/source/ModInit.cs
Original file line number Diff line number Diff line change
@@ -1,17 +1,42 @@
using Harmony;
using System;
using System.IO;
using Harmony;
using System.Reflection;
using Newtonsoft.Json;

namespace MapRandomizer
{

public static class Mod
public static class ModInit
{
internal static Logger modLog;
internal static string modDir;
internal static Settings modSettings;
public const string HarmonyPackage = "us.tbone.MapRandomizer";
public static void Init(string directory, string settingsJSON)
{
modDir = directory;
modLog = new Logger(modDir, "MapRandomizer", true);
try
{
ModInit.modSettings = JsonConvert.DeserializeObject<Settings>(settingsJSON);

}
catch (Exception ex)
{
ModInit.modLog.LogException(ex);
ModInit.modSettings = new Settings();
}


ModInit.modLog.LogMessage($"Initializing PracticeMakesPerfect - Version {typeof(Settings).Assembly.GetName().Version}");
var harmony = HarmonyInstance.Create(HarmonyPackage);
harmony.PatchAll(Assembly.GetExecutingAssembly());
}

}
}
class Settings
{
public bool enableLogging = true;
public bool enableTravelFix = true;
}
}
42 changes: 31 additions & 11 deletions MapRandomizer/MapRandomizer/source/Patches/MapRandomizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -121,38 +121,56 @@ public static void Postfix(SimGameState __instance, ref bool __result, SimGameSt

}
[HarmonyPatch(typeof(BattleTech.SimGameState), "PrepContract")]
public static class PrepContractPatch
{
public static class PrepContractPatch{
[HarmonyBefore(new string[] { "com.github.m22spencer.BattletechPerformanceFix", "blue.winds.WarTechIIC" })]
[HarmonyPriority(Priority.First)]
public static bool Prefix(SimGameState __instance, Contract contract, FactionValue employer, FactionValue employersAlly, FactionValue target, FactionValue targetsAlly, FactionValue NeutralToAll, FactionValue HostileToAll, Biome.BIOMESKIN skin, int presetSeed, StarSystem system)
{
{

if (presetSeed != 0 && !contract.IsPriorityContract)
ModInit.modLog.LogMessage($"{contract.Name} presetSeed: {presetSeed}");
ModInit.modLog.LogMessage($"{contract.Name} contract.IsPriorityContract: {contract.IsPriorityContract}");
if (presetSeed != 0 && !contract.IsPriorityContract)
{
int baseDiff = system.Def.GetDifficulty(__instance.SimGameMode) + Mathf.FloorToInt(__instance.GlobalDifficulty);
ModInit.modLog.LogMessage($"{contract.Name} baseDiff: {baseDiff}");
int min;
int num;
if (ModState.SysAdjustDifficulty != 0 && ModState.IsSystemActionPatch != null)
{
baseDiff += ModState.SysAdjustDifficulty;
ModInit.modLog.LogMessage($"{contract.Name} baseDiff: {baseDiff} after + ModState.SysAdjustDifficulty {ModState.SysAdjustDifficulty}");
}
else if(ModState.CustomDifficulty > 0 && ModState.IsSystemActionPatch != null)
{
baseDiff = ModState.CustomDifficulty;
ModInit.modLog.LogMessage($"{contract.Name} baseDiff: {baseDiff} after override from ModState.CustomDifficulty {ModState.CustomDifficulty}");
}
int contractDifficultyVariance = __instance.Constants.Story.ContractDifficultyVariance;
min = baseDiff - Mathf.Max(1, baseDiff - contractDifficultyVariance);
num = baseDiff + Mathf.Max(1, baseDiff + contractDifficultyVariance);
ModInit.modLog.LogMessage($"{contract.Name} contractDifficultyVariance: {contractDifficultyVariance}");

min = Mathf.Max(1, baseDiff - contractDifficultyVariance);
ModInit.modLog.LogMessage($"{contract.Name}: [min = Mathf.Max(1, baseDiff - contractDifficultyVariance)] min: {min}");
num = Mathf.Max(1, baseDiff + contractDifficultyVariance);
ModInit.modLog.LogMessage($"{contract.Name}: [max = Mathf.Max(1, baseDiff + contractDifficultyVariance)] max: {num}");

int finalDifficulty = new NetworkRandom
{
seed = presetSeed
}.Int(min, num + 1);
if(__instance.HasTravelContract==true && contract.Name==__instance.ActiveTravelContract.Name)
ModInit.modLog.LogMessage($"{contract.Name} finalDifficulty = random between min and max+1: {min} and {num+1}: {finalDifficulty}");

if (ModInit.modSettings.enableTravelFix)
{
finalDifficulty = ModState.LastDiff;
if(__instance.HasTravelContract==true && contract.Name==__instance.ActiveTravelContract.Name)
{
finalDifficulty = ModState.LastDiff;
ModInit.modLog.LogMessage($"Found Travel Contract: {contract.Name}, using override finalDifficulty from ModState.LastDiff: {finalDifficulty}");
}
ModState.LastDiff = finalDifficulty;
ModInit.modLog.LogMessage($"Setting future travel contract override finalDifficulty at ModState.LastDiff: {finalDifficulty}");
}
ModState.LastDiff = finalDifficulty;
contract.SetFinalDifficulty(finalDifficulty);
contract.SetFinalDifficulty(finalDifficulty);
ModInit.modLog.LogMessage($"Setting {contract.Name} finalDifficulty to: {finalDifficulty}");
}

FactionValue player1sMercUnitFactionValue = FactionEnumeration.GetPlayer1sMercUnitFactionValue();
Expand All @@ -167,17 +185,19 @@ public static bool Prefix(SimGameState __instance, Contract contract, FactionVal
contract.AddTeamFaction("3c9f3a20-ab03-4bcb-8ab6-b1ef0442bbf0", HostileToAll.ID);
contract.SetupContext();
int finalDifficulty2 = contract.Override.finalDifficulty;
// ModInit.modLog.LogMessage($"{contract.Name} finalDifficulty2 from contract.Override.finalDifficulty: {finalDifficulty2}");

if (__instance.HasTravelContract == true && contract.Name == __instance.ActiveTravelContract.Name)
{
finalDifficulty2 = ModState.LastDiff;
// ModInit.modLog.LogMessage($"Found Travel Contract: {contract.Name}, using override finalDifficulty from ModState.LastDiff: {finalDifficulty2}");
}

int num2;
if (contract.Override.contractRewardOverride >= 0)
{
num2 = contract.Override.contractRewardOverride;
}
}
else
{
num2 = __instance.CalculateContractValueByContractType(contract.ContractTypeValue, finalDifficulty2, (float)__instance.Constants.Finances.ContractPricePerDifficulty, __instance.Constants.Finances.ContractPriceVariance, presetSeed);
Expand Down
20 changes: 0 additions & 20 deletions MapRandomizer/MapRandomizer/source/Properties/AssemblyInfo.cs

This file was deleted.

0 comments on commit 235cbd1

Please sign in to comment.