Added credits screen off of main menu #3
8 changed files with 165 additions and 29 deletions
47
Scenes/credits.gd
Normal file
47
Scenes/credits.gd
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
extends Control
|
||||||
|
|
||||||
|
@onready var grid: GridContainer = $Columns
|
||||||
|
|
||||||
|
signal main_menu
|
||||||
|
|
||||||
|
const CREDIT_LABELS_LINKS := {
|
||||||
|
"Godot Engine" : ["Godot Team : godotengine.org", "https://godotengine.org"],
|
||||||
|
"Ship and Enemies" : ["bart : opengameart.org", "https://opengameart.org/content/i-are-spaceship-16x16-space-sprites"],
|
||||||
|
"Starry Background" : ["Kutejnikov : opengameart.org", "https://opengameart.org/content/space-9"],
|
||||||
|
"Laser Sound" : ["dklon : opengameart.org", "https://opengameart.org/content/laser-fire"],
|
||||||
|
"Explosion Sounds" : ["TeamAlpha : opengameart.org", "https://opengameart.org/content/8-bitnes-explosion-sound-effecs"],
|
||||||
|
"Extra Life Jingle" : ["Mrthenoronha : freesound.org", "https://freesound.org/people/Mrthenoronha/sounds/518306/"]
|
||||||
|
}
|
||||||
|
|
||||||
|
const LEFT_COL_WIDTH := 300
|
||||||
|
const RIGHT_COL_WIDTH := 300
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
$Back.pressed.connect(_emit_back)
|
||||||
|
|
||||||
|
# center the grid
|
||||||
|
grid.anchor_left = 0.5
|
||||||
|
grid.anchor_right = 0.5
|
||||||
|
grid.offset_left = int(-(LEFT_COL_WIDTH + RIGHT_COL_WIDTH) / 2.0)
|
||||||
|
grid.offset_right = int((LEFT_COL_WIDTH + RIGHT_COL_WIDTH) / 2.0)
|
||||||
|
|
||||||
|
for btn_name in CREDIT_LABELS_LINKS.keys():
|
||||||
|
var display_text = CREDIT_LABELS_LINKS[btn_name][0]
|
||||||
|
var link: String = CREDIT_LABELS_LINKS[btn_name][1]
|
||||||
|
|
||||||
|
var label = Label.new()
|
||||||
|
label.text = btn_name
|
||||||
|
label.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT
|
||||||
|
label.custom_minimum_size.x = LEFT_COL_WIDTH
|
||||||
|
grid.add_child(label)
|
||||||
|
|
||||||
|
var button = Button.new()
|
||||||
|
button.text = display_text
|
||||||
|
button.focus_mode = Control.FOCUS_NONE
|
||||||
|
button.custom_minimum_size.x = RIGHT_COL_WIDTH
|
||||||
|
var link_local := link
|
||||||
|
button.pressed.connect(func(): OS.shell_open(link_local))
|
||||||
|
grid.add_child(button)
|
||||||
|
|
||||||
|
func _emit_back():
|
||||||
|
emit_signal("main_menu")
|
||||||
1
Scenes/credits.gd.uid
Normal file
1
Scenes/credits.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dinqb3ubrx76h
|
||||||
58
Scenes/credits.tscn
Normal file
58
Scenes/credits.tscn
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
[gd_scene load_steps=3 format=3 uid="uid://dylsy7qq16t6e"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dinqb3ubrx76h" path="res://Scenes/credits.gd" id="1_r18jl"]
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_gryuy"]
|
||||||
|
font_size = 36
|
||||||
|
|
||||||
|
[node name="Control" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 13
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
script = ExtResource("1_r18jl")
|
||||||
|
|
||||||
|
[node name="Title" type="Label" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 5
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -61.5
|
||||||
|
offset_top = 35.0
|
||||||
|
offset_right = 61.5
|
||||||
|
offset_bottom = 85.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
text = "Credits"
|
||||||
|
label_settings = SubResource("LabelSettings_gryuy")
|
||||||
|
|
||||||
|
[node name="Columns" type="GridContainer" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 5
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -20.0
|
||||||
|
offset_top = 100.0
|
||||||
|
offset_right = 20.0
|
||||||
|
offset_bottom = 140.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
theme_override_constants/h_separation = 30
|
||||||
|
theme_override_constants/v_separation = 5
|
||||||
|
columns = 2
|
||||||
|
|
||||||
|
[node name="Back" type="Button" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 7
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 1.0
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = -50.0
|
||||||
|
offset_top = -73.0
|
||||||
|
offset_right = 50.0
|
||||||
|
offset_bottom = -38.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 0
|
||||||
|
text = "Back"
|
||||||
|
|
@ -59,9 +59,9 @@ layout_mode = 1
|
||||||
anchors_preset = 5
|
anchors_preset = 5
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
offset_left = -46.5
|
offset_left = -75.0
|
||||||
offset_top = 150.0
|
offset_top = 155.0
|
||||||
offset_right = 46.5
|
offset_right = 75.0
|
||||||
offset_bottom = 181.0
|
offset_bottom = 190.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
text = "New Game"
|
text = "New Game"
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,8 @@ anchors_preset = 13
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
offset_top = -100.0
|
offset_top = -120.0
|
||||||
offset_bottom = -100.0
|
offset_bottom = -120.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
|
||||||
|
|
@ -44,10 +44,10 @@ layout_mode = 1
|
||||||
anchors_preset = 5
|
anchors_preset = 5
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
offset_left = -46.5
|
offset_left = -75.0
|
||||||
offset_top = 111.0
|
offset_top = 105.0
|
||||||
offset_right = 46.5
|
offset_right = 75.0
|
||||||
offset_bottom = 142.0
|
offset_bottom = 140.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
text = "New Game"
|
text = "New Game"
|
||||||
|
|
||||||
|
|
@ -56,9 +56,21 @@ layout_mode = 1
|
||||||
anchors_preset = 5
|
anchors_preset = 5
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
offset_left = -46.5
|
offset_left = -75.0
|
||||||
offset_top = 150.0
|
offset_top = 205.0
|
||||||
offset_right = 46.5
|
offset_right = 75.0
|
||||||
offset_bottom = 181.0
|
offset_bottom = 240.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
text = "Quit"
|
text = "Quit"
|
||||||
|
|
||||||
|
[node name="Credits" type="Button" parent="Container"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 5
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -75.0
|
||||||
|
offset_top = 155.0
|
||||||
|
offset_right = 75.0
|
||||||
|
offset_bottom = 190.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
text = "Credits"
|
||||||
|
|
|
||||||
|
|
@ -10,19 +10,17 @@ var player: CharacterBody2D
|
||||||
var ui: CanvasLayer
|
var ui: CanvasLayer
|
||||||
var game_over_ui: Control
|
var game_over_ui: Control
|
||||||
var menu_ui: Control
|
var menu_ui: Control
|
||||||
|
var credits_ui: Control
|
||||||
var life_icon = preload("res://Scenes/life.tscn")
|
var life_icon = preload("res://Scenes/life.tscn")
|
||||||
var menu_scn = preload("res://Scenes/main_menu.tscn")
|
var menu_scn = preload("res://Scenes/main_menu.tscn")
|
||||||
|
var credits_scn = preload("res://Scenes/credits.tscn")
|
||||||
var game_over_scn = preload("res://Scenes/game_over.tscn")
|
var game_over_scn = preload("res://Scenes/game_over.tscn")
|
||||||
var ship = preload("res://Scenes/ship.tscn")
|
var ship = preload("res://Scenes/ship.tscn")
|
||||||
var life = preload("res://Sounds/extra_life.wav")
|
var life = preload("res://Sounds/extra_life.wav")
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
menu_ui = menu_scn.instantiate()
|
|
||||||
menu_ui.new_game.connect(_new_game)
|
|
||||||
menu_ui.quit_game.connect(_quit_game)
|
|
||||||
|
|
||||||
await get_tree().process_frame
|
await get_tree().process_frame
|
||||||
ui.add_child(menu_ui)
|
_main_menu()
|
||||||
|
|
||||||
func set_score(amount: int):
|
func set_score(amount: int):
|
||||||
score = amount
|
score = amount
|
||||||
|
|
@ -84,5 +82,23 @@ func _new_game():
|
||||||
|
|
||||||
get_tree().current_scene.add_child(player)
|
get_tree().current_scene.add_child(player)
|
||||||
|
|
||||||
|
func _credits():
|
||||||
|
if menu_ui:
|
||||||
|
menu_ui.queue_free()
|
||||||
|
|
||||||
|
credits_ui = credits_scn.instantiate()
|
||||||
|
credits_ui.connect("main_menu", _main_menu)
|
||||||
|
ui.add_child(credits_ui)
|
||||||
|
|
||||||
|
func _main_menu():
|
||||||
|
if credits_ui:
|
||||||
|
credits_ui.queue_free()
|
||||||
|
|
||||||
|
menu_ui = menu_scn.instantiate()
|
||||||
|
menu_ui.new_game.connect(_new_game)
|
||||||
|
menu_ui.credits.connect(_credits)
|
||||||
|
menu_ui.quit_game.connect(_quit_game)
|
||||||
|
ui.add_child(menu_ui)
|
||||||
|
|
||||||
func _quit_game():
|
func _quit_game():
|
||||||
get_tree().quit()
|
get_tree().quit()
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,16 @@
|
||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
signal new_game
|
signal new_game
|
||||||
|
signal credits
|
||||||
signal quit_game
|
signal quit_game
|
||||||
|
|
||||||
func _ready():
|
func _ready() -> void:
|
||||||
$"Container/New Game".pressed.connect(_emit_new)
|
var buttons = {
|
||||||
$Container/Quit.pressed.connect(_emit_quit)
|
"New Game": "new_game",
|
||||||
|
"Credits": "credits",
|
||||||
|
"Quit": "quit_game",
|
||||||
|
}
|
||||||
|
|
||||||
func _emit_new():
|
for btn_name in buttons.keys():
|
||||||
emit_signal("new_game")
|
var btn = $Container.get_node(btn_name)
|
||||||
|
btn.pressed.connect(func(): emit_signal(buttons[btn_name]))
|
||||||
func _emit_quit():
|
|
||||||
emit_signal("quit_game")
|
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ func _physics_process(delta: float) -> void:
|
||||||
last_shot = 0.0
|
last_shot = 0.0
|
||||||
|
|
||||||
func die():
|
func die():
|
||||||
position = get_viewport_rect().size / 2
|
position = get_viewport_rect().size
|
||||||
speed = Vector2(0, 0)
|
speed = Vector2(0, 0)
|
||||||
inv_time = 3.0
|
inv_time = 3.0
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue