< Summary

Class:SectionSceneGeneralSettingsController
Assembly:BuilderProjectsPanel
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/BuilderProjectsPanel/Scripts/SectionController/MenuSections/SectionSceneGeneralSettingsController.cs
Covered lines:19
Uncovered lines:22
Coverable lines:41
Total lines:84
Line coverage:46.3% (19 of 41)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SectionSceneGeneralSettingsController(...)0%110100%
SectionSceneGeneralSettingsController()0%2100%
Dispose()0%110100%
SetViewContainer(...)0%2100%
SetSceneData(...)0%440100%
OnShow()0%2100%
OnHide()0%2100%
OnSelectScene(...)0%2100%
OnApplyChanges()0%42600%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/BuilderProjectsPanel/Scripts/SectionController/MenuSections/SectionSceneGeneralSettingsController.cs

#LineLine coverage
 1using System;
 2using System.Linq;
 3using UnityEngine;
 4using Object = UnityEngine.Object;
 5
 6internal class SectionSceneGeneralSettingsController : SectionBase, ISelectSceneListener, ISectionUpdateSceneDataRequest
 7{
 8    public const string VIEW_PREFAB_PATH = "BuilderProjectsPanelMenuSections/SectionSceneGeneralSettingsView";
 9
 10    internal const string PERMISSION_MOVE_PLAYER = "ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE";
 11    internal const string PERMISSION_TRIGGER_EMOTES = "ALLOW_TO_TRIGGER_AVATAR_EMOTE";
 12
 13    private ISceneData sceneData;
 14
 315    private readonly SceneDataUpdatePayload sceneDataUpdatePayload = new SceneDataUpdatePayload();
 16    private readonly SectionSceneGeneralSettingsView view;
 17
 18    public event Action<string, SceneDataUpdatePayload> OnRequestUpdateSceneData;
 19
 020    public SectionSceneGeneralSettingsController() : this(
 21        Object.Instantiate(Resources.Load<SectionSceneGeneralSettingsView>(VIEW_PREFAB_PATH))
 022    ) { }
 23
 324    public SectionSceneGeneralSettingsController(SectionSceneGeneralSettingsView view)
 25    {
 326        this.view = view;
 327        view.OnApplyChanges += OnApplyChanges;
 328    }
 29
 30    public override void Dispose()
 31    {
 332        view.OnApplyChanges -= OnApplyChanges;
 333        Object.Destroy(view.gameObject);
 334    }
 35
 036    public override void SetViewContainer(Transform viewContainer) { view.SetParent(viewContainer); }
 37
 38    public void SetSceneData(ISceneData sceneData)
 39    {
 340        this.sceneData = sceneData;
 41
 342        view.SetName(sceneData.name);
 343        view.SetDescription(sceneData.description);
 344        view.SetConfigurationActive(sceneData.isDeployed);
 345        view.SetPermissionsActive(sceneData.isDeployed);
 46
 347        if (sceneData.isDeployed)
 48        {
 249            view.SetAllowMovePlayer(sceneData.requiredPermissions != null && sceneData.requiredPermissions.Contains(PERM
 250            view.SetAllowTriggerEmotes(sceneData.requiredPermissions != null && sceneData.requiredPermissions.Contains(P
 251            view.SetAllowVoiceChat(sceneData.allowVoiceChat);
 252            view.SetMatureContent(sceneData.isMatureContent);
 53        }
 354    }
 55
 056    protected override void OnShow() { view.SetActive(true); }
 57
 058    protected override void OnHide() { view.SetActive(false); }
 059    void ISelectSceneListener.OnSelectScene(ISceneCardView sceneCardView) { SetSceneData(sceneCardView.sceneData); }
 60
 61    void OnApplyChanges()
 62    {
 063        sceneDataUpdatePayload.name = view.GetName();
 064        sceneDataUpdatePayload.description = view.GetDescription();
 065        sceneDataUpdatePayload.allowVoiceChat = view.GetAllowVoiceChat();
 066        sceneDataUpdatePayload.isMatureContent = view.GetMatureContent();
 67
 068        string[] permissions = null;
 069        if (view.GetAllowMovePlayer() && view.GetAllowTriggerEmotes())
 70        {
 071            permissions = new [] { PERMISSION_MOVE_PLAYER, PERMISSION_TRIGGER_EMOTES };
 072        }
 073        else if (view.GetAllowMovePlayer())
 74        {
 075            permissions = new [] { PERMISSION_MOVE_PLAYER };
 076        }
 077        else if (view.GetAllowTriggerEmotes())
 78        {
 079            permissions = new [] { PERMISSION_TRIGGER_EMOTES };
 80        }
 081        sceneDataUpdatePayload.requiredPermissions = permissions;
 082        OnRequestUpdateSceneData?.Invoke(sceneData.id, sceneDataUpdatePayload);
 083    }
 84}