public void ChangeArea(Area.Identifier id, int doorID)
    {
        Time.timeScale = 0;

        StartCoroutine(FadeOut(() => {
            var areaName = GetAreaIdentifierName(id);
            SceneManager.LoadScene(areaName);

            Game.Async.WaitForAreaToLoad(areaName, () => {
                StartCoroutine(FadeIn());
                Time.timeScale = 1;

                if (OnChangeArea != null)
                {
                    OnChangeArea(doorID);
                }
            });
        }));
    }
    // ********************************

    private string GetAreaIdentifierName(Area.Identifier id)
    {
        switch (id)
        {
        case Area.Identifier.Farm:
            return("Farm");

        case Area.Identifier.Dungeon:
            return("Dungeon");

        case Area.Identifier.Town:
            return("Town");

        case Area.Identifier.CraftingArea:
            return("CraftingArea");

        case Area.Identifier.SmallHome:
            return("SmallHome");

        case Area.Identifier.GunShop:
            return("Gun Shop");

        case Area.Identifier.GardeningShop:
            return("Gardening Shop");

        case Area.Identifier.GeneralStore:
            return("General Store");

        case Area.Identifier.Home:
            return("Home");

        case Area.Identifier.Housing:
            return("Housing");

        default:
            return("Farm");
        }
    }