From 69b66e05116e632c7ddca8184dc007b637e24238 Mon Sep 17 00:00:00 2001 From: Martin Felis Date: Wed, 17 Aug 2022 00:50:30 +0200 Subject: [PATCH] Initial commit --- .gitignore | 3 ++ Components/ClickableComponent.gd | 16 +++++++++ Components/ColorComponent.gd | 14 ++++++++ Components/MovableComponent.gd | 27 +++++++++++++++ Components/TintedSpriteComponent.gd | 18 ++++++++++ Entities/SimpleEntity.tscn | 33 ++++++++++++++++++ Entities/WanderingEntity.gd | 44 ++++++++++++++++++++++++ Entities/WanderingEntity.tscn | 36 ++++++++++++++++++++ Game.gd | 29 ++++++++++++++++ Game.tscn | 50 ++++++++++++++++++++++++++++ PlayerNode.gd | 34 +++++++++++++++++++ Sprite.gd | 16 +++++++++ default_env.tres | 7 ++++ icon.png | Bin 0 -> 3305 bytes icon.png.import | 37 ++++++++++++++++++++ project.godot | 45 +++++++++++++++++++++++++ 16 files changed, 409 insertions(+) create mode 100644 .gitignore create mode 100644 Components/ClickableComponent.gd create mode 100644 Components/ColorComponent.gd create mode 100644 Components/MovableComponent.gd create mode 100644 Components/TintedSpriteComponent.gd create mode 100644 Entities/SimpleEntity.tscn create mode 100644 Entities/WanderingEntity.gd create mode 100644 Entities/WanderingEntity.tscn create mode 100644 Game.gd create mode 100644 Game.tscn create mode 100644 PlayerNode.gd create mode 100644 Sprite.gd create mode 100644 default_env.tres create mode 100644 icon.png create mode 100644 icon.png.import create mode 100644 project.godot diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..00de078 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.import/* +.mono/* +*.swp diff --git a/Components/ClickableComponent.gd b/Components/ClickableComponent.gd new file mode 100644 index 0000000..c6f5af6 --- /dev/null +++ b/Components/ClickableComponent.gd @@ -0,0 +1,16 @@ +class_name ClickableComponent +extends Node + +signal clicked() + +export var collision_size = Vector2(1, 1) + +onready var collision_shape = $Area2D + +# Called when the node enters the scene tree for the first time. +func _ready(): + collision_shape.scale = collision_size + +func _on_Area2D_input_event(viewport, event, shape_idx): + if event is InputEventMouseButton and event.pressed: + emit_signal ("clicked") diff --git a/Components/ColorComponent.gd b/Components/ColorComponent.gd new file mode 100644 index 0000000..315524c --- /dev/null +++ b/Components/ColorComponent.gd @@ -0,0 +1,14 @@ +class_name ColorComponent +extends Node + +export var color = Color(1, 0, 1) + +signal color_changed(color) + +# Called when the node enters the scene tree for the first time. +func _ready(): + set_color(color) + +func set_color(c : Color): + color = c + emit_signal("color_changed", color) diff --git a/Components/MovableComponent.gd b/Components/MovableComponent.gd new file mode 100644 index 0000000..eb96003 --- /dev/null +++ b/Components/MovableComponent.gd @@ -0,0 +1,27 @@ +extends Node2D + + +export var target = Vector2 (0, 0) +export var pos = Vector2 (0, 0) +export var max_speed = 50 +export var spring_k = 10 +export var spring_b = 0.5 + +var velocity = Vector2(0, 0) + +const pos_error_eps = 0.01 + +signal position_updated + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + if (target - pos).length_squared() > pos_error_eps * pos_error_eps: + var acceleration = spring_k * (target - pos) - spring_b * velocity + velocity = velocity + acceleration * delta + pos = pos + velocity * delta + + emit_signal("position_updated", pos) diff --git a/Components/TintedSpriteComponent.gd b/Components/TintedSpriteComponent.gd new file mode 100644 index 0000000..f31078a --- /dev/null +++ b/Components/TintedSpriteComponent.gd @@ -0,0 +1,18 @@ +class_name TintedSpriteComponent +extends Sprite + +export var tint_color = Color (1, 1, 1) + +# 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): + if Engine.editor_hint: + modulate = tint_color + +func set_color_tint(color: Color): + tint_color = color + modulate = tint_color + update() diff --git a/Entities/SimpleEntity.tscn b/Entities/SimpleEntity.tscn new file mode 100644 index 0000000..92c115c --- /dev/null +++ b/Entities/SimpleEntity.tscn @@ -0,0 +1,33 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://Components/TintedSpriteComponent.gd" type="Script" id=1] +[ext_resource path="res://PlayerNode.gd" type="Script" id=2] +[ext_resource path="res://Components/ColorComponent.gd" type="Script" id=3] +[ext_resource path="res://Components/ClickableComponent.gd" type="Script" id=4] +[ext_resource path="res://icon.png" type="Texture" id=5] + +[sub_resource type="CircleShape2D" id=1] +radius = 31.4006 + +[node name="SimpleEntity" type="Node2D"] +script = ExtResource( 2 ) + +[node name="Components" type="Node2D" parent="."] + +[node name="Clickable" type="Node2D" parent="Components"] +script = ExtResource( 4 ) + +[node name="Area2D" type="Area2D" parent="Components/Clickable"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Components/Clickable/Area2D"] +shape = SubResource( 1 ) + +[node name="TintedSprite" type="Sprite" parent="Components"] +texture = ExtResource( 5 ) +script = ExtResource( 1 ) + +[node name="Color" type="Node" parent="Components"] +script = ExtResource( 3 ) +color = Color( 1, 1, 1, 1 ) + +[connection signal="input_event" from="Components/Clickable/Area2D" to="Components/Clickable" method="_on_Area2D_input_event"] diff --git a/Entities/WanderingEntity.gd b/Entities/WanderingEntity.gd new file mode 100644 index 0000000..83557b6 --- /dev/null +++ b/Entities/WanderingEntity.gd @@ -0,0 +1,44 @@ +extends Node2D + +onready var color_component = $Components/Color +onready var tinted_sprite_component = $Components/TintedSprite +onready var clickable_component = $Components/Clickable +onready var movable_component = $Components/Movable + +onready var is_active = false + +# Called when the node enters the scene tree for the first time. +func _ready(): + if color_component and tinted_sprite_component: + print ("Connecting signals") + color_component.connect("color_changed", tinted_sprite_component, "set_color_tint") + + if clickable_component: + clickable_component.connect("clicked", self, "_on_entity_clicked") + + if movable_component: + movable_component.connect("position_updated", self, "_on_position_updated") + movable_component.target = self.transform.origin + movable_component.pos = self.transform.origin + +func _process(delta): + if is_active and color_component: + var color = Color( + (sin(float(OS.get_system_time_msecs()) / 1000.0) + 1.0) / 2.0, + (sin(float(OS.get_system_time_msecs()) / 300.0) + 1.0) / 2.0, + (sin(float(OS.get_system_time_msecs()) / 100.0) + 1.0) / 2.0 + ) + color_component.set_color(color) + pass + +func _on_entity_clicked(): + is_active = not is_active + +func _on_position_updated(new_position): + transform.origin = new_position + update() + +func set_target(new_target): + assert(movable_component) + + movable_component.target = new_target diff --git a/Entities/WanderingEntity.tscn b/Entities/WanderingEntity.tscn new file mode 100644 index 0000000..5a0b61a --- /dev/null +++ b/Entities/WanderingEntity.tscn @@ -0,0 +1,36 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://Components/TintedSpriteComponent.gd" type="Script" id=1] +[ext_resource path="res://Entities/WanderingEntity.gd" type="Script" id=2] +[ext_resource path="res://Components/ColorComponent.gd" type="Script" id=3] +[ext_resource path="res://Components/ClickableComponent.gd" type="Script" id=4] +[ext_resource path="res://icon.png" type="Texture" id=5] +[ext_resource path="res://Components/MovableComponent.gd" type="Script" id=6] + +[sub_resource type="CircleShape2D" id=1] +radius = 31.4006 + +[node name="WanderingEntity" type="Node2D"] +script = ExtResource( 2 ) + +[node name="Components" type="Node2D" parent="."] + +[node name="Movable" type="Node2D" parent="Components"] +script = ExtResource( 6 ) + +[node name="Clickable" type="Node2D" parent="Components"] +script = ExtResource( 4 ) + +[node name="Area2D" type="Area2D" parent="Components/Clickable"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Components/Clickable/Area2D"] +shape = SubResource( 1 ) + +[node name="TintedSprite" type="Sprite" parent="Components"] +texture = ExtResource( 5 ) +script = ExtResource( 1 ) + +[node name="Color" type="Node" parent="Components"] +script = ExtResource( 3 ) + +[connection signal="input_event" from="Components/Clickable/Area2D" to="Components/Clickable" method="_on_Area2D_input_event"] diff --git a/Game.gd b/Game.gd new file mode 100644 index 0000000..122c334 --- /dev/null +++ b/Game.gd @@ -0,0 +1,29 @@ +extends Node2D + + +onready var SimpleEntity = preload("res://Entities/SimpleEntity.tscn") +onready var WanderingEntity = preload("res://Entities/WanderingEntity.tscn") +onready var entities = $Entities + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + +func _on_AddEntityButton_pressed(): + var entity_instance = SimpleEntity.instance() + var viewport_rect = get_viewport_rect() + entity_instance.transform.origin = Vector2(randf() * viewport_rect.size[0], randf() * viewport_rect.size[1]) + entities.add_child(entity_instance) + +func _on_AddWanderingEntity_pressed(): + var entity_instance = WanderingEntity.instance() + var viewport_rect = get_viewport_rect() + entity_instance.transform.origin = Vector2(randf() * viewport_rect.size[0], randf() * viewport_rect.size[1]) + entities.add_child(entity_instance) + entity_instance.set_target(Vector2(randf() * viewport_rect.size[0], randf() * viewport_rect.size[1])) diff --git a/Game.tscn b/Game.tscn new file mode 100644 index 0000000..9fdfd10 --- /dev/null +++ b/Game.tscn @@ -0,0 +1,50 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://Entities/SimpleEntity.tscn" type="PackedScene" id=1] +[ext_resource path="res://Game.gd" type="Script" id=6] + +[node name="Game" type="Node2D"] +script = ExtResource( 6 ) + +[node name="Control" type="HBoxContainer" parent="."] +margin_left = 30.0 +margin_top = 30.0 +margin_right = 40.0 +margin_bottom = 40.0 + +[node name="AddEntityButton" type="Button" parent="Control"] +margin_right = 77.0 +margin_bottom = 20.0 +text = "Add Entity" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="AddWanderingEntity" type="Button" parent="Control"] +margin_left = 81.0 +margin_right = 190.0 +margin_bottom = 20.0 +text = "Add Wandering" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Entities" type="Node2D" parent="."] + +[node name="SimpleEntity" parent="Entities" instance=ExtResource( 1 )] +position = Vector2( 360, 118 ) + +[node name="Color" parent="Entities/SimpleEntity/Components" index="3"] +color = Color( 0.298039, 0.745098, 0.368627, 1 ) + +[node name="SimpleEntity2" parent="Entities" instance=ExtResource( 1 )] +position = Vector2( 157, 306 ) + +[node name="Color" parent="Entities/SimpleEntity2/Components" index="3"] +color = Color( 0, 0.0156863, 1, 1 ) + +[connection signal="pressed" from="Control/AddEntityButton" to="." method="_on_AddEntityButton_pressed"] +[connection signal="pressed" from="Control/AddWanderingEntity" to="." method="_on_AddWanderingEntity_pressed"] + +[editable path="Entities/SimpleEntity"] +[editable path="Entities/SimpleEntity2"] diff --git a/PlayerNode.gd b/PlayerNode.gd new file mode 100644 index 0000000..ea51c3e --- /dev/null +++ b/PlayerNode.gd @@ -0,0 +1,34 @@ +extends Node + +onready var color_component = $Components/Color +onready var tinted_sprite_component = $Components/TintedSprite +onready var clickable_component = $Components/Clickable +onready var undef_component = $ebvlerb + +onready var is_active = false + +# Called when the node enters the scene tree for the first time. +func _ready(): + if color_component and tinted_sprite_component: + print ("Connecting signals") + color_component.connect("color_changed", tinted_sprite_component, "set_color_tint") + tinted_sprite_component.set_color_tint(color_component.color) + + if clickable_component: + clickable_component.connect("clicked", self, "_on_entity_clicked") + +func _process(delta): + if Engine.editor_hint: + tinted_sprite_component.tint_color = color_component.color + + if is_active and color_component: + var color = Color( + (sin(float(OS.get_system_time_msecs()) / 1000.0) + 1.0) / 2.0, + (sin(float(OS.get_system_time_msecs()) / 300.0) + 1.0) / 2.0, + (sin(float(OS.get_system_time_msecs()) / 100.0) + 1.0) / 2.0 + ) + color_component.set_color(color) + pass + +func _on_entity_clicked(): + is_active = not is_active diff --git a/Sprite.gd b/Sprite.gd new file mode 100644 index 0000000..439f7a9 --- /dev/null +++ b/Sprite.gd @@ -0,0 +1,16 @@ +extends Sprite + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass diff --git a/default_env.tres b/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c98fbb601c83c81ec8c22b1dba7d1d57c62b323c GIT binary patch literal 3305 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 literal 0 HcmV?d00001 diff --git a/icon.png.import b/icon.png.import new file mode 100644 index 0000000..f6a79f2 --- /dev/null +++ b/icon.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.s3tc.stex" +path.etc2="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.etc2.stex" +metadata={ +"imported_formats": [ "s3tc", "etc2" ], +"vram_texture": true +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.s3tc.stex", "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.etc2.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=true +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..5f3b141 --- /dev/null +++ b/project.godot @@ -0,0 +1,45 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +_global_script_classes=[ { +"base": "Node", +"class": "ClickableComponent", +"language": "GDScript", +"path": "res://Components/ClickableComponent.gd" +}, { +"base": "Node", +"class": "ColorComponent", +"language": "GDScript", +"path": "res://Components/ColorComponent.gd" +}, { +"base": "Sprite", +"class": "TintedSpriteComponent", +"language": "GDScript", +"path": "res://Components/TintedSpriteComponent.gd" +} ] +_global_script_class_icons={ +"ClickableComponent": "", +"ColorComponent": "", +"TintedSpriteComponent": "" +} + +[application] + +config/name="GodotComponentTest" +run/main_scene="res://Game.tscn" +config/icon="res://icon.png" + +[physics] + +common/enable_pause_aware_picking=true + +[rendering] + +environment/default_environment="res://default_env.tres"