Пример #1
0
    // Update is called once per frame
    void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out mouseHit))
        {
            GridElement g = mouseHit.transform.GetComponent <GridElement>();

            if (!g)
            {
                if (curHoveredGridElement)
                {
                    curHoveredGridElement.GetComponent <MeshRenderer>().material.color = colOnNormal;
                    return;
                }
            }


            if (Input.GetMouseButtonDown(0))
            {
                curSelectedGridElement = g;
            }

            if (g != curHoveredGridElement)
            {
                if (!g.occupied)
                {
                    mouseHit.transform.GetComponent <MeshRenderer>().material.color = colOnHover;
                }
                else
                {
                    mouseHit.transform.GetComponent <MeshRenderer>().material.color = colOnOccupied;
                }
            }

            if (curHoveredGridElement && curHoveredGridElement != g)
            {
                curHoveredGridElement.GetComponent <MeshRenderer>().material.color = colOnNormal;
            }

            curHoveredGridElement = g;
        }
        else
        {
            if (curHoveredGridElement)
            {
                curHoveredGridElement.GetComponent <MeshRenderer>().material.color = colOnNormal;
            }
        }

        MoveBuilding();
        PlaceBuilding();
    }
    private void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out mouseHit))
        {
            GridElement gE = mouseHit.transform.gameObject.GetComponent <GridElement>();

            if (gE == null)
            {
                if (currentHoveredGridElement)
                {
                    currentHoveredGridElement.GetComponent <MeshRenderer>().material.color = colorOnNormal;
                    return;
                }
            }

            if (Input.GetMouseButtonDown(0))
            {
                currentSelectedGridElement = gE;
            }

            if (gE != currentHoveredGridElement)
            {
                if (!gE.occupied)
                {
                    mouseHit.transform.gameObject.GetComponent <MeshRenderer>().material.color = colorOnHover;
                }
                else
                {
                    mouseHit.transform.gameObject.GetComponent <MeshRenderer>().material.color = colorOnOccupied;
                }
            }

            if (currentHoveredGridElement && currentHoveredGridElement != gE)
            {
                currentHoveredGridElement.GetComponent <MeshRenderer>().material.color = colorOnNormal;
            }

            currentHoveredGridElement = gE;
        }
        else
        {
            currentHoveredGridElement.GetComponent <MeshRenderer>().material.color = colorOnNormal;
        }

        MoveBuilding();
        PlaceBuilding();
        clicked = clicker.ManoClicked;
    }
Пример #3
0
 void ComputeRaycast(GridElement gridElem)
 {
     if (m_iSelectedToolId < 18)
     {
         if (Network.isClient || Network.isServer)
         {
             GetComponent <NetworkView>().RPC("SetGridElementMaterial", RPCMode.All, gridElem.m_iX, gridElem.m_iY, m_iSelectedToolId, true, 0);
         }
         else
         {
             SetGridElementMaterial(gridElem.m_iX, gridElem.m_iY, m_iSelectedToolId, true, 0);
         }
     }
     if (m_iSelectedToolId == 18)
     {
         if (gridElem.m_iLayer == 5)
         {
             m_SelectedSpawn = gridElem.gameObject;
             Spawn spawn = gridElem.GetComponent <Spawn>();
             m_SpanwOptionPopup.GetComponent <SpawnOption>().SetSelectedPlayer(spawn.m_iPlayerID);
         }
         else
         {
             if (Network.isClient || Network.isServer)
             {
                 GetComponent <NetworkView>().RPC("CreateSpawn", RPCMode.Others, gridElem.m_iX, gridElem.m_iY, false);
             }
             CreateSpawn(gridElem.m_iX, gridElem.m_iY, true);
             m_SpanwOptionPopup.GetComponent <SpawnOption>().SetSelectedPlayer(1);
         }
         m_SelectedRect.transform.position = new Vector3(gridElem.m_iX * 10, gridElem.m_iY * 10, -0.06f);
         m_SelectedRect.SetActive(true);
         m_SpanwOptionPopup.SetActive(true);
     }
 }
Пример #4
0
    // ================================================================================================== //
    private void onBeforeWindowLoaded()
    {
        if (!WindowManager.Instance.IsCurrentWindow(Consts.WindowNames.OPEN_BOOK))
        {
            return;
        }

        // go to adventure button
        _goToAdventureButton.gameObject.SetActive(Party.Instance.IsInVillage);

        // back button
        _backButton.Type = Party.Instance.IsInVillage ? BackButton.BackButtonType.BACK_TO_PREVIOUS : BackButton.BackButtonType.BACK_TO_HOME;

        // update pages grid
        List <int> pages = Library.Instance.GetPagesOfBook(DungeonName);

        _pagesGrid.Rebuild(pages.Count);
        for (int i = 0; i < _pagesGrid.Elements.Count; ++i)
        {
            GridElement pageGridElement = _pagesGrid.Elements[i];
            pageGridElement.GetComponent <BookPage>().PageNumber = pages[i];
        }

        // show first page
        DisplayPage(pages[0]);
    }
