miepzerino
2025-04-05 ad8af928065a506d0d28f98d51222d7afa1f47e2
Assets/Scripts/Managers/GameManager.cs
@@ -25,6 +25,9 @@
    [NonSerialized]
    public List<Vector3Int> destroyedTiles = new List<Vector3Int>();
    public GameObject pickups;
    public Tilemap fogTilemap;
    public FogOfWar fogOfWar;
    public GameObject backGroundPrefab;
    private void Awake()
    {
@@ -47,11 +50,31 @@
        StartCoroutine(generateTileMap.GenerateTiles(LoadTileMapsFinished, destroyedTiles));
    }
    private void InitializeBackgroundTiles()
    {
        GameObject tilesParent = new GameObject("BackgroundTiles");
        GameObject player = GameObject.FindGameObjectWithTag("Player");
        Vector3 backgroundPos = player.transform.position;
        // Adjust the new position based on whether y is positive or negative
        float colliderHeight = backGroundPrefab.GetComponent<BoxCollider2D>().size.y;
        if (backgroundPos.y >= 0)
        {
            backgroundPos.y -= Mathf.Abs(backgroundPos.y) % colliderHeight;
        }
        else
        {
            backgroundPos.y += Mathf.Abs(backgroundPos.y) % colliderHeight;
        }
        Instantiate(backGroundPrefab, (backgroundPos), Quaternion.identity, tilesParent.transform);
    }
    private void LoadMapState()
    {
        SaveDataMap mapState = SaveSystem.LoadMapState();
        if (mapState != null)
        {
            //fogOfWar.LoadFromSaveData(mapState.fogOfWarData);
            generateTileMap.SetSettingsFromSeed(mapState.seed);
            if (mapState.destroyedTiles != null && mapState.destroyedTiles.Count > 0)
            {
@@ -68,6 +91,8 @@
    {
        Debug.Log("done async map loading");
        levelChanger.GetComponent<Animator>().SetBool("SceneLoading", false);
        //Initialize background tiles after the tilemap is loaded
        //InitializeBackgroundTiles();
        GameLoaded();
    }
    public void GameLoaded()
@@ -141,7 +166,10 @@
                cellCoord.x = cellCoord.x + 1;
                break;
            case DrillDirection.Down:
                cellCoord.y = cellCoord.y - 1;
                // Use player's center position for downward drilling
                Vector3 playerCenter = contact.rigidbody.transform.position;
                cellCoord = grid.WorldToCell(playerCenter);
                cellCoord.y = grid.WorldToCell(contact.point).y - 1; // Keep the vertical position from contact point
                break;
        }
@@ -165,10 +193,9 @@
                    if (playerInventory != null)
                    {
                        Item item = dropable.dropable;
                        playerInventory.AddItem(item, dropable.dropAmount);
                        Debug.Log("CellWorldPosition: " + cellWorldPosition);
                        Debug.Log("TileGameObjectPosition: " + tileGameObject.transform.position);
                        CharacterLootObtained(tileGameObject.transform.position, item, dropable.dropAmount);
                        int dropAmount = dropable.GetRandomDropAmount();
                        playerInventory.AddItem(item, dropAmount);
                        CharacterLootObtained(tileGameObject.transform.position, item, dropAmount);
                    }
                }
                tilemap.SetTile(cellCoord, null);