Browse Source

Some cleanup and safe area implementation

main
karl 1 year ago
parent
commit
1e54f7bb52
  1. 14
      GameBoard.gd
  2. 2
      GameBoard.tscn
  3. 18
      Main.tscn
  4. BIN
      Resources/Kenney Future.ttf
  5. 0
      Resources/background.png
  6. 6
      Resources/background.png.import
  7. 0
      Resources/brick.png
  8. 6
      Resources/brick.png.import
  9. 23
      ShapeI.tscn
  10. 23
      ShapeJ.tscn
  11. 23
      ShapeL.tscn
  12. 23
      ShapeO.tscn
  13. 23
      ShapeS.tscn
  14. 23
      ShapeT.tscn
  15. 23
      ShapeZ.tscn
  16. 0
      Shapes/Block.gd
  17. 8
      Shapes/Block.tscn
  18. 23
      Shapes/ShapeI.tscn
  19. 23
      Shapes/ShapeJ.tscn
  20. 23
      Shapes/ShapeL.tscn
  21. 23
      Shapes/ShapeO.tscn
  22. 23
      Shapes/ShapeS.tscn
  23. 23
      Shapes/ShapeT.tscn
  24. 23
      Shapes/ShapeZ.tscn
  25. 0
      Shapes/TetrisShape.gd
  26. 19
      UI.gd
  27. 2
      project.godot

14
GameBoard.gd

@ -5,13 +5,13 @@ signal score_changed(new_score)
signal new_next_shape(next_shape_scene)
var shapes = [
preload("res://ShapeI.tscn"),
preload("res://ShapeJ.tscn"),
preload("res://ShapeL.tscn"),
preload("res://ShapeZ.tscn"),
preload("res://ShapeS.tscn"),
preload("res://ShapeT.tscn"),
preload("res://ShapeO.tscn")
preload("res://Shapes/ShapeI.tscn"),
preload("res://Shapes/ShapeJ.tscn"),
preload("res://Shapes/ShapeL.tscn"),
preload("res://Shapes/ShapeZ.tscn"),
preload("res://Shapes/ShapeS.tscn"),
preload("res://Shapes/ShapeT.tscn"),
preload("res://Shapes/ShapeO.tscn")
]
var active_shape: TetrisShape

2
GameBoard.tscn

@ -1,6 +1,6 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://background.png" type="Texture" id=1]
[ext_resource path="res://Resources/background.png" type="Texture" id=1]
[ext_resource path="res://GameBoard.gd" type="Script" id=2]
[ext_resource path="res://SwipeHandler.gd" type="Script" id=3]

18
Main.tscn

@ -1,14 +1,19 @@
[gd_scene load_steps=4 format=2]
[gd_scene load_steps=6 format=2]
[ext_resource path="res://GameBoard.tscn" type="PackedScene" id=1]
[ext_resource path="res://UI.gd" type="Script" id=2]
[ext_resource path="res://Main.gd" type="Script" id=3]
[ext_resource path="res://Resources/Kenney Future.ttf" type="DynamicFontData" id=4]
[sub_resource type="DynamicFont" id=1]
size = 128
font_data = ExtResource( 4 )
[node name="Main" type="Node"]
script = ExtResource( 3 )
[node name="GameBoard" parent="." instance=ExtResource( 1 )]
position = Vector2( 547, 813 )
position = Vector2( 540, 1000 )
[node name="UI" type="Control" parent="."]
anchor_right = 1.0
@ -30,13 +35,14 @@ margin_right = 1080.0
margin_bottom = 150.0
[node name="Score" type="Label" parent="UI/VBoxContainer/HBoxContainer"]
margin_top = 68.0
margin_right = 8.0
margin_bottom = 82.0
margin_top = 3.0
margin_right = 107.0
margin_bottom = 147.0
custom_fonts/font = SubResource( 1 )
text = "0"
[node name="Spacer" type="Control" parent="UI/VBoxContainer/HBoxContainer"]
margin_left = 12.0
margin_left = 111.0
margin_right = 926.0
margin_bottom = 150.0
size_flags_horizontal = 3

BIN
Resources/Kenney Future.ttf

background.png → Resources/background.png

background.png.import → Resources/background.png.import

brick.png → Resources/brick.png

brick.png.import → Resources/brick.png.import

23
ShapeI.tscn