Пример #5
0
    public Character instanciateCharacter(int _iX, int _iY)
    {
        GameObject  newCharater = (GameObject)Instantiate(m_CharacterPrefab, new Vector3(_iX * 10, _iY * 10, -0.04f), Quaternion.identity);
        GridElement gridElem    = newCharater.GetComponent <GridElement>();

        gridElem.Init(_iX, _iY, 4);
        return(gridElem.GetComponent <Character>());
    }
Пример #6
0
    private void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out mouseHitPoint))
        {
            GridElement g = mouseHitPoint.transform.gameObject.GetComponent <GridElement>();

            if (g == null)
            {
                if (currentHoveringGridElement)
                {
                    currentHoveringGridElement.GetComponent <MeshRenderer>().material.color = colorOnNormal;
                    currentHoveringGridElement = null;
                    return;
                }
            }

            if (Input.GetMouseButton(0))
            {
                currentSelectedGridElement = g;
                PlaceBuilding();
            }

            if (g != currentHoveringGridElement)
            {
                if (currentHoveringGridElement)
                {
                    currentHoveringGridElement.GetComponent <MeshRenderer>().material.color = colorOnNormal;
                }

                currentHoveringGridElement = g;
                if (g.occupied == false)
                {
                    currentHoveringGridElement.GetComponent <MeshRenderer>().material.color = colorOnHover;
                }
                else
                {
                    currentHoveringGridElement.GetComponent <MeshRenderer>().material.color = colorOnOccupied;
                }
            }
        }

        MoveBuilding();
    }
Пример #7
0
    void HoverFunction()
    {
        RaycastHit hit;
        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out hit))
        {
            GridElement elementPlacement = hit.transform.GetComponent <GridElement>();

            if (!elementPlacement)
            {
                if (_currentHoveredElement)
                {
                    _currentHoveredElement.GetComponent <MeshRenderer>().material.color = _defaultColor;
                    return;
                }
            }

            if (Input.GetMouseButton(0))
            {
                CurrentSelectedElement = elementPlacement;
            }

            if (elementPlacement != _currentHoveredElement)
            {
                hit.transform.GetComponent <MeshRenderer>().material.color =
                    !elementPlacement.IsOccupied ? _hoveredColor : _occupiedColor;
            }

            if (_currentHoveredElement && _currentHoveredElement != elementPlacement)
            {
                _currentHoveredElement.GetComponent <MeshRenderer>().material.color = _defaultColor;
            }

            _currentHoveredElement = elementPlacement;
        }
        else
        {
            if (_currentHoveredElement)
            {
                _currentHoveredElement.GetComponent <MeshRenderer>().material.color = _defaultColor;
            }
        }
    }
Пример #8
0
        public static void GenerateWorld(int rows, int columns, GridElement gridElement, Transform parent)
        {
            float elementWidth = gridElement.GetComponent <Renderer>().bounds.size.x;
            float elementDepth = gridElement.GetComponent <Renderer>().bounds.size.z;

            for (int x = 0; x < rows; x++)
            {
                for (int y = 0; y < columns; y++)
                {
                    Transform gridEl = GameObject.Instantiate(
                        gridElement.gameObject,
                        new Vector3(x * elementWidth, 0, y * elementDepth),
                        Quaternion.identity
                        ).transform;

                    gridEl.SetParent(parent);
                    gridEl.GetComponent <GridElement>().coordinates = new Vector2(x, y);
                }
            }
        }
Пример #9
0
    void PopulateNeighbors(GridElement gridElement)
    {
        bool doorGenerated;

        if (Random.value < .5f)
        {
            doorGenerated = GenerateDoor(0, 1, "Top", gridElement);
            if (doorGenerated)
            {
                gridElement.GetComponent <Room> ().northDoor = true;
            }
        }

        if (Random.value < .5f)
        {
            doorGenerated = GenerateDoor(0, -1, "Bottom", gridElement);
            if (doorGenerated)
            {
                gridElement.GetComponent <Room> ().southDoor = true;
            }
        }

        if (Random.value < .5f)
        {
            doorGenerated = GenerateDoor(1, 0, "Right", gridElement);
            if (doorGenerated)
            {
                gridElement.GetComponent <Room> ().eastDoor = true;
            }
        }

        if (Random.value < .5f)
        {
            doorGenerated = GenerateDoor(-1, 0, "Left", gridElement);
            if (doorGenerated)
            {
                gridElement.GetComponent <Room> ().westDoor = true;
            }
        }
    }
