Example #1
0
    public int GetAxisSignDuration(IInputGenerator inputGenerator, string name)
    {
        if (buffer[inputGenerator.Id][name].Count == 0)
        {
            return(0);
        }

        List <InputData> kbuffer = buffer[inputGenerator.Id][name];

        int   signDuration    = 1;
        float originalAxisVal = kbuffer[0].AxisValue;

        if (originalAxisVal == 0.0)
        {
            //return zero if axis not active at the moment
            return(0);
        }

        for (int i = 1; i < kbuffer.Count; i++)
        {
            /* if the result of the multiplication is less than equal to zero, then the axis value at
             * this index has a different sign (or is zero) either way stop the iteration*/
            if (kbuffer[i].AxisValue * originalAxisVal <= 0.0f)
            {
                return(signDuration);
            }

            signDuration++;
        }

        return(signDuration);
    }
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            Log.Debug("Run: Click");

            var elementId = req.Params.ElementId;
            var result    = new Result();

            try
            {
                var geometry = objectList.Get(elementId)?.Geometry;
#if WATCH
                Log.Debug($"geometry X:{geometry.X}, Y:{geometry.Y}, Width:{geometry.Width}, Height:{geometry.Height}");
#endif
                result.Value = inputGen.Click(geometry.CenterX, geometry.CenterY);
            }
            catch (TimeoutException te)
            {
                Log.Debug(te.ToString());
                result.Status = 44;
                result.Value  = false;
            }
            catch (Exception e)
            {
                Log.Debug(e.ToString());
                result.Value = false;
            }

            return(result);
        }
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            Log.Debug("Run: Drag");

            var elementId = req.Params.ElementId;
            var xSpeed    = req.Params.XSpeed;
            var ySpeed    = req.Params.YSpeed;
            var result    = new Result();

            try
            {
                var geometry = objectList.Get(elementId)?.Geometry;
                var x        = geometry.CenterX;
                var y        = geometry.CenterY;

                result.Value = inputGen.Drag(x, y, x + xSpeed, y + ySpeed);
            }
            catch (TimeoutException te)
            {
                Log.Debug(te.ToString());
                result.Status = 44;
                result.Value  = false;
            }
            catch (Exception e)
            {
                Log.Debug(e.ToString());
                result.Value = false;
            }

            return(result);
        }
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            var xSpeed = req.Params.XSpeed;
            var ySpeed = req.Params.YSpeed;
            var x      = Utils.GetScreeenWidth() / 2;
            var y      = 970;//Utils.GetScreenHeight() / 2;

            var result = new Result();

            try
            {
                result.Value = inputGen.Drag(x, y, x + xSpeed, y + ySpeed);
            }
            catch (TimeoutException te)
            {
                Log.Debug(te.ToString());
                result.Status = 44;
                result.Value  = false;
            }
            catch (Exception e)
            {
                Log.Debug(e.ToString());
                result.Value = false;
            }

            return(result);
        }
Example #5
0
    public bool CompareAxisMultipleBuffered(IInputGenerator inputGenerator, string name, int targetCount,
                                            Func <float, bool> predicate, bool consumeIfDown, int maxBuffer)
    {
        int count = 0;

        List <int>       toConsume = new List <int>();
        List <InputData> inputData = buffer[inputGenerator.Id][name];

        for (int i = 0; i < maxBuffer && i < inputData.Count; i++)
        {
            InputData input = inputData[i];
            if (predicate(inputData[i].AxisValue) && inputData[i].Down)
            {
                count++;
                if (consumeIfDown)
                {
                    toConsume.Add(i);
                }

                if (count >= targetCount)
                {
                    foreach (int j in toConsume)
                    {
                        inputData[j].Down = false;
                    }
                    return(true);
                }
            }
        }

        return(false);
    }
Example #6
0
 void InitializeBuffer(IInputGenerator inputGenerator)
 {
     foreach (InputAction inputAction in ReInput.mapping.Actions)
     {
         string name = inputAction.name;
         buffer[inputGenerator.Id][name] = new List <InputData>();
     }
 }
