ADD: strikes.

main
bog 2023-09-30 20:21:50 +02:00
parent 93003abb2a
commit 52436feb3d
7 changed files with 82 additions and 8 deletions

View File

@ -5,7 +5,7 @@ extends Area2D
func _ready(): func _ready():
pass pass
func _process(delta): func _process(_delta):
pass pass
func _on_body_entered(body): func _on_body_entered(body):

File diff suppressed because one or more lines are too long

View File

@ -7,7 +7,7 @@ func _ready():
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta): func _process(_delta):
pass pass

View File

@ -11,7 +11,7 @@ radius = 34.0147
[node name="Molotov" type="CharacterBody2D" groups=["bombs"]] [node name="Molotov" type="CharacterBody2D" groups=["bombs"]]
collision_layer = 2 collision_layer = 2
collision_mask = 2 collision_mask = 0
script = ExtResource("1_uepii") script = ExtResource("1_uepii")
[node name="Sprite2D" type="Sprite2D" parent="."] [node name="Sprite2D" type="Sprite2D" parent="."]

41
src/Sandbox/Strikes.gd Normal file
View File

@ -0,0 +1,41 @@
extends Node2D
class Line:
var m_time: float = 0.0
var m_source: Vector2 = Vector2(0.0, 0.0)
var m_position: Vector2 = Vector2(0.0, 0.0)
var m_color : Color = Color.RED
var m_timer : float = 0.0
func _init(t, src, pos, col):
m_time = t
m_source = src
m_position = pos
m_color = col
var m_lines = []
# Called when the node enters the scene tree for the first time.
func _ready():
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
for line in m_lines:
line.m_timer += delta
var t = min(1.0, line.m_timer / line.m_time)
line.m_color = Color(1, 0, 0, 1.0 - t)
m_lines = m_lines.filter(func (x): return x.m_timer < x.m_time)
queue_redraw()
func add_line(pos: Vector2, duration: float):
var src = Vector2(randf_range(0, 800), 0)
m_lines.push_back(Line.new(duration, src, pos, Color.RED))
func _draw():
for line in m_lines:
draw_line(line.m_source, line.m_position, line.m_color, 3)

View File

@ -6,6 +6,10 @@ var process_state = null
var m_death_timer = 0.0 var m_death_timer = 0.0
var m_death_time = 2.0 var m_death_time = 2.0
var m_strike_time = 1.0
var m_strike_timer = 0.0
var m_strikes = []
func _ready(): func _ready():
for bear in get_tree().get_nodes_in_group('bears'): for bear in get_tree().get_nodes_in_group('bears'):
bear.m_target = $Player bear.m_target = $Player
@ -22,6 +26,21 @@ func process(delta):
if is_outside(actor) and actor.is_normal(): if is_outside(actor) and actor.is_normal():
actor.to_falling() actor.to_falling()
if m_strike_timer >= m_strike_time:
var all = $TileMap.get_used_cells(0)
all.shuffle()
var ground = null
for t in all:
var data = $TileMap.get_cell_tile_data(0, t)
if data.get_custom_data('type') == 'ground':
ground = t
break
self.add_broken_ground(ground, 1, 0.8)
$Strikes.add_line(to_global($TileMap.map_to_local(ground)), 0.15)
m_strike_timer = 0.0
m_strike_time = randf() * 5.0
m_strike_timer += delta
if m_broken_timer >= m_broken_time: if m_broken_timer >= m_broken_time:
var k = 0 var k = 0
var N = 2 var N = 2

View File

@ -1,8 +1,9 @@
[gd_scene load_steps=4 format=3 uid="uid://ccjenj1vqgosm"] [gd_scene load_steps=5 format=3 uid="uid://ccjenj1vqgosm"]
[ext_resource type="Script" path="res://Sandbox/sandbox.gd" id="1_e3dom"] [ext_resource type="Script" path="res://Sandbox/sandbox.gd" id="1_e3dom"]
[ext_resource type="TileSet" uid="uid://c7xunhoxuo3ha" path="res://Sandbox/tile_set.tres" id="1_veo4i"] [ext_resource type="TileSet" uid="uid://c7xunhoxuo3ha" path="res://Sandbox/tile_set.tres" id="1_veo4i"]
[ext_resource type="PackedScene" uid="uid://dhjnilcj5mvou" path="res://Player/player.tscn" id="2_yd1wa"] [ext_resource type="PackedScene" uid="uid://dhjnilcj5mvou" path="res://Player/player.tscn" id="2_yd1wa"]
[ext_resource type="Script" path="res://Sandbox/Strikes.gd" id="4_fpagp"]
[node name="Sandbox" type="Node2D"] [node name="Sandbox" type="Node2D"]
script = ExtResource("1_e3dom") script = ExtResource("1_e3dom")
@ -17,6 +18,9 @@ position = Vector2(654, 409)
[node name="Bears" type="Node" parent="."] [node name="Bears" type="Node" parent="."]
[node name="Strikes" type="Node2D" parent="."]
script = ExtResource("4_fpagp")
[node name="CanvasLayer" type="CanvasLayer" parent="."] [node name="CanvasLayer" type="CanvasLayer" parent="."]
[node name="ColorRect" type="ColorRect" parent="CanvasLayer"] [node name="ColorRect" type="ColorRect" parent="CanvasLayer"]