Пример #10
0
 private void DisplayPullerInfluenceWest(int distance, bool shouldHighlight)
 {
     if (!westWall && westNeighbor && distance > 0)
     {
         GridElement west = westNeighbor.GetComponent <GridElement>();
         if (shouldHighlight)
         {
             west.ChangeColor(GridMenu.pullColor);
             if (west.piece && (west.piece.GetComponent <GamePiece>() is Unit || west.piece.GetComponent <GamePiece>() is Trap))
             {
                 west.isHighlighted = shouldHighlight;
             }
             else
             {
                 west.GetComponent <Image>().color += new Color(0.2F, 0.2F, 0.2F);
             }
         }
         else
         {
             west.ChangeColor(Menu.defaultColor);
         }
         west.DisplayPullerInfluenceWest(distance - 1, shouldHighlight);
     }
 }
Пример #11
0
 private void DisplayPullerInfluenceSouth(int distance, bool shouldHighlight)
 {
     if (!southWall && southNeighbor && distance > 0)
     {
         GridElement south = southNeighbor.GetComponent <GridElement>();
         if (shouldHighlight)
         {
             south.ChangeColor(GridMenu.pullColor);
             if (south.piece && (south.piece.GetComponent <GamePiece>() is Unit || south.piece.GetComponent <GamePiece>() is Trap))
             {
                 south.isHighlighted = shouldHighlight;
             }
             else
             {
                 south.GetComponent <Image>().color += new Color(0.2F, 0.2F, 0.2F);
             }
         }
         else
         {
             south.ChangeColor(Menu.defaultColor);
         }
         south.DisplayPullerInfluenceSouth(distance - 1, shouldHighlight);
     }
 }
Пример #12
0
 private bool ColorMatches(GridElement neighbor)
 {
     return(colorIndex == neighbor.GetComponent<GridElement>().colorIndex);
 }
