using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
/// Kelas GridNode merepresentasikan sebuah node/sel di dalam grid untuk algoritma pathfinding.
/// Kelas ini mewarisi dari PathFinding.Node dan mengimplementasikan fungsionalitas spesifik
/// untuk pathfinding berbasis grid.
///
public class GridNode : PathFinding.Node
{
///
/// Menentukan apakah node ini dapat dilalui oleh karakter.
/// True jika node dapat dilalui, false jika node adalah penghalang.
///
public bool IsWalkable { get; set; }
///
/// Referensi ke GridMap yang mengelola seluruh grid.
/// Digunakan untuk mendapatkan tetangga dan operasi lain yang berhubungan dengan grid.
///
public GridMap gridMap; // Change to internal or public
///
/// Constructor untuk membuat GridNode baru.
///
/// Koordinat Vector2Int yang merepresentasikan posisi node di dalam grid
/// Referensi ke GridMap yang mengelola grid ini
public GridNode(Vector2Int value, GridMap gridMap)
: base(value)
{
IsWalkable = true; // Secara default node dapat dilalui
this.gridMap = gridMap; // Simpan referensi ke GridMap
}
///
/// Mengimplementasikan metode abstrak dari kelas dasar untuk mendapatkan daftar node tetangga.
/// Metode ini akan memanggil GridMap.GetNeighbours() untuk mendapatkan semua node tetangga yang dapat dilalui.
///
/// Daftar node tetangga yang dapat dicapai dari node ini
public override
List> GetNeighbours()
{
// Return an empty list for now.
// Later we will call gridMap's GetNeighbours
// function.
//return new List>();
return gridMap.GetNeighbours(this);
}
}