コード例 #1
0
ファイル: GameManager.cs プロジェクト: NachoDevs/OneGameAWeek
    void Awake()
    {
        m_pfm     = GetComponent <PathfindingManager>();
        m_cam     = Camera.main;
        m_party   = new List <GameObject>();
        m_enemies = new List <GameObject>();

        m_previousTile = m_pfm.GetTile(0, 0);

        currGameState = GameState.PlayerSelectTile;
    }
コード例 #2
0
ファイル: GameManager.cs プロジェクト: NachoDevs/OneGameAWeek
    void HandleGameState()
    {
        switch (currGameState)
        {
        default:        // PlayerSelectTile is the default state
        case GameState.PlayerSelectTile:
            m_hit = Physics2D.Raycast(m_cam.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);

            try
            {
                m_currentTile = m_pfm.GetTile((int)m_hit.transform.position.x, (int)m_hit.transform.position.y);

                if (m_hit.collider.gameObject.GetComponentInParent <Player>() != null)
                {
                    m_selectedCharacter = m_hit.collider.gameObject.GetComponentInParent <Character>();
                    if (Input.GetMouseButtonUp(0))
                    {
                        if (!m_selectedCharacter.hasMoved)
                        {
                            CharacterSelectedBehaviour();
                            //break;
                        }
                        else
                        {
                            StartCoroutine(PrintText(stateText, "This unit has already moved!"));
                        }
                    }
                }

                if (m_currentTile != null)
                {
                    TileSelectedBehaviour();
                    //break;
                }
            }catch (Exception e) { PrintException(e); }

            break;

        case GameState.PlayerMove:

            try
            {
                if (Input.GetMouseButtonUp(0))
                {
                    m_hit = Physics2D.Raycast(m_cam.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);

                    m_previousTile = m_currentTile;

                    m_currentTile = m_pfm.GetTile((int)m_hit.transform.position.x, (int)m_hit.transform.position.y);

                    if (m_currentTile.selected)
                    {
                        m_selectedCharacter.hasMoved = true;

                        if (m_hit.collider.gameObject.GetComponentInParent <Enemy>() != null)
                        {
                            if (m_hit.collider.gameObject.GetComponentInParent <Character>().isDead)
                            {
                                m_selectedCharacter.MoveTo(m_currentTile);
                                currGameState = GameState.PlayerSelectTile;
                            }
                            else
                            {
                                currGameState = GameState.PlayerAttack;
                            }
                        }
                        else
                        {
                            m_selectedCharacter.MoveTo(m_currentTile);
                            currGameState = GameState.PlayerSelectTile;
                        }
                    }

                    if (m_currentTile != m_previousTile)
                    {
                        foreach (WorldTile wt in m_previousTile.myNeighbours)
                        {
                            if (wt.selected)
                            {
                                wt.UpdateTIle(TileState.Default);
                            }
                        }
                    }
                }
            }catch (Exception e) { PrintException(e); }

            break;

        case GameState.PlayerAttack:
            LoadCombatScene(GetInvolvedCharacters(m_selectedCharacter.transform.position));
            break;

        case GameState.AIturn:
            HandleAI();
            EndTurn();
            break;

        case GameState.NewTurn:
            ResetTurn();
            break;
        }
    }
コード例 #3
0
 public void MoveTo(WorldTile t_destination)
 {
     m_path = Pathfinding.FindPath(m_pfm.GetTile((int)transform.position.x, (int)transform.position.y)
                                   , t_destination);
     StartCoroutine(MoveCoroutine(m_path));
 }