From 661098529dfee06e8611ed92ecef2a651d8892a5 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 18 Feb 2026 00:32:14 +0000 Subject: [PATCH] Roughed in dynamic CRT enemy movement; tweaked parallax cloud movement and sprites. --- scenes/enemy_chicken.gd | 2 +- scenes/enemy_chicken.tscn | 1 - scenes/enemy_crt.gd | 56 ++++++++++++++++++++++++++++++--- scenes/enemy_crt.tscn | 19 +++++------ scenes/goose.gd | 2 +- scenes/goose.tscn | 2 ++ scenes/main.tscn | 1 - scenes/parallax_starfield.tscn | 20 +++++++++++- scenes/wave.gd | 18 ++++++----- sprites/cloud layers.png | Bin 1238 -> 1122 bytes sprites/coffee-buoy.png | Bin 0 -> 496 bytes sprites/coffee-buoy.png.import | 40 +++++++++++++++++++++++ 12 files changed, 134 insertions(+), 27 deletions(-) create mode 100644 sprites/coffee-buoy.png create mode 100644 sprites/coffee-buoy.png.import diff --git a/scenes/enemy_chicken.gd b/scenes/enemy_chicken.gd index 9d03b10..fa4593a 100644 --- a/scenes/enemy_chicken.gd +++ b/scenes/enemy_chicken.gd @@ -14,7 +14,7 @@ var enemy_shoot_aggression = randf_range(4, 20) func start(pos): - speed = 0 + speed = 0 position = Vector2(pos.x, -pos.y) start_pos = pos await get_tree().create_timer(randf_range(0.25, 0.55)).timeout diff --git a/scenes/enemy_chicken.tscn b/scenes/enemy_chicken.tscn index 77ff8c2..7b5fa8a 100644 --- a/scenes/enemy_chicken.tscn +++ b/scenes/enemy_chicken.tscn @@ -199,7 +199,6 @@ scale = Vector2(0.7, 0.7) script = ExtResource("1_s7c3p") [node name="Sprite2D" type="Sprite2D" parent="." unique_id=2115910138] -scale = Vector2(1.44, 1.44) texture = ExtResource("2_h1rgn") hframes = 3 region_enabled = true diff --git a/scenes/enemy_crt.gd b/scenes/enemy_crt.gd index 9d03b10..96ef23d 100644 --- a/scenes/enemy_crt.gd +++ b/scenes/enemy_crt.gd @@ -3,6 +3,7 @@ extends Area2D var bullet_scene = preload("res://scenes/enemy_bullet.tscn") var start_pos = Vector2.ZERO var speed = 0 +var direction = Vector2(0,1) var tween_speed: float = 1.4 var exploding = false @@ -11,11 +12,17 @@ var enemy_move_aggression = randf_range(5, 20) var enemy_shoot_aggression = randf_range(4, 20) @onready var screensize = get_viewport_rect().size +@onready var timer = $MoveTimer +func _ready(): + timer.start() + func start(pos): - speed = 0 - position = Vector2(pos.x, -pos.y) + speed = 2 + var pos_mod = randf_range(-32,32) #modify the start position randomly + position = Vector2(pos.x + pos_mod, -pos.y) #add the modifier + #position = Vector2(pos.x, -pos.y) start_pos = pos await get_tree().create_timer(randf_range(0.25, 0.55)).timeout var tween = create_tween().set_trans(Tween.TRANS_BACK) @@ -26,9 +33,21 @@ func start(pos): $ShootTimer.wait_time = enemy_shoot_aggression $ShootTimer.start() - -func _on_timer_timeout() -> void: +func _on_timer_timeout(): speed = randf_range(75, 100) + $DirectionTimer.start() + +func _on_direction_timer_timeout(): + direction = Vector2(randf_range(-1, 1), randf_range(0, 1)) + direction = direction.snapped(Vector2(0,1)) + match direction: + Vector2(0,1): + $EnemyCRT.set_frame(0) + Vector2(1,0): + $EnemyCRT.set_frame(1) + Vector2(-1,0): + $EnemyCRT.set_frame(2) + $DirectionTimer.start() func _on_shoot_timer_timeout(): var b = bullet_scene.instantiate() @@ -38,9 +57,36 @@ func _on_shoot_timer_timeout(): $ShootTimer.start() func _process(delta): - position.y += speed * delta + position += direction * speed * delta + + + + + + #direction = direction.snapped(Vector2(1, 0)) # Snap to horizontal + #direction = direction.snapped(Vector2(0, 1)) # Snap to vertical + + + if position.y > screensize.y + 32: start(start_pos) + + #if position.x > screensize.x + 32: + #start(start_pos) + # + #if position.x < screensize.x + 32: + #start(start_pos) + + #if Input.is_action_just_pressed("ui_right"): + #direction = Vector2(1, 0) # Move right + #elif Input.is_action_just_pressed("ui_left"): + #direction = Vector2(-1, 0) # Move left + #elif Input.is_action_just_pressed("ui_up"): + #direction = Vector2(0, -1) # Move up + #elif Input.is_action_just_pressed("ui_down"): + #direction = Vector2(0, 1) # Move down + + func explode(): diff --git a/scenes/enemy_crt.tscn b/scenes/enemy_crt.tscn index 25da021..85b9794 100644 --- a/scenes/enemy_crt.tscn +++ b/scenes/enemy_crt.tscn @@ -1,12 +1,12 @@ [gd_scene format=3 uid="uid://dm0pkef7wmwuq"] -[ext_resource type="Script" uid="uid://i0r17jo6838m" path="res://scenes/enemy_chicken.gd" id="1_0vjqj"] +[ext_resource type="Script" uid="uid://7ls7phfcupal" path="res://scenes/enemy_crt.gd" id="1_ugdur"] [ext_resource type="Texture2D" uid="uid://b5pswf7r8b7j4" path="res://sprites/crt.png" id="2_emiuq"] [ext_resource type="Texture2D" uid="uid://cy4jggxmnohbb" path="res://sprites/chicken.png" id="2_ugdur"] [ext_resource type="Texture2D" uid="uid://bm7fgqwqfqmf4" path="res://sprites/explosion_pallete-swap.png" id="3_emiuq"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_4gyqm"] -size = Vector2(45.71434, 40.000053) +size = Vector2(32.727318, 27.272764) [sub_resource type="Animation" id="Animation_h1rgn"] length = 0.001 @@ -32,7 +32,7 @@ tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [ExtResource("2_ugdur")] +"values": [ExtResource("2_emiuq")] } tracks/2/type = "value" tracks/2/imported = false @@ -56,7 +56,7 @@ tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [Rect2(0, 0, 84, 32)] +"values": [Rect2(0, 0, 96, 28)] } tracks/4/type = "value" tracks/4/imported = false @@ -196,18 +196,16 @@ _data = { } [node name="EnemyCRT" type="Area2D" unique_id=1433837580 groups=["enemies"]] -scale = Vector2(1.1, 1.1) -script = ExtResource("1_0vjqj") +script = ExtResource("1_ugdur") [node name="Sprite2D" type="Sprite2D" parent="." unique_id=2115910138] -scale = Vector2(1.44, 1.44) texture = ExtResource("2_emiuq") hframes = 3 region_enabled = true region_rect = Rect2(0, 0, 96, 28) [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1841693239] -position = Vector2(-1.8732879e-06, -1.9584381e-06) +position = Vector2(4.334883e-07, 4.334883e-07) scale = Vector2(0.99999857, 0.99999857) shape = SubResource("RectangleShape2D_4gyqm") @@ -218,8 +216,11 @@ one_shot = true one_shot = true [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=702523492] -active = false libraries/ = SubResource("AnimationLibrary_7ellt") +[node name="DirectionTimer" type="Timer" parent="." unique_id=2080229505] +wait_time = 5.0 + [connection signal="timeout" from="MoveTimer" to="." method="_on_timer_timeout"] [connection signal="timeout" from="ShootTimer" to="." method="_on_shoot_timer_timeout"] +[connection signal="timeout" from="DirectionTimer" to="." method="_on_direction_timer_timeout"] diff --git a/scenes/goose.gd b/scenes/goose.gd index 3d51ad5..59a1762 100644 --- a/scenes/goose.gd +++ b/scenes/goose.gd @@ -39,4 +39,4 @@ func _on_goose_talk(frame_index: int): tween.tween_property(self, "position:x", position.x + 50, .5).set_ease(tween.EASE_IN) await tween.finished goose_talking = false - self.hide() + self.hide() diff --git a/scenes/goose.tscn b/scenes/goose.tscn index 17ef3f2..fbfba26 100644 --- a/scenes/goose.tscn +++ b/scenes/goose.tscn @@ -11,9 +11,11 @@ size = Vector2(73, 100) script = ExtResource("1_wf0t2") [node name="DapperGoose" type="Sprite2D" parent="." unique_id=1690665905] +z_index = -4 texture = ExtResource("1_wo8sg") [node name="Bubble" type="Sprite2D" parent="DapperGoose" unique_id=2012258473] +z_index = -5 position = Vector2(-108, -21) texture = ExtResource("3_g7ad0") hframes = 4 diff --git a/scenes/main.tscn b/scenes/main.tscn index 85c03a1..e512cec 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -124,6 +124,5 @@ stream = ExtResource("10_choun") volume_db = -0.5 [node name="Wave" parent="." unique_id=2117861058 instance=ExtResource("11_ya4ey")] -wave_complete = null [connection signal="pressed" from="CanvasLayer/CenterContainer/Start" to="." method="_on_start_pressed"] diff --git a/scenes/parallax_starfield.tscn b/scenes/parallax_starfield.tscn index fda2ea7..98e1f0b 100644 --- a/scenes/parallax_starfield.tscn +++ b/scenes/parallax_starfield.tscn @@ -1,8 +1,9 @@ [gd_scene format=3 uid="uid://tlcdxoupi2lb"] [ext_resource type="Texture2D" uid="uid://b5ukhu38gqv6" path="res://sprites/cloud layers.png" id="1_b1x6b"] +[ext_resource type="Texture2D" uid="uid://cu1hmiru4slak" path="res://sprites/coffee-buoy.png" id="2_pcgsf"] -[node name="Parallax Starfield" type="Node2D" unique_id=1859128454] +[node name="Parallax Clouds" type="Node2D" unique_id=1859128454] z_index = -100 [node name="Foreground" type="Parallax2D" parent="." unique_id=1810383542] @@ -107,6 +108,23 @@ flip_h = true region_enabled = true region_rect = Rect2(0, 0, 64, 64) +[node name="Coffee Buoy" type="Parallax2D" parent="." unique_id=813362228] +self_modulate = Color(0.5931336, 0.59313357, 0.59313357, 1) +scroll_scale = Vector2(1, -2) +repeat_size = Vector2(0, 375) +autoscroll = Vector2(0, 1) +repeat_times = 3 + +[node name="Sprite2D" type="Sprite2D" parent="Coffee Buoy" unique_id=997370246] +position = Vector2(150, 205) +texture = ExtResource("2_pcgsf") + +[node name="Sprite2D2" type="Sprite2D" parent="Coffee Buoy" unique_id=603875955] +position = Vector2(85, 45) +scale = Vector2(0.75, 0.75) +texture = ExtResource("2_pcgsf") +flip_h = true + [node name="ColorRect" type="ColorRect" parent="." unique_id=23364495] z_index = -5 offset_right = 239.0 diff --git a/scenes/wave.gd b/scenes/wave.gd index 6161c14..42a41cf 100644 --- a/scenes/wave.gd +++ b/scenes/wave.gd @@ -19,7 +19,7 @@ func _ready(): func spawn_enemies(): - if wave_count == 0: #This is for CHICKENS + if wave_count == 1: #This is for CHICKENS print("Enemy Wave: ", wave_count) enemy = CHICKEN for x in range(COLS): @@ -32,18 +32,20 @@ func spawn_enemies(): await get_tree().process_frame print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size()) - if wave_count == 1: #This is for CRTs + if wave_count == 0: #This is for CRTs print("Enemy Wave: ", wave_count) enemy = CRT - for x in range(COLS): - for y in range(ROWS): + var cols_mod = COLS - 1 + var rows_mod = ROWS - 1 + for x in range(cols_mod): + for y in range(rows_mod): + var pos_mod = int (randf_range(-42,32)) var e = enemy.instantiate() - var pos = Vector2(x * (28 + 4) + 56, 28 * 2 + y * 38) + var pos = Vector2(x * (36 + 12) + 56, 28 * 2 + y * 38) add_child(e) - e.start(pos) - enemy_count = ROWS * COLS + e.start(pos + Vector2(pos_mod, y)) + enemy_count = rows_mod * cols_mod await get_tree().process_frame - print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size()) diff --git a/sprites/cloud layers.png b/sprites/cloud layers.png index 619542c62ad7f9b5602dbd52452ebd3007f121f5..71fbcb40d66669a072947cdf22e20d000cb8b1ab 100644 GIT binary patch delta 1028 zcmV+f1pE8e3E~KlY<~mbNkl%?UExQ2t_Gtw`$-2iKixM6%+&nGrc|hm`S>0 z#d{h7KLVv0;D1ox76ADE^ZlQ*KdK20FZ;W)b<>yqLuUB+Y=s(h0TPhj~2iK74v z1fu#!00k(Hs<+CXeBmqroj|e&usqO*=k~h(HGxb3TLk100DlaD*>n$BJAnc~C6El@ z8uP>(<`!-M3j(PCb_lHep9cUN0AvEU0Kh5-$pySYa7{o1pb^ON045!F0+ae354be| zxI!Nv51^F+WgP#v1F)eVs!-^P+ra48Q5o<=00oZ(c>8`U0I%f8JbVuT@%u9Y?C2*+ z59*MwFm;fYr0M-wE1VHnGKoFD&*Z|1=PmclbivY+gdTe0qBLEitPXj=5e|3LA z717TCQ2QST&=!KA`$D^iC`ADX?K1)FRf2uiOTt}!fq!E|1c3DYLHz@O4FqW3kDoLu z{!ldB1|WZbQ2zwLO@L+rcKT1&#zwmx055@2Kdt!ML`hr~Itjqi{~3Uj01=Oue+&7L z*xm+UCkEL1p9FxEgI5LwRQ}5CtpMCvz}SBVfRDfoV3_$YG60;b1I+zT1W@apzCfgj ze;9zP@_%cq0Ygj(1K!3jnk#80b7W&jWY@auBo;NR0tpK+p&r1n|i;SW2G; znZ5sM047s2fENHq;J^^b1)$kE0Ji?80l=@of#8M!_ObwQ1Ptw;0)XxcLs=~X-5!98 z06+T84sgdHxCvmWf{a=4NgjZ9$=ZgfP9doOK7Rn9SHi{w__hZDAp3)8cQg;ce=!7b z8Dt5AE&vRIp#C!ez!3Gyu8v><$Q2zv=#Xn;>$OM2+0@%yJYyeLEnEZs~t6fK~~MXU6sc z2<9_BiLo*2ymuxu{^*j*Gg>TZTpKmocC(9Vv>PKhnQ yUk0!d1Dx7lHaz`42Kujsmd6B60{Fzw=f40iCVh~EoBVPB0000yF$Y423P!N`3z)u68Ea$6&yKNz?epZe|h` z&WADPGL+Z||55&!i0J3f&wtB)4Xsh|vfn-H7yZ~DFvsJyC2b_izc4;ep!|ZwQ2-7C zyZTE2i8PL^H_NVk;VghLfnX0XdBDSU`LX^!fk*&L1lm1-41WT(jXj|61Oos=0>J>T zKCir?E-?+DLm(8u3W1*g+W=?*K%2lL0GP_DCs1B~HN2vq72Vg-zWuYXBxns!pkOsUFK*F9tU*G2h@ERPA#-9Pue19Z>75!?^ zquk|l|GyGHm46IOr@~$RE&x3Wk*RQQWp)UjA4vwBN>A|V-|7NgKiJieGas4uf$P_B zv^n)R3Ah}<1t7o!P(MizAohZdAlM?{1JJI2cntV{Nd#UYvB9ug0Cegf20)Gd+5HJJ zqJINmSpR(hybwg<3w#eK?E+|&j|8xm3CgTjg}Z!#v3~&yO#^7Xe^Y+}U;zQl`>~}V z`GaU!s86T!07v~x0Mi8YC}2+i)!LZ4^+W)(1WNt7p%ZixENkedgc;uo44&^$!A|(!py4BuszHFu<(50H#L)XZ;NTa|CJt#mqk`y}1luy8+DQ z0q*(-0)NQ)jw}#ys~3yI*gIYX;L7}XH9%rQDqUa+fK8wUU?T=B0U*wTNza2}E^HE* z0ALbm2SFc!&=_C^gnDCWZB=*yz@5WjVh6wu0T0#6-v^*F9ua#s1HdA1pbNwT_&%i5 zB6Nmx0DSci1Ateg5Cm+F-V0!D6d;Sh_lf+Rgnz_^>G0D5=v`sVe0WU&=Sh$50&@iH z-me@$ro+Yt(K!I?dB7TgA`5~A5rTUQM`ZpR4}e`V&V0G~xpNTqgrj-D%>YO;Vb#n$ zK}0JT2|yQ5UE3W2?@3t$?A>tG=O3R?*mY_e^Lvi9h(MF5I6xKAQQyxkZN7zJb=ND@DRWZ zfd&AwNB#Q%cZY|I8r0{T%4!k+viD?&5!>n(B3VqAVlJe^n+ zb?RorAt1rfr*;B6AkG0;hyjz@KUTE9^npAPtR}$PP6D{&=ktF7fT4dNjd{@400000 LNkvXXu0mjfF692X diff --git a/sprites/coffee-buoy.png b/sprites/coffee-buoy.png new file mode 100644 index 0000000000000000000000000000000000000000..7fe0f55ddf5f333f5948bcaffc1831840521d40c GIT binary patch literal 496 zcmVPx#8&FJCMF0Q*7#SleEkQUyT})JMZ)kdpd4r{miM5`P`mNnv00009bW%=J0RR90 z|NsC0|2G1g)BpehZb?KzR7i=XmD>))AP5Cb)XM*V@x}`(iUKZAyG>?16t&K2D`BY# zQUF~5@WQ9L>;}r)4J&Uo?7U4d@n0^hU|RQc&VA+tl(!2OUMU!qTX>BCfV_76*8)g_ zg&qpztKiJnFMHf?@0vU1#9zkol_GB{xmCAu<-=M2d4-q82o|@ zJtV?&(RG5xpYiRyPXgp`%L@Vpei1+sNcetbQGv|g1S