- Switching from sprites to UI Elements
- Binding Main Menu and Game Scene Together TODO: Settings, Score, Highscore, Controller Support, Color Pallet Rework
This commit is contained in:
parent
da639880b5
commit
3037c1fce0
7 changed files with 192 additions and 171 deletions
248
Assets/Base.tres
248
Assets/Base.tres
File diff suppressed because one or more lines are too long
|
@ -6,20 +6,44 @@
|
|||
|
||||
[sub_resource type="Resource" id="Resource_22g0s"]
|
||||
script = ExtResource("3_gnesl")
|
||||
empty = Color(1, 1, 1, 1)
|
||||
snake_head = Color(0, 1, 0, 1)
|
||||
snake_body = Color(0.133333, 0.545098, 0.133333, 1)
|
||||
apple = Color(1, 0, 0, 1)
|
||||
empty = Color(0.2, 0.247059, 0.180392, 1)
|
||||
snake_head = Color(0.517647, 0.803922, 0.647059, 1)
|
||||
snake_body = Color(0.262745, 0.486275, 0.368627, 1)
|
||||
apple = Color(0.941176, 0.396078, 0.396078, 1)
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
[node name="Node2D" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="GameManager" type="Node" parent="."]
|
||||
|
||||
[node name="Map" type="Node2D" parent="."]
|
||||
[node name="ColorRect" type="ColorRect" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0.0784314, 0.105882, 0.0666667, 1)
|
||||
|
||||
[node name="AspectRatioContainer" type="AspectRatioContainer" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="Map" type="GridContainer" parent="AspectRatioContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/h_separation = 5
|
||||
theme_override_constants/v_separation = 5
|
||||
columns = 2
|
||||
script = ExtResource("1_lps27")
|
||||
map_size = 25
|
||||
texture = ExtResource("2_wiemx")
|
||||
gaps = 5
|
||||
tile_color = SubResource("Resource_22g0s")
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="."]
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://gn5or2td1tmd"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://c7ok1re4seqsh"]
|
||||
|
||||
[ext_resource type="Script" path="res://Scripts/Main Menu Buttons.gd" id="1_abac4"]
|
||||
[ext_resource type="Theme" uid="uid://clkt54a4wy6tn" path="res://Assets/Base.tres" id="1_b1d2h"]
|
||||
|
||||
[node name="Control" type="Control"]
|
||||
|
@ -9,6 +10,7 @@ anchor_right = 1.0
|
|||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_abac4")
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="."]
|
||||
layout_mode = 1
|
||||
|
@ -47,27 +49,25 @@ vertical_alignment = 1
|
|||
[node name="Menu Butons" type="VBoxContainer" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Button" type="Button" parent="MarginContainer/VBoxContainer/Menu Butons"]
|
||||
[node name="Start Button" type="Button" parent="MarginContainer/VBoxContainer/Menu Butons"]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_b1d2h")
|
||||
theme_override_font_sizes/font_size = 96
|
||||
text = "Start"
|
||||
|
||||
[node name="Button2" type="Button" parent="MarginContainer/VBoxContainer/Menu Butons"]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_b1d2h")
|
||||
theme_override_font_sizes/font_size = 96
|
||||
text = "Settings"
|
||||
|
||||
[node name="Button3" type="Button" parent="MarginContainer/VBoxContainer/Menu Butons"]
|
||||
[node name="About Button" type="Button" parent="MarginContainer/VBoxContainer/Menu Butons"]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_b1d2h")
|
||||
theme_override_font_sizes/font_size = 96
|
||||
text = "About
|
||||
"
|
||||
|
||||
[node name="Button4" type="Button" parent="MarginContainer/VBoxContainer/Menu Butons"]
|
||||
[node name="Quit Button" type="Button" parent="MarginContainer/VBoxContainer/Menu Butons"]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_b1d2h")
|
||||
theme_override_font_sizes/font_size = 96
|
||||
text = "Quit"
|
||||
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/Menu Butons/Start Button" to="." method="_on_start_button_pressed"]
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/Menu Butons/About Button" to="." method="_on_about_button_pressed"]
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/Menu Butons/Quit Button" to="." method="_on_quit_button_pressed"]
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
extends Node
|
||||
extends GridContainer
|
||||
|
||||
@export var map_size := 15
|
||||
@export var texture : Texture2D
|
||||
@export var gaps := 10
|
||||
@export var speed := 0.25
|
||||
|
||||
@export var tile_color := TileColors.new()
|
||||
|
@ -18,13 +17,13 @@ var timer := 0.0
|
|||
var game_is_running := true
|
||||
|
||||
func generate_tiles():
|
||||
self.columns = map_size
|
||||
|
||||
for x in range(map_size):
|
||||
tiles.append([])
|
||||
tiles[x] = []
|
||||
for y in range(map_size):
|
||||
var tile = Tile.new(x ,y, texture, tile_color)
|
||||
tile.calculate_tile_position_and_size(min(DisplayServer.window_get_size(DisplayServer.get_window_list()[0]).x, DisplayServer.window_get_size(DisplayServer.get_window_list()[0]).y), gaps, map_size, x, y)
|
||||
var tile = Tile.new(x ,y, tile_color)
|
||||
self.add_child(tile)
|
||||
tiles[x].append([])
|
||||
tiles[x][y] = tile
|
||||
|
@ -50,7 +49,7 @@ func set_snake_to_start_position():
|
|||
|
||||
func read_input() -> Vector2:#
|
||||
# cant use Input.get_vector because it normalizes the vector
|
||||
return Vector2(Input.get_axis("left", "right"), Input.get_axis("up", "down"))
|
||||
return Vector2(Input.get_axis("up", "down"), Input.get_axis("left", "right"))
|
||||
|
||||
|
||||
func process_tiles():
|
||||
|
@ -94,7 +93,6 @@ func process_snake_rotation():
|
|||
|
||||
func _ready():
|
||||
game_start()
|
||||
get_tree().get_root().size_changed.connect(onScreenResize)
|
||||
pass
|
||||
|
||||
func game_start():
|
||||
|
@ -108,8 +106,8 @@ func game_start():
|
|||
pass
|
||||
|
||||
func game_stop():
|
||||
print("dead")
|
||||
game_is_running = false
|
||||
get_tree().change_scene_to_file("res://Scene/Main Menu.tscn")
|
||||
pass
|
||||
|
||||
func _process(delta):
|
||||
|
@ -121,11 +119,3 @@ func _process(delta):
|
|||
process_tiles()
|
||||
timer += delta
|
||||
pass
|
||||
|
||||
|
||||
|
||||
func onScreenResize():
|
||||
for x in range(map_size):
|
||||
for y in range(map_size):
|
||||
tiles[x][y].calculate_tile_position_and_size(min(DisplayServer.window_get_size(DisplayServer.get_window_list()[0]).x, DisplayServer.window_get_size(DisplayServer.get_window_list()[0]).y), gaps, map_size, x, y)
|
||||
pass
|
||||
|
|
12
Scripts/Main Menu Buttons.gd
Normal file
12
Scripts/Main Menu Buttons.gd
Normal file
|
@ -0,0 +1,12 @@
|
|||
extends Control
|
||||
|
||||
|
||||
func _on_start_button_pressed():
|
||||
get_tree().change_scene_to_file("res://Scene/Game.tscn")
|
||||
|
||||
func _on_quit_button_pressed():
|
||||
get_tree().quit()
|
||||
|
||||
|
||||
func _on_about_button_pressed():
|
||||
OS.shell_open("https://git.euph.dev/snoweuph/Snake")
|
|
@ -1,4 +1,4 @@
|
|||
extends Sprite2D
|
||||
extends ColorRect
|
||||
|
||||
class_name Tile
|
||||
|
||||
|
@ -16,27 +16,22 @@ enum States {
|
|||
@export var x : int
|
||||
@export var y : int
|
||||
|
||||
func _init(_x : int, _y : int, _texture : Texture2D, _tile_colors : TileColors):
|
||||
func _init(_x : int, _y : int, _tile_colors : TileColors):
|
||||
state = States.EMPTY
|
||||
self.x = _x
|
||||
self.y = _y
|
||||
self.texture = _texture
|
||||
self.size_flags_horizontal += Control.SIZE_EXPAND
|
||||
self.size_flags_vertical += Control.SIZE_EXPAND
|
||||
self.tile_color = _tile_colors
|
||||
|
||||
func update_color():
|
||||
match state:
|
||||
States.EMPTY:
|
||||
self.modulate = tile_color.empty
|
||||
self.color = tile_color.empty
|
||||
States.SNAKE:
|
||||
self.modulate = tile_color.snake_body if snake_pos > 1 else tile_color.snake_head
|
||||
self.color = tile_color.snake_body if snake_pos > 1 else tile_color.snake_head
|
||||
States.APPLE:
|
||||
self.modulate = tile_color.apple
|
||||
pass
|
||||
|
||||
func calculate_tile_position_and_size(viewport_min : int, gaps : int, map_size: int, x : int, y : int):
|
||||
var tile_scale = ( viewport_min - gaps ) / map_size - gaps
|
||||
self.scale = Vector2(tile_scale, tile_scale)
|
||||
self.position = Vector2(x * ( tile_scale + gaps ) - map_size / 2 * (tile_scale + gaps), y * (tile_scale + gaps) - map_size / 2 * (tile_scale + gaps))
|
||||
self.color = tile_color.apple
|
||||
pass
|
||||
|
||||
func _process(delta):
|
||||
|
|
|
@ -11,7 +11,7 @@ config_version=5
|
|||
[application]
|
||||
|
||||
config/name="Snake"
|
||||
run/main_scene="res://Scene/Game.tscn"
|
||||
run/main_scene="res://Scene/Main Menu.tscn"
|
||||
config/features=PackedStringArray("4.0", "GL Compatibility")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
|
|
Loading…
Reference in a new issue