示例#1
0
    protected virtual Vector3 Drag()
    {
        if (FindObjectOfType <Player>().holdingBuilding)
        {
            if (Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero))
            {
                m_hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero).collider.gameObject;

                if (m_hit.gameObject.tag == "Snap")
                {
                    if (m_originX != m_hit.GetComponent <Cell>().MyColumn || m_originY != m_hit.GetComponent <Cell>().MyRow)
                    {
                        m_originY = m_hit.GetComponent <Cell>().MyRow;
                        m_originX = m_hit.GetComponent <Cell>().MyColumn;
                    }
                    if (SecurePos(m_originX, m_originY, m_buildingSpace))
                    {
                        PlacementFeedback(gameObject.GetComponent <SpriteRenderer>(), Color.green);

                        if (Input.GetButtonDown("Fire1") && FindObjectOfType <Player>().MyResource - MyPrice >= 0)
                        {
                            BlockSpace(m_originX, m_originY, m_buildingSpace);
                            m_state = DefenceState.Placed;
                            Debug.Log("state transition here");
                            StateTransition();
                            FindObjectOfType <Player>().MyResource -= MyPrice;
                            PlacementFeedback(gameObject.GetComponent <SpriteRenderer>(), Color.white);
                            gameObject.GetComponent <AudioSource>().Play(); //audio feedback
                            m_pos    = m_hit.transform.position;
                            m_pos.z  = 0;
                            m_pos.x += m_adjustPosX;
                            m_pos.y += m_adjustPosY;
                            gameObject.GetComponent <Collider2D>().enabled = true;
                            return(m_pos);
                        }
                        else if (FindObjectOfType <Player>().MyResource - MyPrice < 0)
                        {
                            FindObjectOfType <Player>().holdingBuilding = false;
                            Destroy(gameObject);
                        }
                    }
                    else
                    {
                        PlacementFeedback(gameObject.GetComponent <SpriteRenderer>(), Color.red);
                        if (Input.GetButtonDown("Fire1"))
                        {
                            FindObjectOfType <Player>().holdingBuilding = false;
                            Destroy(gameObject);
                        }
                    }
                    m_pos    = m_hit.transform.position;
                    m_pos.z  = 0;
                    m_pos.x += m_adjustPosX;
                    m_pos.y += m_adjustPosY;
                }
            }
        }
        return(m_pos);
    }
示例#2
0
    void DefenceStateToPlace()
    {
        if (Input.GetButtonDown("Fire1") && snappable)
        {
            m_state            = DefenceState.Placed;
            transform.position = m_snapHere;

            m_player.GetComponent <Player>().m_resource--;
        }
    }
示例#3
0
 void Start()
 {
     m_state    = DefenceState.ToPlace;
     m_fireRate = 1f / m_roundsPerSecond;
 }
示例#4
0
    private void RpcSetPhase(byte data)
    {
        Phase.EndStateCall();
        var gameState = (GameState.Type)data;
        switch (gameState)
        {
            case GameState.Type.Player1Reset:
                Phase = new ResetState(true); break;
            case GameState.Type.Player1Draw:
                Phase = new DrawState(true); break;
            case GameState.Type.Player1Main:
                Phase = new MainState(true); break;
            case GameState.Type.Player1Atk:
                Phase = new AttackState(true); break;
            case GameState.Type.Player1Def:
                Phase = new DefenceState(true); break;
            case GameState.Type.Player1AtkCot:
                Phase = new AttackCounterState(true); break;
            case GameState.Type.Player1DefCot:
                Phase = new DefenceCounterState(true); break;
            case GameState.Type.Player1SecMain:
                Phase = new SecondMainState(true); break;
            case GameState.Type.Player2Reset:
                Phase = new ResetState(false); break;
            case GameState.Type.Player2Draw:
                Phase = new DrawState(false); break;
            case GameState.Type.Player2Main:
                Phase = new MainState(false); break;
            case GameState.Type.Player2Atk:
                Phase = new AttackState(false); break;
            case GameState.Type.Player2Def:
                Phase = new DefenceState(false); break;
            case GameState.Type.Player2AtkCot:
                Phase = new AttackCounterState(false); break;
            case GameState.Type.Player2DefCot:
                Phase = new DefenceCounterState(false); break;
            case GameState.Type.Player2SecMain:
                Phase = new SecondMainState(false); break;
        }

        GuiController.NextPhaseButton.interactable = Phase.NextPhaseClickable();
        Phase.StateCall();
    }