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; }
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; } }
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)); }