extends TileMapLayer


# 记录玩家是否进入
var player_entered: bool = false

func _on_area_2d_body_entered(_body: Node2D) -> void:
	player_entered = true
	notify_runtime_tile_data_update()

func _on_area_2d_body_exited(_body: Node2D) -> void:
	player_entered = false
	notify_runtime_tile_data_update()

# 是否更新瓦片信息
func _use_tile_data_runtime_update(_coords: Vector2i) -> bool:
	# 因为玩家离开后会慢慢恢复不透明，所以所有的瓦片都需要更新
	return true

# 隐藏层的透明度
var layer_alpha = 1.0

# 更新瓦片数据
func _tile_data_runtime_update(_coords: Vector2i, tile_data: TileData) -> void:
	if player_entered:
		tile_data.set_collision_polygons_count(0, 0)

# 根据玩家进入状态修改透明度
func _process(delta: float) -> void:
	if player_entered:
		if layer_alpha > 0.3:
			layer_alpha = move_toward(layer_alpha, 0.3, delta)
			set_modulate(Color(1, 1, 1, layer_alpha))
	else:
		if layer_alpha < 1.0:
			layer_alpha = move_toward(layer_alpha, 1.0, delta)
			set_modulate(Color(1, 1, 1, layer_alpha))