Пример #13
0
    // Update is called once per frame
    void Update()
    {
        if (!EventSystem.current.IsPointerOverGameObject())
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitInfos;
            if (Physics.Raycast(ray, out hitInfos))
            {
                GridElement gridElem = hitInfos.collider.gameObject.GetComponent <GridElement>();
                m_OverRect.transform.position = new Vector3(gridElem.m_iX * 10, gridElem.m_iY * 10, -0.06f);
                if (m_SelectedChar != null)
                {
                    if (gridElem.m_iLayer == 10 && !m_bActionSelected)
                    {
                        m_SelectedChar.GetComponent <Character>().SetOverDestination(gridElem.m_iX, gridElem.m_iY);
                    }
                }
                if (!m_bCharacterMoving && m_iCurrentTurnPlayerId == m_iCurrentPlayerId)
                {
                    if (Input.GetMouseButtonDown(0))
                    {
                        m_MouseDownElement = gridElem;
                        m_vLastMousePos    = Input.mousePosition;
                    }
                    if (Input.GetMouseButtonUp(0) && m_fCumulativeMouseMove < 10)
                    {
                        if (m_MouseDownElement == gridElem)
                        {
                            if (m_bActionSelected)
                            {
                                if (gridElem.m_iLayer == 10)
                                {
                                    if (m_SelectedChar != null)
                                    {
                                        m_SelectedChar.GetComponent <Character>().Act(gridElem.m_iX, gridElem.m_iY);

                                        /*m_SelectedRect.SetActive(false);
                                         * m_bActionSelected = false;*/
                                    }
                                }
                            }
                            else
                            {
                                if (gridElem.m_iLayer == 10)
                                {
                                    if (m_SelectedChar != null)
                                    {
                                        m_bCharacterMoving = m_SelectedChar.GetComponent <Character>().SetDestination(gridElem.m_iX, gridElem.m_iY);
                                        m_SelectedRect.SetActive(false);
                                    }
                                }
                                else if (gridElem.m_iLayer == 4)
                                {
                                    if (m_SelectedChar != gridElem)
                                    {
                                        if (m_SelectedChar != null)
                                        {
                                            m_SelectedChar.GetComponent <Character>().HideDestinations();
                                            m_SelectedChar.GetComponent <Character>().Cancel();
                                            m_ActionPanel.SetActive(false);
                                        }
                                        m_SelectedChar = gridElem;
                                        m_SelectedRect.transform.position = new Vector3(gridElem.m_iX * 10, gridElem.m_iY * 10, -0.06f);
                                        m_SelectedRect.SetActive(true);
                                        if (m_iCurrentPlayerId == gridElem.GetComponent <Character>().m_iPlayerID)
                                        {
                                            if (!gridElem.GetComponent <Character>().IsTurnFinish())
                                            {
                                                m_SelectedChar.GetComponent <Character>().ShowDestinations();
                                                m_SelectedRect.GetComponent <Renderer>().material.color = Color.white;
                                            }
                                            else
                                            {
                                                m_SelectedChar = null;
                                                m_SelectedRect.SetActive(false);
                                                m_ActionPanel.SetActive(false);
                                            }
                                        }
                                        else
                                        {
                                            if (m_iCurrentPlayerTeam == gridElem.GetComponent <Character>().m_iTeam)
                                            {
                                                m_SelectedRect.GetComponent <Renderer>().material.color = Color.yellow;
                                            }
                                            else
                                            {
                                                m_SelectedRect.GetComponent <Renderer>().material.color = Color.red;
                                            }
                                        }
                                    }
                                    else
                                    {
                                        if (m_SelectedChar != null)
                                        {
                                            if (m_SelectedChar.GetComponent <Character>().CanMove())
                                            {
                                                m_SelectedChar.GetComponent <Character>().EndMove();
                                                m_ActionPanel.SetActive(true);
                                                m_SelectedChar.GetComponent <Character>().HideDestinations();
                                                SetActions();
                                            }
                                            else
                                            {
                                                m_SelectedChar.GetComponent <Character>().Cancel();
                                                m_SelectedRect.transform.position = new Vector3(m_SelectedChar.m_iX * 10, m_SelectedChar.m_iY * 10, -0.06f);
                                                m_ActionPanel.SetActive(false);
                                                m_SelectedChar.GetComponent <Character>().ShowDestinations();
                                            }
                                        }
                                        //m_SelectedChar = null;
                                        //m_SelectedRect.SetActive(false);
                                    }
                                }
                                else
                                {
                                    if (m_SelectedChar != null)
                                    {
                                        m_SelectedChar.GetComponent <Character>().HideDestinations();
                                        m_SelectedChar.GetComponent <Character>().Cancel();
                                        m_ActionPanel.SetActive(false);
                                    }
                                    m_SelectedChar = null;
                                    m_SelectedRect.SetActive(false);
                                }
                            }
                        }
                    }
                }
            }
        }
        if (m_bCharacterMoving)
        {
            if (m_SelectedChar != null)
            {
                m_bCharacterMoving = m_SelectedChar.GetComponent <Character>().IsMoving();
                if (m_bCharacterMoving == false)
                {
                    m_SelectedRect.transform.position = new Vector3(m_SelectedChar.m_iX * 10, m_SelectedChar.m_iY * 10, -0.06f);
                    m_SelectedRect.SetActive(true);
                    m_ActionPanel.SetActive(true);
                    SetActions();
                }
            }
            else
            {
                m_bCharacterMoving = false;
            }
        }
        if (Input.GetMouseButton(0))
        {
            m_fCumulativeMouseMove += (m_vLastMousePos - Input.mousePosition).magnitude;
        }
        if (Input.GetMouseButtonUp(0))
        {
            m_fCumulativeMouseMove = 0;
            m_MouseDownElement     = null;
        }
        if (Input.GetMouseButtonUp(1))
        {
            if (m_SelectedChar != null)
            {
                if (!m_SelectedChar.GetComponent <Character>().IsActing())
                {
                    if (m_SelectedChar.GetComponent <Character>().m_iPlayerID == m_iCurrentPlayerId)
                    {
                        m_SelectedChar.GetComponent <Character>().m_SelectableElem.SetActive(true);
                    }
                    if (m_bActionSelected)
                    {
                        m_ActionPanel.SetActive(true);
                        m_bActionSelected = false;
                        m_SelectedChar.GetComponent <Character>().HideDestinations();
                    }
                    else
                    {
                        m_SelectedChar.GetComponent <Character>().HideDestinations();
                        m_SelectedChar.GetComponent <Character>().Cancel();
                        m_SelectedRect.SetActive(false);
                        m_ActionPanel.SetActive(false);
                        m_SelectedChar = null;
                    }
                }
            }
        }
        if (m_SelectedChar != null)
        {
            if (m_SelectedChar.GetComponent <Character>().m_iPlayerID == m_iCurrentTurnPlayerId)
            {
                if (m_SelectedChar.GetComponent <Character>().IsTurnFinish())
                {
                    m_SelectedChar = null;
                    m_SelectedRect.SetActive(false);
                    m_ActionPanel.SetActive(false);
                    m_bActionSelected = false;
                }
            }
        }
        if (m_bAutoEndTurn && m_iCurrentPlayerId == m_iCurrentTurnPlayerId)
        {
            bool bEndTurn = true;
            foreach (Character character in m_vCharacterList)
            {
                if (character.m_iPlayerID == m_iCurrentPlayerId)
                {
                    if (!character.IsTurnFinish())
                    {
                        bEndTurn = false;
                        break;
                    }
                }
            }
            if (bEndTurn)
            {
                if (Network.isServer || Network.isClient)
                {
                    GetComponent <NetworkView>().RPC("NextTurn", RPCMode.All);
                }
                else
                {
                    NextTurn();
                }
            }
        }
    }