yippee
This commit is contained in:
parent
077a53d911
commit
6ce339b430
9 changed files with 252 additions and 21 deletions
|
|
@ -8,6 +8,7 @@ extends Camera2D
|
|||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
Router.die.connect(panic_zoomout)
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
|
|
@ -31,3 +32,10 @@ func _process(delta: float) -> void:
|
|||
snake_line.modulate = Color(1,1,1,1)
|
||||
snake_line.z_index = 11
|
||||
z_index = 1
|
||||
|
||||
func panic_zoomout():
|
||||
position = Vector2(0,0)
|
||||
zoom = Vector2(0.1,0.1)
|
||||
snake_line.modulate = Color(1,1,1,1)
|
||||
snake_line.z_index = 11
|
||||
z_index = 1
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ config_version=5
|
|||
[application]
|
||||
|
||||
config/name="Snake"
|
||||
run/main_scene="uid://daqqurdrnk61h"
|
||||
run/main_scene="uid://bgnfwdpk48u51"
|
||||
config/features=PackedStringArray("4.4", "GL Compatibility")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
|
|
@ -84,3 +84,4 @@ action={
|
|||
textures/canvas_textures/default_texture_filter=0
|
||||
renderer/rendering_method="gl_compatibility"
|
||||
renderer/rendering_method.mobile="gl_compatibility"
|
||||
environment/defaults/default_clear_color=Color(0, 0.278688, 0.624722, 1)
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ var player_mode : bool = false
|
|||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
die.connect(end_game)
|
||||
player_mode = false
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
|
|
@ -22,5 +23,6 @@ func _process(delta: float) -> void:
|
|||
player_mode = !player_mode
|
||||
|
||||
func end_game():
|
||||
player_mode = false
|
||||
print("i die")
|
||||
get_tree().get_root().process_mode = Node.PROCESS_MODE_DISABLED
|
||||
|
|
|
|||
15
scenes/menu.gd
Normal file
15
scenes/menu.gd
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
extends Control
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
|
||||
func _on_play_button_pressed() -> void:
|
||||
get_tree().change_scene_to_file("res://test.tscn")
|
||||
1
scenes/menu.gd.uid
Normal file
1
scenes/menu.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://cxggjpnb3uys7
|
||||
98
scenes/menu.tscn
Normal file
98
scenes/menu.tscn
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://bgnfwdpk48u51"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cxggjpnb3uys7" path="res://scenes/menu.gd" id="1_vjb58"]
|
||||
[ext_resource type="Texture2D" uid="uid://b1sese4p8sck3" path="res://assets/smallMap.png" id="1_yqeox"]
|
||||
|
||||
[node name="Menu" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_vjb58")
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("1_yqeox")
|
||||
stretch_mode = 6
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 100
|
||||
theme_override_constants/margin_top = 20
|
||||
theme_override_constants/margin_right = 100
|
||||
theme_override_constants/margin_bottom = 20
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
bbcode_enabled = true
|
||||
text = "[wave][font_size=50][outline_size=8][outline_color=darkgreen][color=green]Snake's Braincell"
|
||||
fit_content = true
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="RichTextLabel2" type="RichTextLabel" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
bbcode_enabled = true
|
||||
text = "[font_size=15][outline_size=2][outline_color=darkred][color=red]Made by Tabby :3"
|
||||
fit_content = true
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/PanelContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Instructions" type="RichTextLabel" parent="MarginContainer/VBoxContainer/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
bbcode_enabled = true
|
||||
text = "You are a snake, or rather, you are it's sincle braincell. press [color=green]Enter[/color] to switch between [i]controlling the snake[/i] and [i]controlling the braincell[/i].
|
||||
In snake form, Use the [color=green]Arrow Keys[/color] to direct the snake into apples. Then in braincell view, use the [color=green]Space[/color] key to pickup collected apples and put them in the [i]furnace[/i] - this will replenish your food, if you run of food you die!"
|
||||
fit_content = true
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="CreditsButton" type="Button" parent="MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/HBoxContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 8
|
||||
text = "View Credits"
|
||||
|
||||
[node name="PlayButton" type="Button" parent="MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 8
|
||||
text = "Play"
|
||||
|
||||
[node name="Label" type="Label" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 3
|
||||
anchor_left = 1.0
|
||||
anchor_top = 1.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -40.0
|
||||
offset_top = -23.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 0
|
||||
text = "V 0.2"
|
||||
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/PanelContainer/VBoxContainer/HBoxContainer/PlayButton" to="." method="_on_play_button_pressed"]
|
||||
|
|
@ -3,11 +3,13 @@ extends Node2D
|
|||
@export var segements_holder : Node2D
|
||||
var segements : Array[snake_segment]
|
||||
@export var SNAKE_SPEED : float = 0.2
|
||||
@export var max_snake_speed : float = 1
|
||||
@export var snake_line : Line2D
|
||||
@export var player : Node2D
|
||||
var food : float = 5
|
||||
@export var max_food = 5
|
||||
var food : float = 8
|
||||
@export var max_food = 8
|
||||
@export var food_drain = 0.1
|
||||
@export var food_gain = 0.2
|
||||
var pit_apples : int = 0
|
||||
var burn_apples : float = 0
|
||||
var score : int = 0
|
||||
|
|
@ -43,16 +45,21 @@ func _process(delta: float) -> void:
|
|||
add_segment()
|
||||
|
||||
|
||||
burn_apples -= 0.2 * delta
|
||||
burn_apples -= 0.3 * delta
|
||||
if burn_apples <= 0:
|
||||
burn_apples = 0
|
||||
else:
|
||||
food += 0.3 * delta
|
||||
food += food_gain * delta
|
||||
|
||||
if food > max_food:
|
||||
food = max_food
|
||||
food -= food_drain * delta
|
||||
|
||||
if food <= 0:
|
||||
Router.die.emit()
|
||||
|
||||
if SNAKE_SPEED > max_snake_speed:
|
||||
SNAKE_SPEED = max_snake_speed
|
||||
|
||||
pass
|
||||
|
||||
|
|
|
|||
108
test.tscn
108
test.tscn
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=19 format=3 uid="uid://daqqurdrnk61h"]
|
||||
[gd_scene load_steps=20 format=3 uid="uid://daqqurdrnk61h"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bue4xxejdsmqh" path="res://snakeManager.gd" id="1_6uqi0"]
|
||||
[ext_resource type="PackedScene" uid="uid://bwoeu7ask0fck" path="res://prefabs/snake_segment.tscn" id="1_8uh7m"]
|
||||
|
|
@ -35,7 +35,12 @@ outline_color = Color(0.87451, 0, 0, 1)
|
|||
radius = 50.0
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_5tkv4"]
|
||||
font_size = 8
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_0m0f1"]
|
||||
font_size = 31
|
||||
font_color = Color(0.84956, 3.29696e-06, 1.54018e-06, 1)
|
||||
outline_size = 3
|
||||
outline_color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="Node2D" type="Node2D" node_paths=PackedStringArray("test_area")]
|
||||
script = ExtResource("1_ehkex")
|
||||
|
|
@ -165,7 +170,8 @@ shape = SubResource("CircleShape2D_ehkex")
|
|||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="Control" type="Control" parent="CanvasLayer" node_paths=PackedStringArray("food_bar", "snake_manager", "score_label")]
|
||||
[node name="Control" type="Control" parent="CanvasLayer" node_paths=PackedStringArray("food_bar", "snake_manager", "score_label", "speed_label", "gameover_score_label", "gameover_screen")]
|
||||
process_mode = 3
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
|
|
@ -175,7 +181,10 @@ grow_vertical = 2
|
|||
script = ExtResource("9_xersf")
|
||||
food_bar = NodePath("PanelContainer/HBoxContainer/ProgressBar")
|
||||
snake_manager = NodePath("../../Snake")
|
||||
score_label = NodePath("PanelContainer2/VBoxContainer/score_label")
|
||||
score_label = NodePath("Score Panel/VBoxContainer/score_label")
|
||||
speed_label = NodePath("Speed Panel/VBoxContainer/speed_label")
|
||||
gameover_score_label = NodePath("game over screen/PanelContainer/VBoxContainer/gameoverscorelabel")
|
||||
gameover_screen = NodePath("game over screen")
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="CanvasLayer/Control"]
|
||||
layout_mode = 1
|
||||
|
|
@ -198,35 +207,102 @@ layout_mode = 2
|
|||
size_flags_horizontal = 3
|
||||
step = 0.0
|
||||
|
||||
[node name="PanelContainer2" type="PanelContainer" parent="CanvasLayer/Control"]
|
||||
[node name="Score Panel" type="PanelContainer" parent="CanvasLayer/Control"]
|
||||
layout_mode = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
offset_right = 50.0
|
||||
offset_bottom = 50.0
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/Control/PanelContainer2"]
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/Control/Score Panel"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="CanvasLayer/Control/PanelContainer2/VBoxContainer"]
|
||||
[node name="Label" type="Label" parent="CanvasLayer/Control/Score Panel/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Score"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="score_label" type="Label" parent="CanvasLayer/Control/PanelContainer2/VBoxContainer"]
|
||||
[node name="score_label" type="Label" parent="CanvasLayer/Control/Score Panel/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "0"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="PanelContainer3" type="PanelContainer" parent="CanvasLayer/Control"]
|
||||
[node name="Speed Panel" type="PanelContainer" parent="CanvasLayer/Control"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 1
|
||||
anchor_left = 1.0
|
||||
anchor_right = 1.0
|
||||
offset_left = -80.0
|
||||
offset_bottom = 65.0
|
||||
offset_left = -50.0
|
||||
offset_bottom = 50.0
|
||||
grow_horizontal = 0
|
||||
|
||||
[node name="Label" type="Label" parent="CanvasLayer/Control/PanelContainer3"]
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/Control/Speed Panel"]
|
||||
layout_mode = 2
|
||||
text = "Press enter to switch between inside and outside view"
|
||||
|
||||
[node name="Label2" type="Label" parent="CanvasLayer/Control/Speed Panel/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Speed"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="speed_label" type="Label" parent="CanvasLayer/Control/Speed Panel/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "0.3"
|
||||
label_settings = SubResource("LabelSettings_5tkv4")
|
||||
horizontal_alignment = 1
|
||||
autowrap_mode = 2
|
||||
|
||||
[node name="game over screen" type="MarginContainer" parent="CanvasLayer/Control"]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 200
|
||||
theme_override_constants/margin_top = 90
|
||||
theme_override_constants/margin_right = 200
|
||||
theme_override_constants/margin_bottom = 90
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="CanvasLayer/Control/game over screen"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/Control/game over screen/PanelContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="CanvasLayer/Control/game over screen/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Game Over"
|
||||
label_settings = SubResource("LabelSettings_0m0f1")
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="CanvasLayer/Control/game over screen/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label2" type="Label" parent="CanvasLayer/Control/game over screen/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Score:"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="gameoverscorelabel" type="RichTextLabel" parent="CanvasLayer/Control/game over screen/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
theme_override_font_sizes/normal_font_size = 40
|
||||
bbcode_enabled = true
|
||||
text = "[wave]200"
|
||||
fit_content = true
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/Control/game over screen/PanelContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="MenuButton" type="Button" parent="CanvasLayer/Control/game over screen/PanelContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Menu"
|
||||
|
||||
[node name="AgainButton" type="Button" parent="CanvasLayer/Control/game over screen/PanelContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Play Again!"
|
||||
|
||||
[connection signal="pressed" from="CanvasLayer/Control/game over screen/PanelContainer/VBoxContainer/HBoxContainer/MenuButton" to="CanvasLayer/Control" method="_on_menu_button_pressed"]
|
||||
[connection signal="pressed" from="CanvasLayer/Control/game over screen/PanelContainer/VBoxContainer/HBoxContainer/AgainButton" to="CanvasLayer/Control" method="_on_again_button_pressed"]
|
||||
|
|
|
|||
23
uiman.gd
23
uiman.gd
|
|
@ -3,10 +3,14 @@ extends Control
|
|||
@export var food_bar : ProgressBar
|
||||
@export var snake_manager : Node2D
|
||||
@export var score_label : Label
|
||||
@export var speed_label : Label
|
||||
@export var gameover_score_label : RichTextLabel
|
||||
@export var gameover_screen : MarginContainer
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
Router.die.connect(show_gameover)
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
|
|
@ -15,3 +19,22 @@ func _process(delta: float) -> void:
|
|||
food_bar.max_value = snake_manager.max_food
|
||||
food_bar.value = snake_manager.food
|
||||
score_label.text = str(snake_manager.score)
|
||||
gameover_score_label.text = str(snake_manager.score)
|
||||
if snake_manager.SNAKE_SPEED < snake_manager.max_snake_speed:
|
||||
speed_label.text = str(round(snake_manager.SNAKE_SPEED*100)/100)
|
||||
else:
|
||||
speed_label.text = str(round(snake_manager.max_snake_speed*100)/100) + " MAX"
|
||||
speed_label.label_settings.font_color = Color.RED
|
||||
|
||||
func show_gameover():
|
||||
gameover_screen.show()
|
||||
|
||||
|
||||
func _on_again_button_pressed() -> void:
|
||||
get_tree().get_root().process_mode = Node.PROCESS_MODE_ALWAYS
|
||||
get_tree().change_scene_to_file("res://test.tscn")
|
||||
|
||||
|
||||
func _on_menu_button_pressed() -> void:
|
||||
get_tree().get_root().process_mode = Node.PROCESS_MODE_ALWAYS
|
||||
get_tree().change_scene_to_file("res://scenes/menu.tscn")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue