Stupid length exceeded I cba to write anything
This commit is contained in:
parent
49e344f109
commit
1d04d27969
10 changed files with 235 additions and 58 deletions
8
components/MushroomGlowComponent.tscn
Normal file
8
components/MushroomGlowComponent.tscn
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://c87qvtq8ho3bb"]
|
||||
|
||||
[ext_resource type="Script" path="res://components/scripts/mushroom_glow_component.gd" id="1_rmpcb"]
|
||||
|
||||
[node name="MushroomGlowComponent" type="Node2D"]
|
||||
script = ExtResource("1_rmpcb")
|
||||
|
||||
[node name="MushroomGlowContainer" type="Node2D" parent="."]
|
||||
8
components/WaterEffectComponent.tscn
Normal file
8
components/WaterEffectComponent.tscn
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://mawos5ss1cod"]
|
||||
|
||||
[ext_resource type="Script" path="res://components/scripts/water_effect_component.gd" id="1_t16iq"]
|
||||
|
||||
[node name="WaterEffectComponent" type="Node2D"]
|
||||
script = ExtResource("1_t16iq")
|
||||
|
||||
[node name="WaterEffectContainer" type="Node2D" parent="."]
|
||||
55
components/scripts/mushroom_glow_component.gd
Normal file
55
components/scripts/mushroom_glow_component.gd
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
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)
|
||||
|
||||
64
components/scripts/water_effect_component.gd
Normal file
64
components/scripts/water_effect_component.gd
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
extends Node2D
|
||||
class_name WaterEffectComponent
|
||||
|
||||
|
||||
var water_particles : PackedScene = preload("res://entities/water_particles.tscn")
|
||||
var water_fog : PackedScene = preload("res://entities/water_fog.tscn")
|
||||
|
||||
@export var tile_map : CustomTileMap = null
|
||||
@onready var water_effect_container : Node2D = $WaterEffectContainer
|
||||
|
||||
var effect_tiles : Array = []
|
||||
|
||||
var tile_size : Vector2i
|
||||
var map_pixel_size : Vector2i
|
||||
var tilemap_size : Vector2i
|
||||
var water_layer : int = -1
|
||||
|
||||
func _ready() -> void:
|
||||
if !tile_map:
|
||||
Log.err("WaterEffectComponent: TileMap not set")
|
||||
|
||||
Log.pr("WaterEffectComponent ready")
|
||||
|
||||
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
|
||||
|
||||
water_layer = tile_map.get_layer_id_by_name('Water')
|
||||
Log.pr(water_layer)
|
||||
add_water_effects()
|
||||
|
||||
## Look for crystals in the scene and add the glow to the approprirate angle and colour
|
||||
func add_water_effects() -> 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 effect_tiles:
|
||||
continue
|
||||
else:
|
||||
var tile_data : TileData = tile_map.get_cell_tile_data(water_layer, coords)
|
||||
if tile_data:
|
||||
if tile_data.get_custom_data('glowcolour'):
|
||||
var is_it_water : String = tile_data.get_custom_data('glowcolour')
|
||||
if is_it_water == 'water':
|
||||
|
||||
## 10% chance to add fog
|
||||
if randf() < 0.1:
|
||||
var fog : WaterFog = water_fog.instantiate()
|
||||
fog.set_position(coords * tile_map.get_tileset().tile_size + tile_map.get_tileset().tile_size / 2)
|
||||
water_effect_container.add_child.call_deferred(fog)
|
||||
effect_tiles.append(coords)
|
||||
|
||||
|
||||
## 20% chance to add water particles
|
||||
if randf() < 0.2:
|
||||
var water : WaterParticles = water_particles.instantiate()
|
||||
water.set_position(coords * tile_map.get_tileset().tile_size + tile_map.get_tileset().tile_size / 2)
|
||||
water_effect_container.add_child.call_deferred(water)
|
||||
effect_tiles.append(coords)
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue