Skip to content

Commit

Permalink
fix: save file issues
Browse files Browse the repository at this point in the history
  • Loading branch information
TisRyno committed Apr 6, 2024
1 parent ebdd141 commit 42d1a89
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 38 deletions.
11 changes: 6 additions & 5 deletions LethalProgression/LP_NetworkManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ namespace LethalProgression
[HarmonyPatch]
internal class LP_NetworkManager
{
public static LC_XP xpInstance;
public static GameObject xpNetworkObject;

[HarmonyPostfix]
[HarmonyPatch(typeof(GameNetworkManager), "Start")]
public static void Init()
Expand All @@ -20,21 +23,19 @@ public static void Init()
NetworkManager.Singleton.AddNetworkPrefab(xpNetworkObject);
}

public static GameObject xpNetworkObject;

[HarmonyPostfix]
[HarmonyPatch(typeof(StartOfRound), "Awake")]
static void SpawnNetworkHandler()
{
if (NetworkManager.Singleton.IsHost || NetworkManager.Singleton.IsServer)
{
var networkHandlerHost = Object.Instantiate(xpNetworkObject, Vector3.zero, Quaternion.identity);
GameObject networkHandlerHost = Object.Instantiate(xpNetworkObject, Vector3.zero, Quaternion.identity);

networkHandlerHost.GetComponent<NetworkObject>().Spawn();
xpInstance = networkHandlerHost.GetComponent<LC_XP>();

LethalPlugin.Log.LogInfo("XPHandler Initialized.");
}
}

public static LC_XP xpInstance;
}
}
8 changes: 5 additions & 3 deletions LethalProgression/Patches/XPPatches.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using HarmonyLib;
using HarmonyLib;
using LethalProgression.Skills;
using LethalProgression.GUI;
using Steamworks;
Expand Down Expand Up @@ -28,7 +28,7 @@ private static void ResetXPValues(StartOfRound __instance)
xpInstance.xpLevel.Value = 0;
xpInstance.xpPoints.Value = 0;
xpInstance.profit.Value = 0;
xpInstance.teamLootValue.Value = 0;
xpInstance.teamLootLevel.Value = 0;
}

