miepzerino
2023-12-23 eab47305629d96d19626e10b649ba4247d1f55f5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
using Assets.Scripts.Enums;
using TMPro;
using UnityEngine;
using UnityEngine.Tilemaps;
 
public class GameManager : SettingsManager
{
    public GameObject damageTextPrefab;
    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);
 
    }
 
    private void OnDisable()
    {
        // remove listen events
        CharacterEvents.characterDamaged -= (CharacterTookDamange);
        CharacterEvents.characterHealed -= (CharacterHealed);
        CharacterEvents.characterDrill -= (CharacterDrill);
    }
 
    public void CharacterTookDamange(GameObject character, int damageReceived)
    {
        // Create damage text at character
        Vector3 spawnPosition = Camera.main.WorldToScreenPoint(character.transform.position);
 
        TMP_Text tmpText = Instantiate(damageTextPrefab, spawnPosition, Quaternion.identity, pauseMenuUI.transform).GetComponent<TMP_Text>();
 
        tmpText.text = damageReceived.ToString();
 
    }
    public void CharacterHealed(GameObject character, int healthRestored)
    {
        // Create heal text at character
        Vector3 spawnPosition = Camera.main.WorldToScreenPoint(character.transform.position);
 
        TMP_Text tmpText = Instantiate(healthTextPrefab, spawnPosition, Quaternion.identity, pauseMenuUI.transform).GetComponent<TMP_Text>();
 
        tmpText.text = healthRestored.ToString();
 
    }
    public void CharacterDrill(ContactPoint2D contact, DrillDirection drillDirection)
    {
        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
 
}