@ -1,23 +0,0 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Block.tscn" type="PackedScene" id=1]
[ext_resource path="res://TetrisShape.gd" type="Script" id=2]
[node name="ShapeI" type="Node2D"]
script = ExtResource( 2 )
[node name="Block" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, 32 )
color = Color( 0.717647, 1, 0.952941, 1 )
[node name="Block2" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, -32 )
color = Color( 0.717647, 1, 0.952941, 1 )
[node name="Block3" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, -96 )
color = Color( 0.717647, 1, 0.952941, 1 )
[node name="Block4" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, -160 )
color = Color( 0.717647, 1, 0.952941, 1 )

23
ShapeJ.tscn

@ -1,23 +0,0 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Block.tscn" type="PackedScene" id=1]
[ext_resource path="res://TetrisShape.gd" type="Script" id=2]
[node name="ShapeJ" type="Node2D"]
script = ExtResource( 2 )
[node name="Block" parent="." instance=ExtResource( 1 )]
position = Vector2( -32, 32 )
color = Color( 0.486275, 0.494118, 1, 1 )
[node name="Block2" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, 32 )
color = Color( 0.486275, 0.494118, 1, 1 )
[node name="Block3" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, -32 )
color = Color( 0.486275, 0.494118, 1, 1 )
[node name="Block4" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, -96 )
color = Color( 0.486275, 0.494118, 1, 1 )

23
ShapeL.tscn

@ -1,23 +0,0 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Block.tscn" type="PackedScene" id=1]
[ext_resource path="res://TetrisShape.gd" type="Script" id=2]
[node name="ShapeL" type="Node2D"]
script = ExtResource( 2 )
[node name="Block" parent="." instance=ExtResource( 1 )]
position = Vector2( -32, 32 )
color = Color( 1, 0.47451, 0.47451, 1 )
[node name="Block3" parent="." instance=ExtResource( 1 )]
position = Vector2( -32, -32 )
color = Color( 1, 0.47451, 0.47451, 1 )
[node name="Block4" parent="." instance=ExtResource( 1 )]
position = Vector2( -32, -96 )
color = Color( 1, 0.47451, 0.47451, 1 )
[node name="Block2" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, 32 )
color = Color( 1, 0.47451, 0.47451, 1 )

23
ShapeO.tscn

@ -1,23 +0,0 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Block.tscn" type="PackedScene" id=1]
[ext_resource path="res://TetrisShape.gd" type="Script" id=2]
[node name="ShapeSquare" type="Node2D"]
script = ExtResource( 2 )
[node name="Block" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, 32 )
color = Color( 0.827451, 1, 0.490196, 1 )
[node name="Block2" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, -32 )
color = Color( 0.827451, 1, 0.490196, 1 )
[node name="Block3" parent="." instance=ExtResource( 1 )]
position = Vector2( -32, -32 )
color = Color( 0.827451, 1, 0.490196, 1 )
[node name="Block4" parent="." instance=ExtResource( 1 )]
position = Vector2( -32, 32 )
color = Color( 0.827451, 1, 0.490196, 1 )

23
ShapeS.tscn

@ -1,23 +0,0 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Block.tscn" type="PackedScene" id=1]
[ext_resource path="res://TetrisShape.gd" type="Script" id=2]
[node name="ShapeS" type="Node2D"]
script = ExtResource( 2 )
[node name="Block" parent="." instance=ExtResource( 1 )]
position = Vector2( -32, 32 )
color = Color( 0.607843, 1, 0.603922, 1 )
[node name="Block2" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, 32 )
color = Color( 0.607843, 1, 0.603922, 1 )
[node name="Block3" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, -32 )
color = Color( 0.607843, 1, 0.603922, 1 )
[node name="Block4" parent="." instance=ExtResource( 1 )]
position = Vector2( 96, -32 )
color = Color( 0.607843, 1, 0.603922, 1 )

23
ShapeT.tscn

@ -1,23 +0,0 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Block.tscn" type="PackedScene" id=1]
[ext_resource path="res://TetrisShape.gd" type="Script" id=2]
[node name="ShapeT" type="Node2D"]
script = ExtResource( 2 )
[node name="Block" parent="." instance=ExtResource( 1 )]
position = Vector2( -32, 32 )
color = Color( 0.968627, 0.411765, 1, 1 )
[node name="Block2" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, 32 )
color = Color( 0.968627, 0.411765, 1, 1 )
[node name="Block3" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, -32 )
color = Color( 0.968627, 0.411765, 1, 1 )
[node name="Block4" parent="." instance=ExtResource( 1 )]
position = Vector2( 96, 32 )
color = Color( 0.968627, 0.411765, 1, 1 )

23
ShapeZ.tscn

@ -1,23 +0,0 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Block.tscn" type="PackedScene" id=1]
[ext_resource path="res://TetrisShape.gd" type="Script" id=2]
[node name="ShapeZ" type="Node2D"]
script = ExtResource( 2 )
[node name="Block" parent="." instance=ExtResource( 1 )]
position = Vector2( -32, -32 )
color = Color( 0.984314, 1, 0.537255, 1 )
[node name="Block2" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, -32 )
color = Color( 0.984314, 1, 0.537255, 1 )
[node name="Block3" parent="." instance=ExtResource( 1 )]
position = Vector2( 32, 32 )
color = Color( 0.984314, 1, 0.537255, 1 )
[node name="Block4" parent="." instance=ExtResource( 1 )]
position = Vector2( 96, 32 )
color = Color( 0.984314, 1, 0.537255, 1 )

Block.gd → Shapes/Block.gd

Block.tscn → Shapes/Block.tscn

23
Shapes/ShapeI.tscn

@ -0,0 +1,23 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Shapes/TetrisShape.gd" type="Script" id=1]
[ext_resource path="res://Shapes/Block.tscn" type="PackedScene" id=2]
[node name="ShapeI" type="Node2D"]
script = ExtResource( 1 )
[node name="Block" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, 32 )
color = Color( 0.717647, 1, 0.952941, 1 )
[node name="Block2" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, -32 )
color = Color( 0.717647, 1, 0.952941, 1 )
[node name="Block3" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, -96 )
color = Color( 0.717647, 1, 0.952941, 1 )
[node name="Block4" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, -160 )
color = Color( 0.717647, 1, 0.952941, 1 )

23
Shapes/ShapeJ.tscn

@ -0,0 +1,23 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Shapes/TetrisShape.gd" type="Script" id=1]
[ext_resource path="res://Shapes/Block.tscn" type="PackedScene" id=2]
[node name="ShapeJ" type="Node2D"]
script = ExtResource( 1 )
[node name="Block" parent="." instance=ExtResource( 2 )]
position = Vector2( -32, 32 )
color = Color( 0.486275, 0.494118, 1, 1 )
[node name="Block2" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, 32 )
color = Color( 0.486275, 0.494118, 1, 1 )
[node name="Block3" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, -32 )
color = Color( 0.486275, 0.494118, 1, 1 )
[node name="Block4" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, -96 )
color = Color( 0.486275, 0.494118, 1, 1 )

23
Shapes/ShapeL.tscn

@ -0,0 +1,23 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Shapes/TetrisShape.gd" type="Script" id=1]
[ext_resource path="res://Shapes/Block.tscn" type="PackedScene" id=2]
[node name="ShapeL" type="Node2D"]
script = ExtResource( 1 )
[node name="Block" parent="." instance=ExtResource( 2 )]
position = Vector2( -32, 32 )
color = Color( 1, 0.47451, 0.47451, 1 )
[node name="Block3" parent="." instance=ExtResource( 2 )]
position = Vector2( -32, -32 )
color = Color( 1, 0.47451, 0.47451, 1 )
[node name="Block4" parent="." instance=ExtResource( 2 )]
position = Vector2( -32, -96 )
color = Color( 1, 0.47451, 0.47451, 1 )
[node name="Block2" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, 32 )
color = Color( 1, 0.47451, 0.47451, 1 )

23
Shapes/ShapeO.tscn

@ -0,0 +1,23 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Shapes/TetrisShape.gd" type="Script" id=1]
[ext_resource path="res://Shapes/Block.tscn" type="PackedScene" id=2]
[node name="ShapeSquare" type="Node2D"]
script = ExtResource( 1 )
[node name="Block" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, 32 )
color = Color( 0.827451, 1, 0.490196, 1 )
[node name="Block2" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, -32 )
color = Color( 0.827451, 1, 0.490196, 1 )
[node name="Block3" parent="." instance=ExtResource( 2 )]
position = Vector2( -32, -32 )
color = Color( 0.827451, 1, 0.490196, 1 )
[node name="Block4" parent="." instance=ExtResource( 2 )]
position = Vector2( -32, 32 )
color = Color( 0.827451, 1, 0.490196, 1 )

23
Shapes/ShapeS.tscn

@ -0,0 +1,23 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Shapes/TetrisShape.gd" type="Script" id=1]
[ext_resource path="res://Shapes/Block.tscn" type="PackedScene" id=2]
[node name="ShapeS" type="Node2D"]
script = ExtResource( 1 )
[node name="Block" parent="." instance=ExtResource( 2 )]
position = Vector2( -32, 32 )
color = Color( 0.607843, 1, 0.603922, 1 )
[node name="Block2" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, 32 )
color = Color( 0.607843, 1, 0.603922, 1 )
[node name="Block3" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, -32 )
color = Color( 0.607843, 1, 0.603922, 1 )
[node name="Block4" parent="." instance=ExtResource( 2 )]
position = Vector2( 96, -32 )
color = Color( 0.607843, 1, 0.603922, 1 )

23
Shapes/ShapeT.tscn

@ -0,0 +1,23 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Shapes/TetrisShape.gd" type="Script" id=1]
[ext_resource path="res://Shapes/Block.tscn" type="PackedScene" id=2]
[node name="ShapeT" type="Node2D"]
script = ExtResource( 1 )
[node name="Block" parent="." instance=ExtResource( 2 )]
position = Vector2( -32, 32 )
color = Color( 0.968627, 0.411765, 1, 1 )
[node name="Block2" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, 32 )
color = Color( 0.968627, 0.411765, 1, 1 )
[node name="Block3" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, -32 )
color = Color( 0.968627, 0.411765, 1, 1 )
[node name="Block4" parent="." instance=ExtResource( 2 )]
position = Vector2( 96, 32 )
color = Color( 0.968627, 0.411765, 1, 1 )

23
Shapes/ShapeZ.tscn

@ -0,0 +1,23 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Shapes/TetrisShape.gd" type="Script" id=1]
[ext_resource path="res://Shapes/Block.tscn" type="PackedScene" id=2]
[node name="ShapeZ" type="Node2D"]
script = ExtResource( 1 )
[node name="Block" parent="." instance=ExtResource( 2 )]
position = Vector2( -32, -32 )
color = Color( 0.984314, 1, 0.537255, 1 )
[node name="Block2" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, -32 )
color = Color( 0.984314, 1, 0.537255, 1 )
[node name="Block3" parent="." instance=ExtResource( 2 )]
position = Vector2( 32, 32 )
color = Color( 0.984314, 1, 0.537255, 1 )
[node name="Block4" parent="." instance=ExtResource( 2 )]
position = Vector2( 96, 32 )
color = Color( 0.984314, 1, 0.537255, 1 )

TetrisShape.gd → Shapes/TetrisShape.gd

19
UI.gd

@ -1,6 +1,10 @@
extends Control
func _ready():
_set_safe_area()
func update_score(new_score):
$VBoxContainer/HBoxContainer/Score.text = str(new_score)
@ -10,3 +14,18 @@ func set_next_shape(shape_scene):
child.free()
$VBoxContainer/HBoxContainer/NextShape/Origin.add_child(shape_scene.instance())
# Resizes the UI to accomodate for notches, rounded corners, etc on mobile
# Adapted from https://github.com/godotengine/godot/issues/49887
func _set_safe_area():
var window_to_root = Transform2D.IDENTITY.scaled(get_tree().root.size / OS.window_size)
var safe_area_root = window_to_root.xform(OS.get_window_safe_area())
assert(get_viewport() == get_tree().root, "Assumption: control is not in a nested Viewport")
var parent_to_root = get_viewport_transform() * get_global_transform() * get_transform().affine_inverse()
var root_to_parent = parent_to_root.affine_inverse()
var safe_area_relative_to_parent = root_to_parent.xform(safe_area_root)
rect_position = safe_area_relative_to_parent.position
rect_size = safe_area_relative_to_parent.size

2
project.godot

@ -12,7 +12,7 @@ _global_script_classes=[ {
"base": "Node2D",
"class": "TetrisShape",
"language": "GDScript",
"path": "res://TetrisShape.gd"
"path": "res://Shapes/TetrisShape.gd"
} ]
_global_script_class_icons={
"TetrisShape": ""

Loading…
Cancel
Save