Untitled
unknown
csharp
2 years ago
3.9 kB
5
Indexable
using BepInEx;
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HarmonyLib;
using crecheng.DSPModSave;
namespace CraftingSpeed
{
[BepInPlugin(pluginGuid, pluginName, pluginVersion)]
[BepInDependency(DSPModSavePlugin.MODGUID)]
public class AssemblerSpeedMod : BaseUnityPlugin
{
public const string pluginGuid = "com.github.jiesiluo.assemblerspeed";
public const string pluginName = "Assembler Speed";
public const string pluginVersion = "1.0.0";
public const int saveVersion = 1;
private Harmony harmony;
public void Awake()
{
this.harmony = new Harmony(pluginGuid);
this.harmony.PatchAll();
}
public void Import(BinaryReader r)
{
Logger.LogMessage("---------------------------------------------");
int version = r.ReadInt32();
if (version != saveVersion)
return;
int total = 0;
while (true)
{
int planetId = r.ReadInt32();
int assemblerId = r.ReadInt32();
int speedMultiplier = r.ReadInt32();
if (planetId == -1 && assemblerId == -1 && speedMultiplier == -1)
break;
var data = GameMain.data;
if (planetId < 0 || planetId >= data.factoryCount)
break;
PlanetFactory factory = data.factories[planetId];
if (factory == null)
break;
if (assemblerId < 0 || assemblerId >= factory.factorySystem.assemblerCursor)
break;
AssemblerComponent assembler = factory.factorySystem.assemblerPool[assemblerId];
if (assembler.id != assemblerId)
break;
if (speedMultiplier < 1 || speedMultiplier > 100)
break;
data.factories[planetId].factorySystem.assemblerPool[assemblerId].speedMultiplier = speedMultiplier;
Logger.LogMessage("reading data: " + planetId + " " + assemblerId + " " + speedMultiplier);
total++;
}
Logger.LogMessage("total: " + total);
}
public void Export(BinaryWriter w)
{
Logger.LogMessage("---------------------------------------------");
w.Write(saveVersion);
var data = GameMain.data;
int total = 0;
for (int i = 0; i < data.factoryCount; i++)
{
PlanetFactory factory = data.factories[i];
if (factory == null)
{
continue;
}
for (int j = 1; j < factory.factorySystem.assemblerCursor; j++)
{
var assembler = factory.factorySystem.assemblerPool[j];
if (assembler.id != j)
continue;
if (assembler.speedMultiplier > 100 || assembler.speedMultiplier < 1)
continue;
w.Write(i);
w.Write(j);
w.Write(assembler.speedMultiplier);
Logger.LogMessage("writing data: " + i + " " + j + " " + assembler.speedMultiplier);
total++;
}
}
// end of data
w.Write(-1);
w.Write(-1);
w.Write(-1);
Logger.LogMessage("total: " + total);
}
public void IntoOtherSave()
{
Logger.LogMessage("---------------------------------------------");
Logger.LogMessage("No save data found");
return;
}
}
}
Editor is loading...
Leave a Comment