Example #7
0
    //USE THESE AFTER AWAKE IN START OR AFTER
    public void AddInputGenerator(IInputGenerator inputGenerator)
    {
        buffer.Add(inputGenerator.Id, new Dictionary <string, List <InputData> >());

        inputGenerators.Add(inputGenerator);
        InitializeBuffer(inputGenerator);

        if (inputGenerators.Count == 1)
        {
            playerOneInputGenerator = (PlayerInputGenerator)inputGenerators[0];
        }
    }
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            Log.Debug("Run: GetDisplayed");

            var elementId = req.Params.ElementId;

            var result  = new Result();
            var element = objectList.Get(elementId);

            result.Value = (element != null) ? true : false;

            return(result);
        }
Example #9
0
        public MainWindow(
            IMouseHookSaveToFile mouseHookSaveToFile,
            IInputGenerator inputGenerator,
            IEyes eyes,
            IBoardLogger boardLogger)
        {
            this.inputGenerator      = inputGenerator;
            this.eyes                = eyes;
            this.mouseHookSaveToFile = mouseHookSaveToFile;

            InitializeComponent();

            boardLogger.SetOutput(textbox);
        }
Example #10
0
    public bool CompareAxisBuffered(IInputGenerator inputGenerator, string axis, Func <float, bool> predicate, int maxBuffer)
    {
        List <InputData> inputData = buffer[inputGenerator.Id][axis];

        for (int i = 0; i < maxBuffer && i < inputData.Count; i++)
        {
            if (predicate(inputData[i].AxisValue))
            {
                return(true);
            }
        }

        return(false);
    }
        public MainWindow(
            IMouseHookSaveToFile mouseHookSaveToFile,
            IInputGenerator inputGenerator,
            IEyes eyes,
            IBoardLogger boardLogger)
        {
            this.inputGenerator = inputGenerator;
            this.eyes = eyes;
            this.mouseHookSaveToFile = mouseHookSaveToFile;

            InitializeComponent();

            boardLogger.SetOutput(textbox);
        }
Example #12
0
    public void InputAxis(IInputGenerator inputGenerator, string axis, float value)
    {
        List <InputData> kbuffer = buffer[inputGenerator.Id][axis];
        bool             held    = value != 0.0f &&
                                   (kbuffer.Count > 0 && Mathf.Abs(kbuffer[0].AxisValue) > 0);
        //if axis direction changed this frame
        bool down = value != 0.0f &&
                    (kbuffer.Count == 0 || ((kbuffer[0].AxisValue == 0.0f && value != 0.0f) || (kbuffer[0].AxisValue * value < 0.0f)));

        //not implemented yet;
        bool      up = false;
        InputData id = new InputData(value, held, down, up);

        buffer[inputGenerator.Id][axis] = UpdateList(buffer[inputGenerator.Id][axis], id);
    }
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            Log.Debug("Run: GetLocation");
            var elementId = req.Params.ElementId;
            var result    = new Result();

            var geometry = objectList.Get(elementId)?.Geometry;

            if (geometry != null)
            {
                result.Value = new Result.Location(geometry.X, geometry.Y);
            }

            return(result);
        }
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            Log.Debug("Run: GetText");

            var elementId = req.Params.ElementId;

            var result = new Result();
            var value  = objectList.Get(elementId)?.Text;

            if (value != null)
            {
                result.Value = value;
            }

            return(result);
        }
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            Log.Debug("Run: SetAttribute");

            var elementId    = req.Params.ElementId;
            var propertyName = req.Params.Attribute;
            var newValue     = req.Params.Value;
            var result       = new Result();

            var ret = objectList.Get(elementId)?.SetPropertyValue(propertyName, newValue);

            if (ret == true)
            {
                result.Value = ret;
            }
            return(result);
        }
