| | |
| | | using Assets.Scripts.Enums; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using TMPro; |
| | | using UnityEngine; |
| | | using UnityEngine.InputSystem; |
| | | using UnityEngine.SceneManagement; |
| | | using UnityEngine.Tilemaps; |
| | | |
| | | public class GameManager : SettingsManager |
| | | { |
| | |
| | | public GameObject healthTextPrefab; |
| | | public Canvas playerUI; |
| | | public Canvas pauseMenuUI; |
| | | public GameObject levelChanger; |
| | | public Tilemap tilemap; |
| | | GenerateTileMap generateTileMap; |
| | | |
| | | private void Awake() |
| | | { |
| | | SoundManager.instance.ChangeMusic(SoundName.MusicHappy); |
| | | LoadTileMaps(SaveSystem.isGameLoaded); |
| | | } |
| | | |
| | | |
| | | private void LoadTileMaps(bool loadFromSave) |
| | | { |
| | | pauseMenuUI.GetComponent<PauseMenu>().Pause(); |
| | | levelChanger.GetComponent<Animator>().SetBool("SceneLoading", true); |
| | | generateTileMap = tilemap.GetComponent<GenerateTileMap>(); |
| | | Debug.Log("waiting for async"); |
| | | StartCoroutine(generateTileMap.GenerateTiles(LoadTileMapsFinished)); |
| | | } |
| | | |
| | | public void LoadTileMapsFinished() |
| | | { |
| | | Debug.Log("done async"); |
| | | levelChanger.GetComponent<Animator>().SetBool("SceneLoading", false); |
| | | GameLoaded(); |
| | | } |
| | | public void GameLoaded() |
| | | { |
| | | pauseMenuUI.GetComponent<PauseMenu>().Resume(); |
| | | pauseMenuUI.GetComponent<Animator>().SetTrigger("GameLoaded"); |
| | | } |
| | | |
| | | #region characterEvents |
| | | private void OnEnable() |
| | | { |
| | | // add listen events |
| | | CharacterEvents.characterDamaged += (CharacterTookDamange); |
| | | CharacterEvents.characterHealed += (CharacterHealed); |
| | | CharacterEvents.characterDrill += (CharacterDrill); |
| | | |
| | | } |
| | | |
| | |
| | | // remove listen events |
| | | CharacterEvents.characterDamaged -= (CharacterTookDamange); |
| | | CharacterEvents.characterHealed -= (CharacterHealed); |
| | | CharacterEvents.characterDrill -= (CharacterDrill); |
| | | } |
| | | |
| | | public void CharacterTookDamange(GameObject character, int damageReceived) |
| | |
| | | tmpText.text = healthRestored.ToString(); |
| | | |
| | | } |
| | | public void GameLoaded() |
| | | public void CharacterDrill(ContactPoint2D contact, DrillDirection drillDirection) |
| | | { |
| | | pauseMenuUI.GetComponent<Animator>().SetTrigger("GameLoaded"); |
| | | GridLayout grid = tilemap.transform.GetComponentInParent<GridLayout>(); |
| | | Vector3Int cellCoord = grid.WorldToCell(contact.point); |
| | | switch (drillDirection) |
| | | { |
| | | case DrillDirection.Left: |
| | | cellCoord.x = cellCoord.x - 1; |
| | | break; |
| | | case DrillDirection.Right: |
| | | cellCoord.x = cellCoord.x + 1; |
| | | break; |
| | | case DrillDirection.Down: |
| | | cellCoord.y = cellCoord.y - 1; |
| | | break; |
| | | } |
| | | |
| | | //Debug.Log("cellCoord: " + grid.CellToWorld(cellCoord)); |
| | | //Debug.Log(tilemap.HasTile(cellCoord)); |
| | | if (tilemap.HasTile(cellCoord)) |
| | | { |
| | | tilemap.SetTile(cellCoord, null); |
| | | Vector3 moveToPosition = grid.CellToWorld(cellCoord); |
| | | moveToPosition.x += 0.5f; |
| | | moveToPosition.y += 0.5f; |
| | | CharacterEvents.characterDrillingToPosition.Invoke(moveToPosition); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | } |