Example #1
0
        public override void CursorUpdate(World world, Player player, Vector2 cursorPosition)
        {
            WorldCamera camera = world.worldCamera;

            if (!camera.turning)
            {
                RayTrace rayTrace = camera.GetRayAtScreenPosition(cursorPosition - camera.worldContainer.GetPosition());

                if (rayTrace.hit)
                {
                    bool inRange = (rayTrace.hitPosition - player.worldPosition).sqrMagnitude < 25f;

                    if (Input.GetKey(KeyCode.Mouse0) && inRange)
                    {
                        player.UseItem(Vector3Int.FloorToInt(rayTrace.hitTilePosition + rayTrace.hitDirection), Input.GetKeyDown(KeyCode.Mouse0));
                    }

                    SetConstructionGuide(camera, player, rayTrace.hitTilePosition + Vector3.one * 0.5f, rayTrace.hitDirection, inRange);
                    _previewSprite.isVisible = true;
                }
            }
        }
Example #2
0
        public override void CursorUpdate(World world, Player player, Vector2 cursorPosition)
        {
            WorldCamera camera = world.worldCamera;

            if (!camera.turning)
            {
                RayTrace rayTrace = camera.GetRayAtScreenPosition(cursorPosition - camera.worldContainer.GetPosition());

                Tile tile = rayTrace.GetTileIn(world);

                if (tile != _lastTile)
                {
                    _progress = 0f;
                    _lastTile = tile;
                }

                if (rayTrace.hit)
                {
                    bool inRange = (rayTrace.hitPosition - player.worldPosition).sqrMagnitude < 25f;

                    if (Input.GetKey(KeyCode.Mouse0) && inRange)
                    {
                        bool clicked = _progress >= 1f;

                        if (clicked)
                        {
                            _progress = 0f;
                        }

                        player.UseItem(rayTrace.hitTilePosition, clicked); // Input.GetKeyDown(KeyCode.Mouse0));
                    }

                    SetConstructionGuide(camera, player, rayTrace.hitTilePosition, inRange, _progress);
                    _previewSprite.isVisible = true;
                }
            }
        }
Example #3
0
        public override void CursorUpdate(World world, Player player, Vector2 cursorPosition)
        {
            WorldCamera    camera  = world.worldCamera;
            List <ITarget> targets = world.targets;

            ITarget nearestTarget = null;

            Vector2 screenPositionA, screenPositionB;

            screenPositionA = new Vector2(1920f, 1080f);

            for (int index = 0; index < targets.Count; index++)
            {
                screenPositionB = camera.GetScreenPosition(targets[index].worldPosition) + camera.worldContainer.GetPosition();

                float sqrMagnitude = (screenPositionB - cursorPosition).sqrMagnitude;

                //if ((screenPositionB.x > Menu.screenWidth * 0.5f || screenPositionB.x < Menu.screenWidth * -0.5f) ||
                //    (screenPositionB.y > Menu.screenHeight * 0.5f || screenPositionB.y < Menu.screenHeight * -0.5f))
                if (sqrMagnitude > 4096f)
                {
                    continue;
                }

                else if ((screenPositionA - cursorPosition).sqrMagnitude > sqrMagnitude)
                {
                    nearestTarget   = targets[index];
                    screenPositionA = screenPositionB;
                }
            }

            if (_currentTarget != nearestTarget)
            {
                _lastScreenPosition = position;
                _lastSize           = size;

                _currentTarget = nearestTarget;
                _lastTime      = menu.time;

                _targetInspector.InspectTarget(_currentTarget);
            }

            if (_currentTarget != null)
            {
                _targetScreenPosition = screenPositionA + nearestTarget.boundRect.position;
                _targetSize           = nearestTarget.boundRect.size;

                if (Input.GetKey(KeyCode.Mouse0))
                {
                    player.UseItem(_currentTarget.worldPosition, Input.GetKeyDown(KeyCode.Mouse0));
                }
            }

            else
            {
                _targetScreenPosition = cursorPosition;
                _targetSize           = new Vector2(12f, 12f);

                if (Input.GetKey(KeyCode.Mouse0))
                {
                    RayTrace rayTrace = camera.GetRayAtScreenPosition(cursorPosition - camera.worldContainer.GetPosition());

                    Vector3 targetPosition = new Vector3(rayTrace.hitPosition.x, player.worldPosition.y, rayTrace.hitPosition.z);

                    if (rayTrace.hit)
                    {
                        player.UseItem(targetPosition, Input.GetKeyDown(KeyCode.Mouse0));
                    }
                }
            }
        }