55 lines
2 KiB
GDScript
55 lines
2 KiB
GDScript
extends Node2D
|
|
class_name MushroomGlowComponent
|
|
|
|
var mushroom_glow : PackedScene = preload("res://entities/mushroom_glow.tscn")
|
|
|
|
@export var tile_map : CustomTileMap = null
|
|
@onready var mushroom_glow_container : Node2D = $MushroomGlowContainer
|
|
var glowing_mushrooms : Array = []
|
|
|
|
var tile_size : Vector2i
|
|
var map_pixel_size : Vector2i
|
|
var tilemap_size : Vector2i
|
|
var mushroom_layer : int = -1
|
|
|
|
func _ready() -> void:
|
|
if !tile_map:
|
|
Log.err("MushroomGlowComponent: TileMap not set")
|
|
|
|
Log.pr("MushroomGlowComponent ready")
|
|
|
|
tile_map.tilemap_updated.connect(add_mushroom_glow)
|
|
|
|
tile_size = tile_map.get_tileset().tile_size
|
|
map_pixel_size = tilemap_size * tile_size
|
|
tilemap_size = tile_map.get_used_rect().end - tile_map.get_used_rect().position
|
|
|
|
mushroom_layer = tile_map.get_layer_id_by_name('Mushrooms')
|
|
Log.pr(mushroom_layer)
|
|
add_mushroom_glow()
|
|
|
|
## Look for crystals in the scene and add the glow to the approprirate angle and colour
|
|
func add_mushroom_glow() -> void:
|
|
for i in tilemap_size.x:
|
|
for j in tilemap_size.y:
|
|
var coords : Vector2i = Vector2i(i, j)
|
|
|
|
## If this coord is glowing already then we dont need to do anything
|
|
if coords in glowing_mushrooms:
|
|
continue
|
|
else:
|
|
var tile_data : TileData = tile_map.get_cell_tile_data(mushroom_layer, coords)
|
|
if tile_data:
|
|
# Get the tile data from the base layer
|
|
var below_tile_data : TileData = tile_map.get_cell_tile_data(tile_map.get_layer_id_by_name('Floor'), coords)
|
|
if below_tile_data and below_tile_data.get_custom_data('navtype') == 'wall':
|
|
pass
|
|
else:
|
|
if tile_data.get_custom_data('glowcolour'):
|
|
var glow_colour : String = tile_data.get_custom_data('glowcolour')
|
|
var glow : MushroomGlow = mushroom_glow.instantiate()
|
|
glow.set_position(coords * tile_map.get_tileset().tile_size + tile_map.get_tileset().tile_size / 2)
|
|
glow.colour_name = glow_colour
|
|
mushroom_glow_container.add_child.call_deferred(glow)
|
|
glowing_mushrooms.append(coords)
|
|
|