diff --git a/Objects/Main.tscn b/Objects/Main.tscn index 33b1b94..af979a5 100644 --- a/Objects/Main.tscn +++ b/Objects/Main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://Objects/SpecialObjects/Player.tscn" type="PackedScene" id=1] [ext_resource path="res://Objects/SpecialObjects/Conductor.tscn" type="PackedScene" id=2] @@ -6,6 +6,7 @@ [ext_resource path="res://Objects/SpecialObjects/SingleScreenWalls.tscn" type="PackedScene" id=4] [ext_resource path="res://Objects/SpecialObjects/Wrapper.tscn" type="PackedScene" id=5] [ext_resource path="res://Objects/ScrollingObjects/ScrollingBlock.tscn" type="PackedScene" id=6] +[ext_resource path="res://Objects/ScrollingObjects/Buttons/GameButton.tscn" type="PackedScene" id=7] [node name="Main" type="Node2D"] __meta__ = { @@ -20,7 +21,6 @@ __meta__ = { [node name="ConveyorBelt" parent="." instance=ExtResource( 3 )] position = Vector2( 640, 700 ) -cb_speed = 100.0 [node name="Player" parent="." instance=ExtResource( 1 )] position = Vector2( 340, 500 ) @@ -33,3 +33,6 @@ position = Vector2( 840, 660 ) [node name="ScrollingBlock3" parent="." instance=ExtResource( 6 )] position = Vector2( 980, 660 ) + +[node name="GameButton" parent="." instance=ExtResource( 7 )] +position = Vector2( 1000, 480 ) diff --git a/Objects/ScrollingObjects/Buttons/GameButton.gd b/Objects/ScrollingObjects/Buttons/GameButton.gd new file mode 100644 index 0000000..b6ab0c1 --- /dev/null +++ b/Objects/ScrollingObjects/Buttons/GameButton.gd @@ -0,0 +1,32 @@ +extends Node2D +class_name GameButton + +export(Color, RGB) var color: Color = Color.white setget set_color +export(Texture) var active_sprite: Texture = null +export(Texture) var pressed_sprite: Texture = null +export(bool) var is_active: bool = true setget set_active + + +signal clicked + + +func _ready(): + set_color(color) + set_active(is_active) + + +func set_color(value): + color = value + $Sprite.modulate = value + +func set_active(value): + is_active = value + if value: + $Sprite.texture = active_sprite + else: + $Sprite.texture = pressed_sprite + + +func _on_GameButton_input_event(viewport: Viewport, event: InputEvent, shape_idx: int): + if is_active and event.is_pressed(): + emit_signal("clicked") diff --git a/Objects/ScrollingObjects/Buttons/GameButton.tscn b/Objects/ScrollingObjects/Buttons/GameButton.tscn new file mode 100644 index 0000000..5d8a225 --- /dev/null +++ b/Objects/ScrollingObjects/Buttons/GameButton.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://Sprites/button.png" type="Texture" id=1] +[ext_resource path="res://Objects/ScrollingObjects/Buttons/GameButton.gd" type="Script" id=2] +[ext_resource path="res://Objects/ScrollingObjects/Utilities/ConveyorScrollParent.tscn" type="PackedScene" id=3] +[ext_resource path="res://Objects/ScrollingObjects/Utilities/WrapParent.tscn" type="PackedScene" id=4] +[ext_resource path="res://Sprites/button_pressed.png" type="Texture" id=5] + + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 20, 20 ) + +[node name="GameButton" type="Area2D"] +collision_layer = 8 +collision_mask = 2147483648 +script = ExtResource( 2 ) +active_sprite = ExtResource( 1 ) +pressed_sprite = ExtResource( 5 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[node name="ConveyorScrollParent" parent="." instance=ExtResource( 3 )] + +[node name="WrapParent" parent="." instance=ExtResource( 4 )] +[connection signal="input_event" from="." to="." method="_on_GameButton_input_event"] diff --git a/Objects/SpecialObjects/Player.tscn b/Objects/SpecialObjects/Player.tscn index 9d4c4f6..fc9d3fd 100644 --- a/Objects/SpecialObjects/Player.tscn +++ b/Objects/SpecialObjects/Player.tscn @@ -3,7 +3,6 @@ [ext_resource path="res://Sprites/player_danny_devito.png" type="Texture" id=1] [ext_resource path="res://Objects/SpecialObjects/Player.gd" type="Script" id=2] - [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 16, 16 ) diff --git a/Sprites/button_pressed.png b/Sprites/button_pressed.png new file mode 100644 index 0000000..a0d4a99 --- /dev/null +++ b/Sprites/button_pressed.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2477d712534ea25a11508465c640b0b5cd6cdf9fe9c2694b4caf5e39f222f983 +size 3908 diff --git a/Sprites/button_pressed.png.import b/Sprites/button_pressed.png.import new file mode 100644 index 0000000..f5e003d --- /dev/null +++ b/Sprites/button_pressed.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/button_pressed.png-36b20c9854df3037cade8d1ea8f243a6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Sprites/button_pressed.png" +dest_files=[ "res://.import/button_pressed.png-36b20c9854df3037cade8d1ea8f243a6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/project.godot b/project.godot index c5b5b4a..86d8d2c 100644 --- a/project.godot +++ b/project.godot @@ -29,6 +29,11 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://Objects/ScrollingObjects/Utilities/ConveyorScrollParent.gd" }, { +"base": "Node2D", +"class": "GameButton", +"language": "GDScript", +"path": "res://Objects/ScrollingObjects/Buttons/GameButton.gd" +}, { "base": "KinematicBody2D", "class": "Player", "language": "GDScript", @@ -64,6 +69,7 @@ _global_script_class_icons={ "Conductor": "", "ConveyorBelt": "", "ConveyorScrollParent": "", +"GameButton": "", "Player": "", "Press": "", "ScrollParent": "",