//called on Start by PlayerController public void HandleLoadStart() { //load recharge state from player model var playerModel = GameState.Instance.PlayerRpgState; if (playerModel.ExtraData.TryGetValue("ShieldRechargeState", out object rawState)) { RechargeState = (ShieldRechargeState)Convert.ToInt32(rawState); //because it'll actually be long because json.net if (RechargeState == ShieldRechargeState.Recharging) { PlayRechargeEffect(); } } if (RechargeState == ShieldRechargeState.Idle) { //start waiting to recharge if needed var player = GameState.Instance.PlayerRpgState; if (player.ShieldsFraction < 1) { if (player.DerivedStats.ShieldParams.MaxShields > 0) { SetRechargeState(ShieldRechargeState.Waiting); //now waiting to recharge ElapsedSinceLastDamage = 0; } } } }
private void SetRechargeState(ShieldRechargeState newState) { RechargeState = newState; //save for later var playerModel = GameState.Instance.PlayerRpgState; playerModel.ExtraData["ShieldRechargeState"] = newState; }