< Summary

Class:DCL.InputController_Legacy
Assembly:MainScripts
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/InputController_Legacy.cs
Covered lines:43
Uncovered lines:8
Coverable lines:51
Total lines:143
Line coverage:84.3% (43 of 51)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
InputController_Legacy()0%110100%
AddListener(...)0%330100%
RemoveListener(...)0%440100%
RaiseEvent(...)0%3.013088.89%
Update()0%12.8911075%
IsPressed(...)0%13.127050%

File(s)

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

#LineLine coverage
 1using DCL.Configuration;
 2using DCL.Interface;
 3using System;
 4using System.Collections.Generic;
 5using UnityEngine;
 6
 7namespace DCL
 8{
 9    public class InputController_Legacy
 10    {
 1977411        private static bool renderingEnabled => CommonScriptableObjects.rendererState.Get();
 12        private static InputController_Legacy instance = null;
 13
 14        public static InputController_Legacy i
 15        {
 16            get
 17            {
 2388518                if (instance == null)
 119                    instance = new InputController_Legacy();
 20
 2388521                return instance;
 22            }
 23        }
 24
 25        public enum EVENT
 26        {
 27            BUTTON_DOWN,
 28            BUTTON_UP
 29        }
 30
 31        private enum BUTTON_TYPE
 32        {
 33            MOUSE,
 34            KEYBOARD
 35        }
 36
 37        private struct BUTTON_MAP
 38        {
 39            public BUTTON_TYPE type;
 40            public int buttonNum;
 41            public WebInterface.ACTION_BUTTON buttonId;
 42            public bool useRaycast;
 43        }
 44
 145        private Dictionary<WebInterface.ACTION_BUTTON, List<Action<WebInterface.ACTION_BUTTON, EVENT, bool>>> listeners 
 146        private List<BUTTON_MAP> buttonsMap = new List<BUTTON_MAP>();
 47
 148        private InputController_Legacy()
 49        {
 150            buttonsMap.Add(new BUTTON_MAP() { type = BUTTON_TYPE.MOUSE, buttonNum = 0, buttonId = WebInterface.ACTION_BU
 151            buttonsMap.Add(new BUTTON_MAP() { type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.PrimaryButton
 152            buttonsMap.Add(new BUTTON_MAP() { type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.SecondaryButt
 153        }
 54
 55        public void AddListener(WebInterface.ACTION_BUTTON buttonId, Action<WebInterface.ACTION_BUTTON, EVENT, bool> cal
 56        {
 199857            if (!listeners.ContainsKey(buttonId))
 199858                listeners.Add(buttonId, new List<Action<WebInterface.ACTION_BUTTON, EVENT, bool>>());
 59
 199860            if (!listeners[buttonId].Contains(callback))
 199861                listeners[buttonId].Add(callback);
 199862        }
 63
 64        public void RemoveListener(WebInterface.ACTION_BUTTON buttonId, Action<WebInterface.ACTION_BUTTON, EVENT, bool> 
 65        {
 206166            if (listeners.ContainsKey(buttonId))
 67            {
 199868                if (listeners[buttonId].Contains(callback))
 69                {
 199870                    listeners[buttonId].Remove(callback);
 71
 199872                    if (listeners[buttonId].Count == 0)
 199873                        listeners.Remove(buttonId);
 74                }
 75            }
 206176        }
 77
 78        // Note (Zak): it is public for testing purposes only
 79        public void RaiseEvent(WebInterface.ACTION_BUTTON buttonId, EVENT evt, bool useRaycast)
 80        {
 1481            if (!listeners.ContainsKey(buttonId))
 082                return;
 83
 1484            List<Action<WebInterface.ACTION_BUTTON, EVENT, bool>> callbacks = listeners[buttonId];
 1485            int count = callbacks.Count;
 86
 5687            for (int i = 0; i < count; i++)
 88            {
 1489                callbacks[i].Invoke(buttonId, evt, useRaycast);
 90            }
 1491        }
 92
 93        public void Update()
 94        {
 1977495            if (!renderingEnabled)
 34896                return;
 97
 1942698            int count = buttonsMap.Count;
 99
 155408100            for (int i = 0; i < count; i++)
 101            {
 58278102                BUTTON_MAP btnMap = buttonsMap[i];
 103
 58278104                switch (btnMap.type)
 105                {
 106                    case BUTTON_TYPE.MOUSE:
 19426107                        if (CommonScriptableObjects.allUIHidden.Get())
 108                            break;
 11805109                        if (Input.GetMouseButtonDown(btnMap.buttonNum))
 0110                            RaiseEvent(btnMap.buttonId, EVENT.BUTTON_DOWN, btnMap.useRaycast);
 11805111                        else if (Input.GetMouseButtonUp(btnMap.buttonNum))
 0112                            RaiseEvent(btnMap.buttonId, EVENT.BUTTON_UP, btnMap.useRaycast);
 0113                        break;
 114                    case BUTTON_TYPE.KEYBOARD:
 38852115                        if (CommonScriptableObjects.allUIHidden.Get())
 116                            break;
 23610117                        if (Input.GetKeyDown((KeyCode) btnMap.buttonNum))
 0118                            RaiseEvent(btnMap.buttonId, EVENT.BUTTON_DOWN, btnMap.useRaycast);
 23610119                        else if (Input.GetKeyUp((KeyCode) btnMap.buttonNum))
 0120                            RaiseEvent(btnMap.buttonId, EVENT.BUTTON_UP, btnMap.useRaycast);
 121                        break;
 122                }
 123            }
 19426124        }
 125
 126        public bool IsPressed(WebInterface.ACTION_BUTTON button)
 127        {
 128            switch (button)
 129            {
 130                case WebInterface.ACTION_BUTTON.POINTER:
 0131                    return Input.GetMouseButton(0);
 132                case WebInterface.ACTION_BUTTON.PRIMARY:
 2133                    return Input.GetKey(InputSettings.PrimaryButtonKeyCode);
 134                case WebInterface.ACTION_BUTTON.SECONDARY:
 0135                    return Input.GetKey(InputSettings.SecondaryButtonKeyCode);
 136                default: // ANY
 36137                    return Input.GetMouseButton(0) ||
 138                           Input.GetKey(InputSettings.PrimaryButtonKeyCode) ||
 139                           Input.GetKey(InputSettings.SecondaryButtonKeyCode);
 140            }
 141        }
 142    }
 143}