kisebb fixek elv.
This commit is contained in:
@@ -71,7 +71,25 @@ namespace KCM.LoadSaveOverrides
|
|||||||
this.DragonSpawnSaveData = new DragonSpawn.DragonSpawnSaveData().Pack(DragonSpawn.inst);
|
this.DragonSpawnSaveData = new DragonSpawn.DragonSpawnSaveData().Pack(DragonSpawn.inst);
|
||||||
this.UnitSystemSaveData = new UnitSystem.UnitSystemSaveData().Pack(UnitSystem.inst);
|
this.UnitSystemSaveData = new UnitSystem.UnitSystemSaveData().Pack(UnitSystem.inst);
|
||||||
this.RaidSystemSaveData2 = new RaiderSystem.RaiderSystemSaveData2().Pack(RaiderSystem.inst);
|
this.RaidSystemSaveData2 = new RaiderSystem.RaiderSystemSaveData2().Pack(RaiderSystem.inst);
|
||||||
|
|
||||||
|
if (ShipSystem.inst != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
this.ShipSystemSaveData = new ShipSystem.ShipSystemSaveData().Pack(ShipSystem.inst);
|
this.ShipSystemSaveData = new ShipSystem.ShipSystemSaveData().Pack(ShipSystem.inst);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Main.helper.Log("Error packing ShipSystem for save; skipping ShipSystemSaveData.");
|
||||||
|
Main.helper.Log(ex.ToString());
|
||||||
|
this.ShipSystemSaveData = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.ShipSystemSaveData = null;
|
||||||
|
}
|
||||||
|
|
||||||
this.AIBrainsSaveData = new AIBrainsContainer.SaveData().Pack(AIBrainsContainer.inst);
|
this.AIBrainsSaveData = new AIBrainsContainer.SaveData().Pack(AIBrainsContainer.inst);
|
||||||
this.SiegeMonsterSaveData = new SiegeMonster.SiegeMonsterSaveData().Pack(null);
|
this.SiegeMonsterSaveData = new SiegeMonster.SiegeMonsterSaveData().Pack(null);
|
||||||
this.CartSystemSaveData = new CartSystem.CartSystemSaveData().Pack(CartSystem.inst);
|
this.CartSystemSaveData = new CartSystem.CartSystemSaveData().Pack(CartSystem.inst);
|
||||||
|
|||||||
61
Main.cs
61
Main.cs
@@ -1597,6 +1597,12 @@ namespace KCM
|
|||||||
if (KCClient.client.IsConnected)
|
if (KCClient.client.IsConnected)
|
||||||
{
|
{
|
||||||
var bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic;
|
var bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic;
|
||||||
|
var landmassOwner = p.PlayerLandmassOwner;
|
||||||
|
if (landmassOwner == null)
|
||||||
|
{
|
||||||
|
Main.helper.Log("PlayerLandmassOwner was null during PlayerSaveData.Pack; using vanilla save pack.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
Main.helper.Log("Running patched player pack method");
|
Main.helper.Log("Running patched player pack method");
|
||||||
Main.helper.Log("Saving banner system");
|
Main.helper.Log("Saving banner system");
|
||||||
@@ -1609,7 +1615,7 @@ namespace KCM
|
|||||||
|
|
||||||
|
|
||||||
Main.helper.Log("Saving player bannerIdx");
|
Main.helper.Log("Saving player bannerIdx");
|
||||||
__instance.bannerIdx = p.PlayerLandmassOwner.bannerIdx;
|
__instance.bannerIdx = landmassOwner.bannerIdx;
|
||||||
|
|
||||||
Main.helper.Log("Saving player WorkersArray");
|
Main.helper.Log("Saving player WorkersArray");
|
||||||
__instance.WorkersArray = new Villager.VillagerSaveData[p.Workers.Count];
|
__instance.WorkersArray = new Villager.VillagerSaveData[p.Workers.Count];
|
||||||
@@ -1626,7 +1632,9 @@ namespace KCM
|
|||||||
__instance.HomelessData = new List<Guid>();
|
__instance.HomelessData = new List<Guid>();
|
||||||
for (int k = 0; k < p.Homeless.Count; k++)
|
for (int k = 0; k < p.Homeless.Count; k++)
|
||||||
{
|
{
|
||||||
__instance.HomelessData.Add(p.Homeless.data[k].guid);
|
var homeless = p.Homeless.data[k];
|
||||||
|
if (homeless != null)
|
||||||
|
__instance.HomelessData.Add(homeless.guid);
|
||||||
}
|
}
|
||||||
__instance.structures = new List<Building.BuildingSaveData[]>();
|
__instance.structures = new List<Building.BuildingSaveData[]>();
|
||||||
__instance.subStructures = new List<Building.BuildingSaveData[]>();
|
__instance.subStructures = new List<Building.BuildingSaveData[]>();
|
||||||
@@ -1634,17 +1642,35 @@ namespace KCM
|
|||||||
Main.helper.Log("Saving player structures");
|
Main.helper.Log("Saving player structures");
|
||||||
World.inst.ForEachTile(0, 0, World.inst.GridWidth, World.inst.GridHeight, delegate (int x, int z, Cell cell)
|
World.inst.ForEachTile(0, 0, World.inst.GridWidth, World.inst.GridHeight, delegate (int x, int z, Cell cell)
|
||||||
{
|
{
|
||||||
bool flag4 = cell.OccupyingStructure.Count > 0;
|
if (cell == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
bool flag4 = cell.OccupyingStructure != null && cell.OccupyingStructure.Count > 0;
|
||||||
if (flag4)
|
if (flag4)
|
||||||
{
|
{
|
||||||
List<Building.BuildingSaveData> occupyingStructureData = new List<Building.BuildingSaveData>();
|
List<Building.BuildingSaveData> occupyingStructureData = new List<Building.BuildingSaveData>();
|
||||||
for (int i3 = 0; i3 < cell.OccupyingStructure.Count; i3++)
|
for (int i3 = 0; i3 < cell.OccupyingStructure.Count; i3++)
|
||||||
{
|
{
|
||||||
var building = cell.OccupyingStructure[i3];
|
var building = cell.OccupyingStructure[i3];
|
||||||
bool flag5 = Vector3.Distance(cell.OccupyingStructure[i3].transform.position.xz(), cell.Position.xz()) <= 1E-05f;
|
if (building == null)
|
||||||
if (flag5 && building.TeamID() == p.PlayerLandmassOwner.teamId)
|
continue;
|
||||||
|
|
||||||
|
var buildingTransform = building.transform;
|
||||||
|
if (buildingTransform == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
bool flag5 = Vector3.Distance(buildingTransform.position.xz(), cell.Position.xz()) <= 1E-05f;
|
||||||
|
if (flag5 && building.TeamID() == landmassOwner.teamId)
|
||||||
{
|
{
|
||||||
occupyingStructureData.Add(new Building.BuildingSaveData().Pack(cell.OccupyingStructure[i3]));
|
try
|
||||||
|
{
|
||||||
|
occupyingStructureData.Add(new Building.BuildingSaveData().Pack(building));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Main.helper.Log("Error packing structure for save: " + (building.UniqueName ?? string.Empty));
|
||||||
|
Main.helper.Log(ex.ToString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool flag6 = occupyingStructureData.Count > 0;
|
bool flag6 = occupyingStructureData.Count > 0;
|
||||||
@@ -1653,17 +1679,32 @@ namespace KCM
|
|||||||
__instance.structures.Add(occupyingStructureData.ToArray());
|
__instance.structures.Add(occupyingStructureData.ToArray());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool flag7 = cell.SubStructure.Count > 0;
|
bool flag7 = cell.SubStructure != null && cell.SubStructure.Count > 0;
|
||||||
if (flag7)
|
if (flag7)
|
||||||
{
|
{
|
||||||
List<Building.BuildingSaveData> subStructureData = new List<Building.BuildingSaveData>();
|
List<Building.BuildingSaveData> subStructureData = new List<Building.BuildingSaveData>();
|
||||||
for (int i4 = 0; i4 < cell.SubStructure.Count; i4++)
|
for (int i4 = 0; i4 < cell.SubStructure.Count; i4++)
|
||||||
{
|
{
|
||||||
var building = cell.SubStructure[i4];
|
var building = cell.SubStructure[i4];
|
||||||
bool flag8 = Vector3.Distance(cell.SubStructure[i4].transform.position.xz(), cell.Position.xz()) <= 1E-05f;
|
if (building == null)
|
||||||
if (flag8 && building.TeamID() == p.PlayerLandmassOwner.teamId)
|
continue;
|
||||||
|
|
||||||
|
var buildingTransform = building.transform;
|
||||||
|
if (buildingTransform == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
bool flag8 = Vector3.Distance(buildingTransform.position.xz(), cell.Position.xz()) <= 1E-05f;
|
||||||
|
if (flag8 && building.TeamID() == landmassOwner.teamId)
|
||||||
{
|
{
|
||||||
subStructureData.Add(new Building.BuildingSaveData().Pack(cell.SubStructure[i4]));
|
try
|
||||||
|
{
|
||||||
|
subStructureData.Add(new Building.BuildingSaveData().Pack(building));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Main.helper.Log("Error packing sub-structure for save: " + (building.UniqueName ?? string.Empty));
|
||||||
|
Main.helper.Log(ex.ToString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool flag9 = subStructureData.Count > 0;
|
bool flag9 = subStructureData.Count > 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user