< Summary

Class:DCL.InputController_Legacy
Assembly:DCL.Components.Events
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/UUIDEventComponentsPlugin/UUIDComponent/InputController_Legacy.cs
Covered lines:56
Uncovered lines:9
Coverable lines:65
Total lines:234
Line coverage:86.1% (56 of 65)
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%14.2711070%
IsPressed(...)0%13.127050%
Dispose()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/UUIDEventComponentsPlugin/UUIDComponent/InputController_Legacy.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL.Configuration;
 4using DCL.Interface;
 5using UnityEngine;
 6
 7namespace DCL
 8{
 9    public class InputController_Legacy : IDisposable
 10    {
 11        public delegate void ButtonListenerCallback(WebInterface.ACTION_BUTTON buttonId, EVENT eventType,
 12            bool useRaycast, bool enablePointerEvent);
 13
 1784914        private static bool renderingEnabled => CommonScriptableObjects.rendererState.Get();
 15
 16        public enum EVENT
 17        {
 18            BUTTON_DOWN,
 19            BUTTON_UP
 20        }
 21
 22        private enum BUTTON_TYPE
 23        {
 24            MOUSE,
 25            KEYBOARD
 26        }
 27
 28        private struct BUTTON_MAP
 29        {
 30            public BUTTON_TYPE type;
 31            public int buttonNum;
 32            public WebInterface.ACTION_BUTTON buttonId;
 33            public bool useRaycast;
 34            public bool enablePointerEvent;
 35        }
 36
 8537        private Dictionary<WebInterface.ACTION_BUTTON, List<ButtonListenerCallback>> listeners =
 38            new Dictionary<WebInterface.ACTION_BUTTON, List<ButtonListenerCallback>>();
 39
 8540        private List<BUTTON_MAP> buttonsMap = new List<BUTTON_MAP>();
 41
 8542        public InputController_Legacy()
 43        {
 8544            buttonsMap.Add(new BUTTON_MAP()
 45            {
 46                type = BUTTON_TYPE.MOUSE, buttonNum = 0, buttonId = WebInterface.ACTION_BUTTON.POINTER,
 47                useRaycast = true, enablePointerEvent = true
 48            });
 8549            buttonsMap.Add(new BUTTON_MAP()
 50            {
 51                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.PrimaryButtonKeyCode,
 52                buttonId = WebInterface.ACTION_BUTTON.PRIMARY, useRaycast = true, enablePointerEvent = true
 53            });
 8554            buttonsMap.Add(new BUTTON_MAP()
 55            {
 56                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.SecondaryButtonKeyCode,
 57                buttonId = WebInterface.ACTION_BUTTON.SECONDARY, useRaycast = true, enablePointerEvent = true
 58            });
 59
 8560            buttonsMap.Add(new BUTTON_MAP()
 61            {
 62                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.ForwardButtonKeyCode,
 63                buttonId = WebInterface.ACTION_BUTTON.FORWARD, useRaycast = false, enablePointerEvent = false
 64            });
 8565            buttonsMap.Add(new BUTTON_MAP()
 66            {
 67                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.ForwardButtonKeyCodeAlt,
 68                buttonId = WebInterface.ACTION_BUTTON.FORWARD, useRaycast = false, enablePointerEvent = false
 69            });
 70
 8571            buttonsMap.Add(new BUTTON_MAP()
 72            {
 73                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.BackwardButtonKeyCode,
 74                buttonId = WebInterface.ACTION_BUTTON.BACKWARD, useRaycast = false, enablePointerEvent = false
 75            });
 8576            buttonsMap.Add(new BUTTON_MAP()
 77            {
 78                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.BackwardButtonKeyCodeAlt,
 79                buttonId = WebInterface.ACTION_BUTTON.BACKWARD, useRaycast = false, enablePointerEvent = false
 80            });
 81
 8582            buttonsMap.Add(new BUTTON_MAP()
 83            {
 84                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.RightButtonKeyCode,
 85                buttonId = WebInterface.ACTION_BUTTON.RIGHT, useRaycast = false, enablePointerEvent = false
 86            });
 8587            buttonsMap.Add(new BUTTON_MAP()
 88            {
 89                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.RightButtonKeyCodeAlt,
 90                buttonId = WebInterface.ACTION_BUTTON.RIGHT, useRaycast = false, enablePointerEvent = false
 91            });
 92
 8593            buttonsMap.Add(new BUTTON_MAP()
 94            {
 95                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.LeftButtonKeyCode,
 96                buttonId = WebInterface.ACTION_BUTTON.LEFT, useRaycast = false, enablePointerEvent = false
 97            });
 8598            buttonsMap.Add(new BUTTON_MAP()
 99            {
 100                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.LeftButtonKeyCodeAlt,
 101                buttonId = WebInterface.ACTION_BUTTON.LEFT, useRaycast = false, enablePointerEvent = false
 102            });
 103
 85104            buttonsMap.Add(new BUTTON_MAP()
 105            {
 106                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.WalkButtonKeyCode,
 107                buttonId = WebInterface.ACTION_BUTTON.WALK, useRaycast = false, enablePointerEvent = false
 108            });
 85109            buttonsMap.Add(new BUTTON_MAP()
 110            {
 111                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.JumpButtonKeyCode,
 112                buttonId = WebInterface.ACTION_BUTTON.JUMP, useRaycast = false, enablePointerEvent = false
 113            });
 114
 85115            buttonsMap.Add(new BUTTON_MAP()
 116            {
 117                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.ActionButton3Keycode,
 118                buttonId = WebInterface.ACTION_BUTTON.ACTION_3, useRaycast = true, enablePointerEvent = false
 119            });
 85120            buttonsMap.Add(new BUTTON_MAP()
 121            {
 122                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.ActionButton4Keycode,
 123                buttonId = WebInterface.ACTION_BUTTON.ACTION_4, useRaycast = true, enablePointerEvent = false
 124            });
 85125            buttonsMap.Add(new BUTTON_MAP()
 126            {
 127                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.ActionButton5Keycode,
 128                buttonId = WebInterface.ACTION_BUTTON.ACTION_5, useRaycast = true, enablePointerEvent = false
 129            });
 85130            buttonsMap.Add(new BUTTON_MAP()
 131            {
 132                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.ActionButton6Keycode,
 133                buttonId = WebInterface.ACTION_BUTTON.ACTION_6, useRaycast = true, enablePointerEvent = false
 134            });
 135
 85136            Environment.i.platform.updateEventHandler.AddListener(IUpdateEventHandler.EventType.Update, Update);
 85137        }
 138
 139        public void AddListener(WebInterface.ACTION_BUTTON buttonId, ButtonListenerCallback callback)
 140        {
 1105141            if (!listeners.ContainsKey(buttonId))
 1105142                listeners.Add(buttonId, new List<ButtonListenerCallback>());
 143
 1105144            if (!listeners[buttonId].Contains(callback))
 1105145                listeners[buttonId].Add(callback);
 1105146        }
 147
 148        public void RemoveListener(WebInterface.ACTION_BUTTON buttonId, ButtonListenerCallback callback)
 149        {
 1105150            if (listeners.ContainsKey(buttonId))
 151            {
 1105152                if (listeners[buttonId].Contains(callback))
 153                {
 1105154                    listeners[buttonId].Remove(callback);
 155
 1105156                    if (listeners[buttonId].Count == 0)
 1105157                        listeners.Remove(buttonId);
 158                }
 159            }
 1105160        }
 161
 162        // Note (Zak): it is public for testing purposes only
 163        public void RaiseEvent(WebInterface.ACTION_BUTTON buttonId, EVENT evt, bool useRaycast, bool enablePointerEvent)
 164        {
 14165            if (!listeners.ContainsKey(buttonId))
 0166                return;
 167
 14168            List<ButtonListenerCallback> callbacks = listeners[buttonId];
 14169            int count = callbacks.Count;
 170
 56171            for (int i = 0; i < count; i++)
 172            {
 14173                callbacks[i].Invoke(buttonId, evt, useRaycast, enablePointerEvent);
 174            }
 14175        }
 176
 177        public void Update()
 178        {
 17849179            if (!renderingEnabled)
 0180                return;
 181
 17849182            int count = buttonsMap.Count;
 183
 642564184            for (int i = 0; i < count; i++)
 185            {
 303433186                BUTTON_MAP btnMap = buttonsMap[i];
 187
 303433188                switch (btnMap.type)
 189                {
 190                    case BUTTON_TYPE.MOUSE:
 17849191                        if (CommonScriptableObjects.allUIHidden.Get())
 192                            break;
 17849193                        if (Input.GetMouseButtonDown(btnMap.buttonNum))
 0194                            RaiseEvent(btnMap.buttonId, EVENT.BUTTON_DOWN, btnMap.useRaycast,
 195                                btnMap.enablePointerEvent);
 17849196                        else if (Input.GetMouseButtonUp(btnMap.buttonNum))
 0197                            RaiseEvent(btnMap.buttonId, EVENT.BUTTON_UP, btnMap.useRaycast, btnMap.enablePointerEvent);
 0198                        break;
 199                    case BUTTON_TYPE.KEYBOARD:
 285584200                        if (CommonScriptableObjects.allUIHidden.Get())
 201                            break;
 285584202                        if (Input.GetKeyDown((KeyCode) btnMap.buttonNum))
 0203                            RaiseEvent(btnMap.buttonId, EVENT.BUTTON_DOWN, btnMap.useRaycast,
 204                                btnMap.enablePointerEvent);
 285584205                        else if (Input.GetKeyUp((KeyCode) btnMap.buttonNum))
 0206                            RaiseEvent(btnMap.buttonId, EVENT.BUTTON_UP, btnMap.useRaycast, btnMap.enablePointerEvent);
 207                        break;
 208                }
 209            }
 17849210        }
 211
 212        public bool IsPressed(WebInterface.ACTION_BUTTON button)
 213        {
 214            switch (button)
 215            {
 216                case WebInterface.ACTION_BUTTON.POINTER:
 0217                    return Input.GetMouseButton(0);
 218                case WebInterface.ACTION_BUTTON.PRIMARY:
 1219                    return Input.GetKey(InputSettings.PrimaryButtonKeyCode);
 220                case WebInterface.ACTION_BUTTON.SECONDARY:
 0221                    return Input.GetKey(InputSettings.SecondaryButtonKeyCode);
 222                default: // ANY
 16213223                    return Input.GetMouseButton(0) ||
 224                           Input.GetKey(InputSettings.PrimaryButtonKeyCode) ||
 225                           Input.GetKey(InputSettings.SecondaryButtonKeyCode);
 226            }
 227        }
 228
 229        public void Dispose()
 230        {
 85231            Environment.i.platform.updateEventHandler.RemoveListener(IUpdateEventHandler.EventType.Update, Update);
 85232        }
 233    }
 234}