Example #16
0
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            Log.Debug("Run: SetText");

            var elementId = req.Params.ElementId;
            var newValue  = req.Params.Text;
            var replace   = req.Params.Replace;
            var result    = new Result();

            if (string.IsNullOrEmpty(elementId))
            {
                var focused = objectList.GetFocusedElementIds();
                foreach (var id in focused)
                {
                    if (objectList.Get(id)?.HasProperty("Text") == true)
                    {
                        elementId = id;
                    }
                }
                Log.Debug("Find last focused element to set text : " + elementId);
            }

            if (string.IsNullOrEmpty(elementId))
            {
                Log.Debug("There is no element to set Text");
                return(result);
            }

            var oldValue = objectList.Get(elementId)?.GetPropertyValue("Text");

            if (!replace)
            {
                newValue = oldValue + newValue;
            }

            var ret = objectList.Get(elementId)?.SetPropertyValue("Text", newValue);

            if (ret == true)
            {
                result.Value = ret;
            }

            return(result);
        }
Example #17
0
    public bool GetButtonDownBuffered(IInputGenerator inputGenerator, string name, bool consumeIfDown, int maxBuffer)
    {
        List <InputData> inputData = buffer[inputGenerator.Id][name];

        for (int i = 0; i < maxBuffer && i < inputData.Count; i++)
        {
            InputData input = inputData[i];
            if (input.Down)
            {
                if (consumeIfDown)
                {
                    input.Down = false;
                }
                return(true);
            }
        }

        return(false);
    }
Example #18
0
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            Log.Debug("Run: GetSize");

            var elementId = req.Params.ElementId;

            var result   = new Result();
            var geometry = objectList.Get(elementId)?.Geometry;

            if (geometry != null)
            {
                result.Value = new Result.Size(geometry.Width, geometry.Height);
            }
            else
            {
                result.Value = new Result.Size();
            }

            return(result);
        }
Example #19
0
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            Log.Debug("Run: TouchMove");
            var elementId = req.Params.ElementId;
            var xDown     = req.Params.XDown;
            var yDown     = req.Params.YDown;
            var xUp       = req.Params.XUp;
            var yUp       = req.Params.YUp;
            var steps     = req.Params.Steps;
            var result    = new Result();

            try
            {
                if (!String.IsNullOrEmpty(elementId))
                {
                    var geometry = objectList.Get(elementId).Geometry;
                    result.Value = inputGen.TouchMove(geometry.CenterX, geometry.CenterY, xUp, yUp, steps);
                }
                else if ((xDown > 0) && (yDown > 0) && (xUp > 0) && (yUp > 0))
                {
                    result.Value = inputGen.TouchMove(xDown, yDown, xUp, yUp, steps);
                }
                else
                {
                    Log.Debug("Invalid values");
                }
            }
            catch (TimeoutException te)
            {
                Log.Debug(te.ToString());
                result.Status = 44;
                result.Value  = false;
            }
            catch (Exception e)
            {
                Log.Debug(e.ToString());
                result.Value = false;
            }

            return(result);
        }
Example #20
0
    public bool GetButtonDownMultipleBuffered(IInputGenerator inputGenerator, string name, int targetCount, int maxBuffer)
    {
        int count = 0;

        List <InputData> inputData = buffer[inputGenerator.Id][name];

        for (int i = 0; i < maxBuffer && i < inputData.Count; i++)
        {
            InputData input = inputData[i];
            if (input.Down)
            {
                count++;
                if (count >= targetCount)
                {
                    return(true);
                }
            }
        }

        return(false);
    }
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            Log.Debug("Run: TouchDown");

            var elementId = req.Params.ElementId;
            int x         = req.Params.X;
            int y         = req.Params.Y;
            var result    = new Result();

            try
            {
                if (!String.IsNullOrEmpty(elementId))
                {
                    var geometry = objectList.Get(elementId)?.Geometry;
                    result.Value = inputGen.TouchDown(geometry.CenterX, geometry.CenterY);
                }
                else if ((x > 0) && (y > 0))
                {
                    result.Value = inputGen.TouchDown(x, y);
                }
                else
                {
                    Log.Debug("Invalid values");
                }
            }
            catch (TimeoutException te)
            {
                Log.Debug(te.ToString());
                result.Status = 44;
                result.Value  = false;
            }
            catch (Exception e)
            {
                Log.Debug(e.ToString());
                result.Value = false;
            }


            return(result);
        }
