summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2023-10-29 18:27:02 +0100
committerkdx <kikoodx@paranoici.org>2023-10-29 18:27:02 +0100
commitf34eff18a7d1191e46c2e2ced596c369594bf167 (patch)
tree06cb0d7fc703209f628b9975b5307c5e4310fade
parent9c37f3273092bb1a0237888ed09679e062fca684 (diff)
downloadgenshin2-f34eff18a7d1191e46c2e2ced596c369594bf167.tar.gz
kill it
-rw-r--r--ColorRect.gd2
-rw-r--r--Globals.gd6
-rw-r--r--Primogemmes.gd3
-rw-r--r--arrow.gd17
-rw-r--r--arrow.gdshader6
-rw-r--r--arrow.pngbin0 -> 30112 bytes
-rw-r--r--arrow.png.import34
-rw-r--r--arrow.tscn23
-rw-r--r--dicaprio.gd28
-rw-r--r--dicaprio.pngbin0 -> 65352 bytes
-rw-r--r--dicaprio.png.import34
-rw-r--r--dicaprio.tscn24
-rw-r--r--game.tscn7
-rw-r--r--player.gd38
-rw-r--r--player.tscn17
15 files changed, 230 insertions, 9 deletions
diff --git a/ColorRect.gd b/ColorRect.gd
index 5049898..15a5156 100644
--- a/ColorRect.gd
+++ b/ColorRect.gd
@@ -7,7 +7,7 @@ func _ready() -> void:
# Called every frame. 'delta' is the elapsed time since the previous frame.
-func _process(_delta: float) -> void:
+func _physics_process(_delta: float) -> void:
if !Globals.FUN:
color.r = 0
else:
diff --git a/Globals.gd b/Globals.gd
index db676c9..47c5d24 100644
--- a/Globals.gd
+++ b/Globals.gd
@@ -6,3 +6,9 @@ const LIMITS = Vector2(WIDTH, HEIGHT)
const LIMITS_MIN = -LIMITS / 2
const LIMITS_MAX = LIMITS / 2
var FUN = false
+
+func spawn_primogem(pos: Vector2) -> void:
+ var primogem: PackedScene = load("res://coin.tscn")
+ var e: Area2D = primogem.instantiate()
+ e.position = Vector2(pos.x, pos.y)
+ get_node("../Game/Coins").add_child(e)
diff --git a/Primogemmes.gd b/Primogemmes.gd
index 9224276..06ae9d3 100644
--- a/Primogemmes.gd
+++ b/Primogemmes.gd
@@ -12,6 +12,9 @@ func _ready() -> void:
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta: float) -> void:
text = ogtext + str(count)
+
+
+func _physics_process(_delta: float) -> void:
modulate.r = randi_range(0, 1)
modulate.g = randi_range(0, 1)
modulate.b = randi_range(0, 1)
diff --git a/arrow.gd b/arrow.gd
new file mode 100644
index 0000000..829edd7
--- /dev/null
+++ b/arrow.gd
@@ -0,0 +1,17 @@
+extends Area2D
+
+var velocity: Vector2
+
+
+func type() -> String: return "arrow"
+
+
+func damage(other: Area2D) -> void:
+ other.damage(1)
+ queue_free()
+
+func _physics_process(_delta: float) -> void:
+ position += velocity
+ if position.x < -Globals.WIDTH / 2. or position.y < -Globals.HEIGHT / 2. or \
+ position.x > Globals.WIDTH / 2. or position.y > Globals.HEIGHT / 2.:
+ queue_free()
diff --git a/arrow.gdshader b/arrow.gdshader
new file mode 100644
index 0000000..4c0a239
--- /dev/null
+++ b/arrow.gdshader
@@ -0,0 +1,6 @@
+shader_type canvas_item;
+
+void fragment() {
+ float a = sin(TIME * 30.);
+ COLOR.rgb += vec3(a, a, a);
+}
diff --git a/arrow.png b/arrow.png
new file mode 100644
index 0000000..765a096
--- /dev/null
+++ b/arrow.png
Binary files differ
diff --git a/arrow.png.import b/arrow.png.import
new file mode 100644
index 0000000..423e225
--- /dev/null
+++ b/arrow.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dmksn3gk0ixjr"
+path="res://.godot/imported/arrow.png-9a52328c9c8f79a188b7fabb13b1f3fc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://arrow.png"
+dest_files=["res://.godot/imported/arrow.png-9a52328c9c8f79a188b7fabb13b1f3fc.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/arrow.tscn b/arrow.tscn
new file mode 100644
index 0000000..16b4cd9
--- /dev/null
+++ b/arrow.tscn
@@ -0,0 +1,23 @@
+[gd_scene load_steps=6 format=3 uid="uid://dwmf4eu5xn0bc"]
+
+[ext_resource type="Texture2D" uid="uid://dmksn3gk0ixjr" path="res://arrow.png" id="1_cagmk"]
+[ext_resource type="Script" path="res://arrow.gd" id="1_cg6vj"]
+[ext_resource type="Shader" path="res://arrow.gdshader" id="1_p0a20"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_tt0m2"]
+shader = ExtResource("1_p0a20")
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_j0cyp"]
+size = Vector2(732, 20)
+
+[node name="Arrow" type="Area2D"]
+scale = Vector2(0.2, 0.2)
+script = ExtResource("1_cg6vj")
+
+[node name="Arrow" type="Sprite2D" parent="."]
+material = SubResource("ShaderMaterial_tt0m2")
+texture = ExtResource("1_cagmk")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(27, 0)
+shape = SubResource("RectangleShape2D_j0cyp")
diff --git a/dicaprio.gd b/dicaprio.gd
new file mode 100644
index 0000000..3750015
--- /dev/null
+++ b/dicaprio.gd
@@ -0,0 +1,28 @@
+extends Area2D
+
+@onready var player: Node2D = get_node("../Player")
+@export var speed = 2.0
+@export var life = 3.0
+
+
+func type() -> String: return "dicaprio"
+
+
+func _physics_process(_delta: float) -> void:
+ $Glitch.position = Vector2(randf_range(-16, 16), randf_range(-16, 16))
+ $Glitch.modulate.r = randi() % 2
+ $Glitch.modulate.g = randi() % 2
+ $Glitch.modulate.b = randi() % 2
+ position += (player.position - position).normalized() * speed
+
+
+func _on_area_entered(area: Area2D) -> void:
+ if area.type() == "arrow":
+ area.damage(self)
+
+
+func damage(x: float) -> void:
+ life -= x
+ if life <= 0:
+ Globals.spawn_primogem(position)
+ queue_free()
diff --git a/dicaprio.png b/dicaprio.png
new file mode 100644
index 0000000..c62f59d
--- /dev/null
+++ b/dicaprio.png
Binary files differ
diff --git a/dicaprio.png.import b/dicaprio.png.import
new file mode 100644
index 0000000..47eff7a
--- /dev/null
+++ b/dicaprio.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://rfclri1liv0m"
+path="res://.godot/imported/dicaprio.png-ebfa4f242ca1dfedd6462213b041cd4a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://dicaprio.png"
+dest_files=["res://.godot/imported/dicaprio.png-ebfa4f242ca1dfedd6462213b041cd4a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/dicaprio.tscn b/dicaprio.tscn
new file mode 100644
index 0000000..976a401
--- /dev/null
+++ b/dicaprio.tscn
@@ -0,0 +1,24 @@
+[gd_scene load_steps=4 format=3 uid="uid://cns884oaxgoof"]
+
+[ext_resource type="Texture2D" uid="uid://rfclri1liv0m" path="res://dicaprio.png" id="1_6cbbs"]
+[ext_resource type="Script" path="res://dicaprio.gd" id="1_wrbpo"]
+
+[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_sakix"]
+radius = 23.0
+height = 174.0
+
+[node name="Area2D" type="Area2D"]
+script = ExtResource("1_wrbpo")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+shape = SubResource("CapsuleShape2D_sakix")
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+scale = Vector2(0.5, 0.5)
+texture = ExtResource("1_6cbbs")
+
+[node name="Glitch" type="Sprite2D" parent="."]
+scale = Vector2(0.5, 0.5)
+texture = ExtResource("1_6cbbs")
+
+[connection signal="area_entered" from="." to="." method="_on_area_entered"]
diff --git a/game.tscn b/game.tscn
index d7ee8d6..e438463 100644
--- a/game.tscn
+++ b/game.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=8 format=3 uid="uid://8ps5533ot84q"]
+[gd_scene load_steps=9 format=3 uid="uid://8ps5533ot84q"]
[ext_resource type="PackedScene" uid="uid://c2g45v321qddb" path="res://player.tscn" id="1_3q46r"]
[ext_resource type="Script" path="res://ColorRect.gd" id="1_kv47q"]
@@ -6,6 +6,7 @@
[ext_resource type="PackedScene" uid="uid://4oytwe0gnp18" path="res://ui.tscn" id="2_3layq"]
[ext_resource type="Script" path="res://Genshinlogo.gd" id="2_8h31p"]
[ext_resource type="PackedScene" uid="uid://bj48tpvf86kjo" path="res://coin.tscn" id="2_qfcfl"]
+[ext_resource type="PackedScene" uid="uid://cns884oaxgoof" path="res://dicaprio.tscn" id="8_llto6"]
[ext_resource type="AudioStream" uid="uid://c7pa506xccdyq" path="res://ost.ogg" id="9_bhhfh"]
[node name="Game" type="Node2D"]
@@ -34,6 +35,7 @@ texture = ExtResource("1_tfg20")
script = ExtResource("2_8h31p")
[node name="Player" parent="." instance=ExtResource("1_3q46r")]
+z_index = 1
[node name="Camera2D" type="Camera2D" parent="Player"]
editor_draw_screen = false
@@ -109,3 +111,6 @@ position = Vector2(-341, 201)
[node name="Coin7" parent="Coins" instance=ExtResource("2_qfcfl")]
position = Vector2(39, -55)
+
+[node name="Dicaprio" parent="." instance=ExtResource("8_llto6")]
+position = Vector2(724, 537)
diff --git a/player.gd b/player.gd
index 9743b4c..fdf8db8 100644
--- a/player.gd
+++ b/player.gd
@@ -1,9 +1,13 @@
extends Area2D
@export var speed := 2.0
+@export var projectile_speed := 3.0
+@export var visibility := 320.0
+@export var arrow: PackedScene
@onready var primogemmes = get_node("../CanvasUI/UI/Primogemmes")
@onready var sfxs = [ $SfxOO, $SfxEE, $SfxOO2 ]
-@onready var sfx = 0
+var sfx = 0
+var aiming: Area2D = null
func type() -> String: return "player"
@@ -26,14 +30,20 @@ func get_input() -> Vector2:
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _physics_process(_delta2: float) -> void:
- position += get_local_mouse_position().normalized() * speed
+ var mouse := get_local_mouse_position().normalized()
+ position += mouse * speed
position = position.clamp(Globals.LIMITS_MIN, Globals.LIMITS_MAX)
#var color := Color()
#color.r = randi() % 2
#color.g = randi() % 2
#color.b = randi() % 2
#material.set_shader_parameter("color", color)
-
+ var enemy = find_enemy()
+ aiming = null
+ if enemy != null:
+ var dist := absf((position - enemy.position).length())
+ if dist < visibility:
+ aiming = enemy
func _on_area_entered(area: Area2D) -> void:
@@ -52,3 +62,25 @@ func select_character(s: String) -> void:
$Sprite2D.frame = 0
"luigi":
$Sprite2D.frame = 1
+
+
+func find_enemy() -> Area2D:
+ var closest: Area2D = null
+ var closest_dist: float = 10000000000000.0
+ for e in get_node("..").get_children():
+ if e.has_method("type") and e.type() == "dicaprio":
+ var dist := absf((position - e.position).length())
+ if dist < closest_dist:
+ closest_dist = dist
+ closest = e
+ return closest
+
+
+func _on_timer_timeout() -> void:
+ if aiming == null: return
+ var e: Area2D = arrow.instantiate()
+ e.position = position
+ var norm := (aiming.position - position).normalized()
+ e.rotation = norm.angle()
+ e.velocity = norm * projectile_speed
+ get_node("..").add_child(e)
diff --git a/player.tscn b/player.tscn
index 602c8a4..a0f62d1 100644
--- a/player.tscn
+++ b/player.tscn
@@ -1,17 +1,21 @@
-[gd_scene load_steps=7 format=3 uid="uid://c2g45v321qddb"]
+[gd_scene load_steps=8 format=3 uid="uid://c2g45v321qddb"]
[ext_resource type="Script" path="res://player.gd" id="1_tleme"]
+[ext_resource type="PackedScene" uid="uid://dwmf4eu5xn0bc" path="res://arrow.tscn" id="2_fmkn7"]
[ext_resource type="Texture2D" uid="uid://cq3m7fo355xdf" path="res://characters.png" id="2_mu4pp"]
[ext_resource type="AudioStream" uid="uid://siphq0i4rti2" path="res://oo.wav" id="3_0gvk7"]
[ext_resource type="AudioStream" uid="uid://dnx38lwh4b34a" path="res://ee.wav" id="4_on1ta"]
[ext_resource type="AudioStream" uid="uid://xbua3i4neqg5" path="res://oo2.wav" id="5_be6a0"]
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_kt8c8"]
-size = Vector2(128, 128)
+[sub_resource type="CircleShape2D" id="CircleShape2D_80n2h"]
+radius = 62.0081
[node name="Player" type="Area2D"]
script = ExtResource("1_tleme")
speed = 8.0
+projectile_speed = 12.0
+visibility = 960.0
+arrow = ExtResource("2_fmkn7")
metadata/_edit_group_ = true
[node name="Sprite2D" type="Sprite2D" parent="."]
@@ -20,7 +24,7 @@ texture = ExtResource("2_mu4pp")
hframes = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-shape = SubResource("RectangleShape2D_kt8c8")
+shape = SubResource("CircleShape2D_80n2h")
[node name="SfxOO" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource("3_0gvk7")
@@ -31,4 +35,9 @@ stream = ExtResource("4_on1ta")
[node name="SfxOO2" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource("5_be6a0")
+[node name="Timer" type="Timer" parent="."]
+process_callback = 0
+autostart = true
+
[connection signal="area_entered" from="." to="." method="_on_area_entered"]
+[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]