客户端rsa,冗余清理,bug修复,安卓build问题
This commit is contained in:
@@ -19,6 +19,7 @@ public sealed class PlayerExperienceLedger : MonoBehaviour
|
||||
private PlayerExperiencePayload payload;
|
||||
private bool initialized;
|
||||
private bool loadedFromSave;
|
||||
private bool hasAnyRecoverableLocalState;
|
||||
private Player_SO boundPlayerData;
|
||||
|
||||
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
|
||||
@@ -75,6 +76,8 @@ public sealed class PlayerExperienceLedger : MonoBehaviour
|
||||
return;
|
||||
}
|
||||
|
||||
hasAnyRecoverableLocalState = SecureSaveVault.HasAnyRecoverableState("player_experience", "runtime", GetLegacySavePath())
|
||||
|| PlayerProgressBackupService.HasPlayerExperienceBackup();
|
||||
loadedFromSave = SecureSaveVault.TryLoadJson("player_experience", "runtime", out payload, GetLegacySavePath());
|
||||
if (payload == null)
|
||||
{
|
||||
@@ -91,6 +94,8 @@ public sealed class PlayerExperienceLedger : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
hasAnyRecoverableLocalState = hasAnyRecoverableLocalState || loadedFromSave;
|
||||
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
@@ -104,11 +109,16 @@ public sealed class PlayerExperienceLedger : MonoBehaviour
|
||||
InitializeIfNeeded();
|
||||
boundPlayerData = playerData;
|
||||
|
||||
if (!loadedFromSave)
|
||||
if (!loadedFromSave && !hasAnyRecoverableLocalState)
|
||||
{
|
||||
payload.playerExp = Mathf.Max(0, playerData.player_currentEXP);
|
||||
// 首次启动且无任何可恢复存档:用硬编码默认值(0)建立初始存档,
|
||||
// 不读取 Player_SO 的烘焙经验值,避免打包测试数据污染玩家进度。
|
||||
payload = CreateDefaultPayload();
|
||||
SyncToPlayerData();
|
||||
SaveNow();
|
||||
loadedFromSave = true;
|
||||
hasAnyRecoverableLocalState = true;
|
||||
NotifyExperienceChanged();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -122,6 +132,13 @@ public sealed class PlayerExperienceLedger : MonoBehaviour
|
||||
return payload.playerExp;
|
||||
}
|
||||
|
||||
public void SetExperience(int amount)
|
||||
{
|
||||
InitializeIfNeeded();
|
||||
payload.playerExp = Mathf.Max(0, amount);
|
||||
SaveNow();
|
||||
}
|
||||
|
||||
public void AddExperience(int amount)
|
||||
{
|
||||
if (amount == 0)
|
||||
@@ -181,6 +198,16 @@ public sealed class PlayerExperienceLedger : MonoBehaviour
|
||||
NotifyExperienceChanged();
|
||||
}
|
||||
|
||||
public void ClearPersistentState()
|
||||
{
|
||||
InitializeIfNeeded();
|
||||
payload = CreateDefaultPayload();
|
||||
SecureSaveVault.Delete("player_experience", "runtime", GetLegacySavePath());
|
||||
PlayerProgressBackupService.ClearPlayerExperienceBackup();
|
||||
SyncToPlayerData();
|
||||
NotifyExperienceChanged();
|
||||
}
|
||||
|
||||
private void SyncToPlayerData()
|
||||
{
|
||||
if (boundPlayerData == null || payload == null)
|
||||
|
||||
Reference in New Issue
Block a user