[HarmonyPostfix]
Expand All @@ -37,7 +37,9 @@ private static void DisconnectXPHandler()
{
if (LP_NetworkManager.xpInstance.skillList.GetSkill(UpgradeType.Value).GetLevel() != 0)
{
LP_NetworkManager.xpInstance.TeamLootValueUpdate(0);
int localLootLevel = LP_NetworkManager.xpInstance.skillList.skills[UpgradeType.Value].GetLevel();

LP_NetworkManager.xpInstance.TeamLootValueUpdate(-localLootLevel);
}

SprintSpeed.sprintSpeed = 2.25f;
Expand Down
2 changes: 1 addition & 1 deletion LethalProgression/Saving/SaveManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public static void Save(ulong steamid, string data)
{
saveFileSlot = GameNetworkManager.Instance.saveFileNum;

LethalPlugin.Log.LogInfo("Saving to slot " + saveFileSlot + 1);
LethalPlugin.Log.LogInfo($"Saving to slot {saveFileSlot + 1} in {GetSavePath()}");

// If file doesn't exist, create it
if (!Directory.Exists(GetSavePath()))
Expand Down
24 changes: 16 additions & 8 deletions LethalProgression/Saving/SavePatches.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using HarmonyLib;
using LethalProgression.Skills;
using Newtonsoft.Json;
Expand All @@ -13,22 +13,30 @@ internal class SavePatches
[HarmonyPatch(typeof(GameNetworkManager), "SaveGame")]
private static void SaveGame(GameNetworkManager __instance)
{
DoSave();
LethalPlugin.Log.LogDebug("Invoked DoSave via SaveGame");
DoSave(__instance);
}

// Whenever disconnect
[HarmonyPrefix]
[HarmonyPatch(typeof(GameNetworkManager), "Disconnect")]
private static void Disconnect(GameNetworkManager __instance)
{
DoSave();
if (__instance.currentLobby == null)
return;

LethalPlugin.Log.LogDebug("Invoked DoSave via Disconnect");

DoSave(__instance);
}

public static void DoSave()
public static void DoSave(GameNetworkManager __instance)
{
SaveData saveData = new SaveData();
saveData.steamId = GameNetworkManager.Instance.localPlayerController.playerSteamId;
saveData.skillPoints = LP_NetworkManager.xpInstance.skillPoints;
SaveData saveData = new SaveData
{
steamId = __instance.localPlayerController.playerSteamId,
skillPoints = LP_NetworkManager.xpInstance.skillPoints
};

foreach (KeyValuePair<UpgradeType, Skill> skill in LP_NetworkManager.xpInstance.skillList.skills)
{
Expand All @@ -37,7 +45,7 @@ public static void DoSave()
}

string data = JsonConvert.SerializeObject(saveData);
LP_NetworkManager.xpInstance.SaveData_ServerRpc(GameNetworkManager.Instance.localPlayerController.playerSteamId, data);
LP_NetworkManager.xpInstance.SaveData_ServerRpc(__instance.localPlayerController.playerSteamId, data);
}

[HarmonyPostfix]
Expand Down
7 changes: 5 additions & 2 deletions LethalProgression/Skills/LootValue.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using HarmonyLib;
using HarmonyLib;

namespace LethalProgression.Skills
{
Expand All @@ -15,7 +15,10 @@ private static void AddLootValue()
if (!LP_NetworkManager.xpInstance.skillList.IsSkillValid(UpgradeType.Value))
return;

float scrapValueAdded = LP_NetworkManager.xpInstance.teamLootValue.Value / 100;
float mult = LP_NetworkManager.xpInstance.skillList.skills[UpgradeType.Value].GetMultiplier();
float value = LP_NetworkManager.xpInstance.teamLootLevel.Value * mult;

float scrapValueAdded = value / 100;

try
{
Expand Down
17 changes: 12 additions & 5 deletions LethalProgression/Skills/Oxygen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,21 @@ internal class Oxygen
private static float oxygenTimer = 0f;
private static bool inWater = false;
private static bool canDrown = true;

[HarmonyPostfix]
[HarmonyPatch(typeof(PlayerControllerB), "SetFaceUnderwaterClientRpc")]
private static void EnteredWater(PlayerControllerB __instance)
{
inWater = true;
}

[HarmonyPostfix]
[HarmonyPatch(typeof(PlayerControllerB), "SetFaceOutOfWaterClientRpc")]
private static void LeftWater(PlayerControllerB __instance)
{
inWater = false;
}

[HarmonyPrefix]
[HarmonyPatch(typeof(PlayerControllerB), "SetFaceUnderwaterFilters")]
private static void ShouldDrown(PlayerControllerB __instance)
Expand All @@ -34,11 +37,11 @@ private static void ShouldDrown(PlayerControllerB __instance)
StartOfRound.Instance.drowningTimer = 99f;
}
}

[HarmonyPostfix]
[HarmonyPatch(typeof(PlayerControllerB), "LateUpdate")]
private static void OxygenUpdate(PlayerControllerB __instance)
{

if (!LP_NetworkManager.xpInstance.skillList.IsSkillListValid())
return;

Expand All @@ -48,23 +51,22 @@ private static void OxygenUpdate(PlayerControllerB __instance)
if (__instance.isPlayerDead)
{
if (oxygenBar)
{
oxygenBar.SetActive(false);
}

return;
}

if (LP_NetworkManager.xpInstance.skillList.skills[UpgradeType.Oxygen].GetLevel() == 0)
{
if (oxygenBar)
{
oxygenBar.SetActive(false);
}

if (!canDrown)
{
canDrown = true;
StartOfRound.Instance.drowningTimer = 1f;
}

return;
}

Expand All @@ -73,6 +75,7 @@ private static void OxygenUpdate(PlayerControllerB __instance)

Skill skill = LP_NetworkManager.xpInstance.skillList.skills[UpgradeType.Oxygen];
float maxOxygen = skill.GetTrueValue();

if (inWater)
{
oxygenBar.SetActive(true);
Expand All @@ -98,6 +101,7 @@ private static void OxygenUpdate(PlayerControllerB __instance)
oxygenTimer -= Time.deltaTime;
}
}

if (!inWater)
{
if (oxygenTimer <= 0f)
Expand All @@ -119,16 +123,19 @@ private static void OxygenUpdate(PlayerControllerB __instance)
oxygenTimer -= Time.deltaTime;
}
}

if (oxygen > maxOxygen)
{
oxygenBar.SetActive(false);
oxygen = maxOxygen;
}

if (oxygenBar.activeSelf)
{
float fill = oxygen / maxOxygen;
oxygenBar.transform.GetChild(0).GetChild(0).GetComponent<Image>().fillAmount = fill;
}

//LethalPlugin.Log.LogInfo($"Underwater: {__instance.isUnderwater} | Oxygen: {oxygen} | Oxygen Timer: {oxygenTimer} | In Water: {inWater}");
}
public static void CreateOxygenBar()
Expand Down
28 changes: 14 additions & 14 deletions LethalProgression/XP.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using Unity.Netcode;
using UnityEngine;
using System.Collections;
Expand All @@ -21,18 +21,20 @@ internal class LC_XP : NetworkBehaviour
public NetworkVariable<int> xpReq = new NetworkVariable<int>(0, NetworkVariableReadPermission.Everyone, NetworkVariableWritePermission.Server);

