// Start is called before the first frame update
    void Start()
    {
        // intro fade animation
        Fade.gameObject.SetActive(true);
        Fade.Play("Black");

        // advance mode
        AdvanceMode.interactable = GameData.instance.isAdvanceModeUnlocked();

        // start menu coroutine
        StartCoroutine(Init());
        instance = this;

        // mute npcs
        GameData.instance.muteFX = true;

        // set menus active
        MainMenu.SetActive(true);
        PlayMenu.SetActive(false);
        SettingsMenu.SetActive(false);
        Credits.SetActive(false);

        // load data from GameData
        width  = GameData.instance.menuGridWidth;
        height = GameData.instance.menuGridHeight;
        Vector3 origin = GameData.instance.menuGridOrigin;

        worldCamera = Camera.main;
        pathfinding = new Pathfinding(width, height, origin);
        grid        = pathfinding.GetGrid();
        GameData.instance.LoadMenuWalkableTiles();

        if (GameData.instance.devTools)
        {
            grid.DrawGrid();
            pathfindingVisual.SetGrid(grid);
        }
    }
 void Awake()
 {
     instance = this;
 }