Example #22
0
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            var strategy  = req.Params.Strategy;
            var elementId = req.Params.ElementId;

            Log.Debug("Run: Find with " + strategy);

            var result = new Result();
            List <Result.Element> list = new List <Result.Element>();

            if (strategy == "automationId")
            {
                var obj = objectList.Get(elementId);
                if (obj != null)
                {
                    list.Add(new Result.Element(elementId));
                }
            }
            else if (strategy == "focused")
            {
                var ids = objectList.GetFocusedElementIds();
                foreach (var id in ids)
                {
                    list.Add(new Result.Element(id));
                }
            }
            else
            {
                var ids = objectList.GetIdsByName(elementId);
                foreach (var id in ids)
                {
                    list.Add(new Result.Element(id));
                }
            }

            result.Value = list;
            return(result);
        }
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            Log.Debug("Run: GetAttribute");

            var elementId    = req.Params.ElementId;
            var propertyName = req.Params.Attribute;

            var result = new Result();

            var value = objectList.Get(elementId)?.GetPropertyValue(propertyName);

            if (value != null)
            {
                result.Value = value.ToString();
                Log.Debug(elementId + " element have " + propertyName + " property.");
            }
            else
            {
                Log.Debug(elementId + " element does not have " + propertyName + " property.");
            }

            return(result);
        }
        public Result Run(Request req, IObjectList objectList, IInputGenerator inputGen)
        {
            var key    = req.Params.Key;
            var result = new Result();

            try
            {
                result.Value = inputGen.PressKey(key);
            }
            catch (TimeoutException te)
            {
                Log.Debug(te.ToString());
                result.Status = 44;
                result.Value  = false;
            }
            catch (Exception e)
            {
                Log.Debug(e.ToString());
                result.Value = false;
            }

            return(result);
        }
Example #25
0
 public bool GetButtonUp(IInputGenerator inputGenerator, string name, int frameDelta)
 {
     return(buffer[inputGenerator.Id][name].Count > 0 ? buffer[inputGenerator.Id][name][frameDelta].Up : false);
 }
Example #26
0
 public bool CompareAxisBuffered(IInputGenerator inputGenerator, string axis, Func <float, bool> predicate)
 {
     return(CompareAxisBuffered(inputGenerator, axis, predicate, bufferSize));
 }
Example #27
0
 public Hands(IInputGenerator inputGenerator, IScreenCapturer screenCapturer)
 {
     this.inputGenerator = inputGenerator;
     this.screenCapturer = screenCapturer;
 }
Example #28
0
 public float GetAxis(IInputGenerator inputGenerator, string name)
 {
     return(GetAxis(inputGenerator, name, 0));
 }
Example #29
0
 public Hands(IInputGenerator inputGenerator, IScreenCapturer screenCapturer)
 {
     this.inputGenerator = inputGenerator;
     this.screenCapturer = screenCapturer;
 }
Example #30
0
 public float GetAxis(IInputGenerator inputGenerator, string name, int frameDelta)
 {
     return(buffer[inputGenerator.Id][name].Count > 0 ? buffer[inputGenerator.Id][name][frameDelta].AxisValue : 0.0f);
 }
Example #31
0
 public float GetAxisNoSnap(IInputGenerator inputGenerator, string name)
 {
     return(GetAxisSignDuration(inputGenerator, name) < 2 ? 0.0f : GetAxis(inputGenerator, name));
 }
Example #32
0
 public virtual void Start()
 {
     inputGenerator = new PlayerInputGenerator(playerId);
     InputBuffer.Instance.AddInputGenerator(inputGenerator);
 }