// Special boys
public NetworkVariable<float> teamLootValue = new NetworkVariable<float>(0, NetworkVariableReadPermission.Everyone, NetworkVariableWritePermission.Server);
public NetworkVariable<int> teamLootLevel = new NetworkVariable<int>(0, NetworkVariableReadPermission.Everyone, NetworkVariableWritePermission.Server);

public int skillPoints;
public SkillList skillList;
public SkillsGUI guiObj;
public bool Initialized = false;
public bool loadedSave = false;

public void Start()
{
LethalPlugin.Log.LogInfo("XP Network Behavior Made!");
PlayerConnect_ServerRpc();
}

public void LoadSharedData()
{
SaveSharedData sharedData = SaveManager.LoadShared();
Expand All @@ -50,6 +52,7 @@ public void LoadSharedData()

LethalPlugin.Log.LogInfo(GetXPRequirement().ToString());
}

public void LoadLocalData(string data)
{
if (loadedSave)
Expand All @@ -68,6 +71,7 @@ public void LoadLocalData(string data)
skillList.skills[skill.Key].AddLevel(skill.Value);
skillCheck += skill.Value;
}

LethalPlugin.Log.LogInfo(GetXPRequirement().ToString());

// Sanity check: If skillCheck goes over amount of skill points, reset all skills.
Expand All @@ -87,6 +91,7 @@ public void LoadLocalData(string data)
skillPoints += (xpLevel.Value + 5) - (skillCheck + skillPoints);
}
}

public int GetXPRequirement()
{
// First, we need to check how many players.
Expand Down Expand Up @@ -212,23 +217,17 @@ public void Givepoint_ClientRPC()
/////////////////////////////////////////////////
/// Team Loot Upgrade Sync
/////////////////////////////////////////////////
public void TeamLootValueUpdate(float update)
public void TeamLootValueUpdate(int change)
{
TeamLootValueUpdate_ServerRpc(update);
TeamLootValueUpdate_ServerRpc(change);
}

[ServerRpc(RequireOwnership = false)]
public void TeamLootValueUpdate_ServerRpc(float updatedValue)
public void TeamLootValueUpdate_ServerRpc(int change)
{
float mult = LP_NetworkManager.xpInstance.skillList.skills[UpgradeType.Value].GetMultiplier();
float value = updatedValue * mult;
teamLootLevel.Value += change;

teamLootValue.Value += value;
if (value == 0)
{
teamLootValue.Value = value;
}
LethalPlugin.Log.LogInfo($"Changed team loot value by {updatedValue * mult} turning into {teamLootValue.Value}.");
LethalPlugin.Log.LogInfo($"Changed team loot value by {change} turning into {teamLootLevel.Value}.");
}

/////////////////////////////////////////////////
Expand Down Expand Up @@ -328,6 +327,7 @@ public void SendEveryoneHandSlots_ClientRpc(ulong playerID, int handSlots)
{
SetHandSlot(playerID, handSlots);
}

// CONFIGS
[ServerRpc(RequireOwnership = false)]
public void PlayerConnect_ServerRpc()
Expand Down Expand Up @@ -361,7 +361,7 @@ public void SendEveryoneConfigs_ClientRpc(string serializedConfig)
}

guiObj = new SkillsGUI();
teamLootValue.OnValueChanged += guiObj.TeamLootHudUpdate;
teamLootLevel.OnValueChanged += guiObj.TeamLootHudUpdate;

skillPoints = xpLevel.Value + 5;

Expand Down

0 comments on commit 42d1a89

Please sign in to comment.