Пример #1
0
    public void UpdateTilesModification()
    {
        bool modifyTile = false;
        int  tileX      = 0;
        int  tileY      = 0;

        if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer)
        {
            if (Input.touchCount == 1 && !InputAreas.IsInputArea(Input.GetTouch(0).position))
            {
                modifyTile = GetTileCoordinatesUnderTouch(out tileX, out tileY);
            }
        }
        else
        {
            if (Input.GetMouseButton(0) && !InputAreas.IsInputArea(Input.mousePosition))
            {
                modifyTile = GetTileCoordinatesUnderMouse(out tileX, out tileY);
            }
        }

        switch (editTool)
        {
        case AvatarInputEditTool.Add:
            if (modifyTile)
            {
                avatarView.ParentView.TilemapCircle.SetTile(tileX, tileY, 1);
            }
            break;

        case AvatarInputEditTool.Remove:
            if (modifyTile)
            {
                avatarView.ParentView.TilemapCircle.SetTile(tileX, tileY, 0);
            }
            break;

        case AvatarInputEditTool.MoveCamera:
            UniverseViewCamera.Instance.UpdateMove();
            break;
        }
    }
Пример #2
0
    public void UpdateClickOnPlanetToTravel(UniverseView universeView)
    {
        bool    clickTravel   = false;
        Vector2 clickPosition = Vector2.zero;

        if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer)
        {
            if (!travelInput)
            {
                if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Began && !InputAreas.IsInputArea(Input.GetTouch(0).position))
                {
                    travelInput = true;
                    travelInputStartPosition = Input.GetTouch(0).position;
                }
                else
                {
                    travelInput = false;
                }
            }
            else
            {
                if (Input.touchCount == 1)
                {
                    if (Input.GetTouch(0).phase == TouchPhase.Ended)
                    {
                        if ((travelInputStartPosition - Input.GetTouch(0).position).magnitude < 10)
                        {
                            clickTravel   = true;
                            clickPosition = Input.GetTouch(0).position;
                        }

                        travelInput = false;
                    }
                }
                else
                {
                    travelInput = false;
                }
            }
        }
        else
        {
            if (!travelInput)
            {
                if (Input.GetMouseButtonDown(0) && !InputAreas.IsInputArea(Input.mousePosition))
                {
                    travelInput = true;
                    travelInputStartPosition = Input.mousePosition;
                }
                else
                {
                    travelInput = false;
                }
            }
            else
            {
                if (Input.GetMouseButtonUp(0))
                {
                    if ((travelInputStartPosition - (Vector2)Input.mousePosition).magnitude < 10)
                    {
                        clickTravel   = true;
                        clickPosition = Input.mousePosition;
                    }

                    travelInput = false;
                }
                else if (!Input.GetMouseButton(0))
                {
                    travelInput = false;
                }
            }
        }

        if (clickTravel)
        {
            Vector2 worldPos          = Camera.main.ScreenToWorldPoint(clickPosition);
            Vector2 worldPosTolerance = Camera.main.ScreenToWorldPoint(clickPosition + Vector2.right * (Screen.dpi > 0 ? Screen.dpi : 72) / 2.54f); //1 cm tolerance

            int clickedThingIndex = universeView.Universe.FindClosestRenderedThing(worldPos, (worldPos - worldPosTolerance).magnitude);

            if (clickedThingIndex >= 0)
            {
                PlanetView targetPlanetView = universeView.GetPlanetView((ushort)clickedThingIndex);
                if (universeView.avatarView.UniverseObject.parent != targetPlanetView.TilemapCircle)
                {
                    GameLogic.Instace.TravelToPlanet(targetPlanetView);
                }
            }
        }
    }