< Summary

Class:BIWSaveController
Assembly:BuilderInWorld
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/BuilderMode/Controllers/BIWSaveController.cs
Covered lines:32
Uncovered lines:15
Coverable lines:47
Total lines:106
Line coverage:68% (32 of 47)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
BIWSaveController()0%2100%
GetSaveTimes()0%2100%
Init(...)0%330100%
Dispose()0%330100%
ResetSaveTime()0%2100%
ResetNumberOfSaves()0%2100%
EnterEditMode(...)0%110100%
ExitEditMode()0%4.123050%
SetSaveActivation(...)0%6200%
CanSave()0%330100%
TryToSave()0%220100%
ForceSave()0%4.054085.71%
SaveSceneInfo(...)0%2100%
ConfirmPublishScene(...)0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/BuilderMode/Controllers/BIWSaveController.cs

#LineLine coverage
 1using DCL;
 2using DCL.Controllers;
 3using UnityEngine;
 4
 5public interface IBIWSaveController
 6{
 7    int GetSaveTimes();
 8    void SetSaveActivation(bool isActive, bool tryToSave = false);
 9    void TryToSave();
 10    void ForceSave();
 11}
 12
 13public class BIWSaveController : BIWController, IBIWSaveController
 14{
 15    private const float MS_BETWEEN_SAVES = 5000f;
 16
 017    internal int numberOfSaves { get; set; } = 0;
 18
 19    private BuilderInWorldBridge bridge;
 20
 21    private float nextTimeToSave;
 022    private bool canActivateSave = true;
 023    public int GetSaveTimes() { return numberOfSaves; }
 24
 25    public override void Init(BIWContext context)
 26    {
 2927        base.Init(context);
 28
 2929        bridge = context.sceneReferences.builderInWorldBridge;
 2930        if (bridge != null)
 2931            bridge.OnKernelUpdated += TryToSave;
 32
 2933        if (HUDController.i.builderInWorldMainHud != null)
 34        {
 2635            HUDController.i.builderInWorldMainHud.OnSaveSceneInfoAction += SaveSceneInfo;
 2636            HUDController.i.builderInWorldMainHud.OnConfirmPublishAction += ConfirmPublishScene;
 37        }
 2938    }
 39
 40    public override void Dispose()
 41    {
 2742        base.Dispose();
 43
 2744        if (bridge != null)
 2745            bridge.OnKernelUpdated -= TryToSave;
 46
 2747        if (HUDController.i.builderInWorldMainHud != null)
 48        {
 2749            HUDController.i.builderInWorldMainHud.OnSaveSceneInfoAction -= SaveSceneInfo;
 2750            HUDController.i.builderInWorldMainHud.OnConfirmPublishAction -= ConfirmPublishScene;
 51        }
 2752    }
 53
 054    public void ResetSaveTime() { nextTimeToSave = 0; }
 55
 056    public void ResetNumberOfSaves() { numberOfSaves = 0; }
 57
 58    public override void EnterEditMode(ParcelScene scene)
 59    {
 1060        base.EnterEditMode(scene);
 1061        nextTimeToSave = DCLTime.realtimeSinceStartup + MS_BETWEEN_SAVES / 1000f;
 1062        ResetNumberOfSaves();
 1063    }
 64
 65    public override void ExitEditMode()
 66    {
 467        if (numberOfSaves > 0)
 68        {
 069            ForceSave();
 70
 071            HUDController.i.builderInWorldMainHud?.SaveSceneInfo();
 072            ResetNumberOfSaves();
 73        }
 474        base.ExitEditMode();
 475    }
 76
 77    public void SetSaveActivation(bool isActive, bool tryToSave = false)
 78    {
 079        canActivateSave = isActive;
 080        if (tryToSave)
 081            TryToSave();
 082    }
 83
 684    public bool CanSave() { return DCLTime.realtimeSinceStartup >= nextTimeToSave && isEditModeActive && canActivateSave
 85
 86    public void TryToSave()
 87    {
 388        if (CanSave())
 289            ForceSave();
 390    }
 91
 92    public void ForceSave()
 93    {
 394        if (!isEditModeActive || !canActivateSave)
 095            return;
 96
 397        bridge.SaveSceneState(sceneToEdit);
 398        nextTimeToSave = DCLTime.realtimeSinceStartup + MS_BETWEEN_SAVES / 1000f;
 399        HUDController.i.builderInWorldMainHud?.SceneSaved();
 3100        numberOfSaves++;
 3101    }
 102
 0103    public void SaveSceneInfo(string sceneName, string sceneDescription, string sceneScreenshot) { bridge.SaveSceneInfo(
 104
 0105    internal void ConfirmPublishScene(string sceneName, string sceneDescription, string sceneScreenshot) { ResetNumberOf
 106}