summaryrefslogtreecommitdiff
path: root/src/ui/main_menu
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/main_menu')
-rw-r--r--src/ui/main_menu/scenes/MainMenu.tscn66
-rw-r--r--src/ui/main_menu/scenes/MenuOption.tscn27
-rw-r--r--src/ui/main_menu/scripts/main_menu.gd81
-rw-r--r--src/ui/main_menu/scripts/menu_option.gd35
-rw-r--r--src/ui/main_menu/sprites/selector.pngbin0 -> 231 bytes
-rw-r--r--src/ui/main_menu/sprites/selector.png.import35
-rw-r--r--src/ui/main_menu/sprites/selector1.pngbin0 -> 155 bytes
-rw-r--r--src/ui/main_menu/sprites/selector1.png.import35
-rw-r--r--src/ui/main_menu/sprites/selector2.pngbin0 -> 160 bytes
-rw-r--r--src/ui/main_menu/sprites/selector2.png.import35
-rw-r--r--src/ui/main_menu/sprites/selector3.pngbin0 -> 164 bytes
-rw-r--r--src/ui/main_menu/sprites/selector3.png.import35
-rw-r--r--src/ui/main_menu/sprites/selector4.pngbin0 -> 159 bytes
-rw-r--r--src/ui/main_menu/sprites/selector4.png.import35
-rw-r--r--src/ui/main_menu/sprites/selector5.pngbin0 -> 88 bytes
-rw-r--r--src/ui/main_menu/sprites/selector5.png.import35
16 files changed, 419 insertions, 0 deletions
diff --git a/src/ui/main_menu/scenes/MainMenu.tscn b/src/ui/main_menu/scenes/MainMenu.tscn
new file mode 100644
index 0000000..249885e
--- /dev/null
+++ b/src/ui/main_menu/scenes/MainMenu.tscn
@@ -0,0 +1,66 @@
+[gd_scene load_steps=5 format=2]
+
+[ext_resource path="res://ui/main_menu/scenes/MenuOption.tscn" type="PackedScene" id=1]
+[ext_resource path="res://fonts/monogram_extended.ttf" type="DynamicFontData" id=2]
+[ext_resource path="res://ui/main_menu/scripts/main_menu.gd" type="Script" id=3]
+
+[sub_resource type="DynamicFont" id=1]
+size = 64
+font_data = ExtResource( 2 )
+
+[node name="MainMenu" type="MarginContainer"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+script = ExtResource( 3 )
+START_OPTION_NP = NodePath("Center/VBox/Options/VBox/Start")
+SETTINGS_OPTION_NP = NodePath("Center/VBox/Options/VBox/Settings")
+EXIT_OPTION_NP = NodePath("Center/VBox/Options/VBox/Exit")
+
+[node name="Center" type="CenterContainer" parent="."]
+margin_right = 320.0
+margin_bottom = 180.0
+
+[node name="VBox" type="VBoxContainer" parent="Center"]
+margin_left = 64.0
+margin_top = 28.0
+margin_right = 256.0
+margin_bottom = 152.0
+custom_constants/separation = 16
+
+[node name="Title" type="CenterContainer" parent="Center/VBox"]
+margin_right = 192.0
+margin_bottom = 52.0
+
+[node name="Label" type="Label" parent="Center/VBox/Title"]
+margin_right = 192.0
+margin_bottom = 52.0
+custom_colors/font_color_shadow = Color( 0, 0, 0, 1 )
+custom_fonts/font = SubResource( 1 )
+text = "El Snake"
+
+[node name="Options" type="CenterContainer" parent="Center/VBox"]
+margin_top = 68.0
+margin_right = 192.0
+margin_bottom = 124.0
+
+[node name="VBox" type="VBoxContainer" parent="Center/VBox/Options"]
+margin_left = 56.0
+margin_right = 136.0
+margin_bottom = 56.0
+
+[node name="Start" parent="Center/VBox/Options/VBox" instance=ExtResource( 1 )]
+margin_right = 80.0
+label_text = "Start"
+selected = true
+
+[node name="Settings" parent="Center/VBox/Options/VBox" instance=ExtResource( 1 )]
+margin_top = 20.0
+margin_right = 80.0
+margin_bottom = 36.0
+label_text = "Settings"
+
+[node name="Exit" parent="Center/VBox/Options/VBox" instance=ExtResource( 1 )]
+margin_top = 40.0
+margin_right = 80.0
+margin_bottom = 56.0
+label_text = "Exit"
diff --git a/src/ui/main_menu/scenes/MenuOption.tscn b/src/ui/main_menu/scenes/MenuOption.tscn
new file mode 100644
index 0000000..d6bb05f
--- /dev/null
+++ b/src/ui/main_menu/scenes/MenuOption.tscn
@@ -0,0 +1,27 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://fonts/MonogramExtended.tres" type="DynamicFont" id=2]
+[ext_resource path="res://ui/main_menu/scripts/menu_option.gd" type="Script" id=3]
+
+[node name="MenuOption" type="CenterContainer"]
+margin_right = 49.0
+margin_bottom = 16.0
+script = ExtResource( 3 )
+
+[node name="HBox" type="HBoxContainer" parent="."]
+margin_right = 80.0
+margin_bottom = 16.0
+
+[node name="Selector" type="TextureRect" parent="HBox"]
+margin_right = 16.0
+margin_bottom = 16.0
+rect_min_size = Vector2( 16, 16 )
+
+[node name="Label" type="Label" parent="HBox"]
+margin_left = 20.0
+margin_top = 1.0
+margin_right = 80.0
+margin_bottom = 14.0
+rect_min_size = Vector2( 60, 0 )
+custom_colors/font_color_shadow = Color( 0, 0, 0, 1 )
+custom_fonts/font = ExtResource( 2 )
diff --git a/src/ui/main_menu/scripts/main_menu.gd b/src/ui/main_menu/scripts/main_menu.gd
new file mode 100644
index 0000000..7077b68
--- /dev/null
+++ b/src/ui/main_menu/scripts/main_menu.gd
@@ -0,0 +1,81 @@
+extends MarginContainer
+
+export(NodePath) var START_OPTION_NP: NodePath
+export(NodePath) var SETTINGS_OPTION_NP: NodePath
+export(NodePath) var EXIT_OPTION_NP: NodePath
+
+onready var start_option: MenuOption = get_node(START_OPTION_NP)
+onready var settings_option: MenuOption = get_node(SETTINGS_OPTION_NP)
+onready var exit_option: MenuOption = get_node(EXIT_OPTION_NP)
+
+onready var main: Node2D = get_parent().get_parent()
+
+
+enum Option {
+ START,
+ SETTINGS,
+ EXIT
+}
+
+enum {
+ NEXT,
+ PREV
+}
+
+onready var options: Dictionary = {
+ Option.START: start_option,
+ Option.SETTINGS: settings_option,
+ Option.EXIT: exit_option
+}
+
+var current_selection: int = Option.START
+
+
+func _ready():
+ Event.connect("game_start", self, "_on_game_start")
+ start_option.type = Option.START
+ settings_option.type = Option.SETTINGS
+ exit_option.type = Option.EXIT
+
+
+func _input(event: InputEvent) -> void:
+ if event.is_action_pressed("ui_down"):
+ _menu_selection(NEXT)
+ elif event.is_action_pressed("ui_up"):
+ _menu_selection(PREV)
+
+
+ if event.is_action_pressed("ui_accept"):
+ match current_selection:
+ Option.START:
+ Event.emit_signal("game_start")
+ Option.SETTINGS:
+ print("Option TEST.")
+ Option.EXIT:
+ get_tree().quit()
+
+
+func _menu_selection(selection: int) -> void:
+ match selection:
+ NEXT:
+ current_selection += 1
+ if current_selection == Option.size():
+ current_selection = 0
+ PREV:
+ current_selection -= 1
+ if current_selection == -1:
+ current_selection = Option.size() - 1
+ _update_options()
+
+
+func _update_options() -> void:
+ for i in options:
+ if i == current_selection:
+ options[i].selected = true
+ else:
+ options[i].selected = false
+
+
+func _on_game_start() -> void:
+ print("game_start")
+ get_tree().change_scene_to(Global.GAME_NODE)
diff --git a/src/ui/main_menu/scripts/menu_option.gd b/src/ui/main_menu/scripts/menu_option.gd
new file mode 100644
index 0000000..58b4a50
--- /dev/null
+++ b/src/ui/main_menu/scripts/menu_option.gd
@@ -0,0 +1,35 @@
+class_name MenuOption
+extends CenterContainer
+
+export(String) var label_text: String
+export(bool) var selected: bool = false
+
+onready var label: Label = $HBox/Label
+onready var selector: TextureRect = $HBox/Selector
+var type: int
+
+var time_elapsed: float = 0.0
+var timer: float = 0.2
+var last_frame: int = 0
+var frames: Array = [preload("res://ui/main_menu/sprites/selector1.png"),
+ preload("res://ui/main_menu/sprites/selector2.png"),
+ preload("res://ui/main_menu/sprites/selector3.png"),
+ preload("res://ui/main_menu/sprites/selector4.png"),
+ preload("res://ui/main_menu/sprites/selector5.png")]
+
+
+func _ready():
+ label.text = label_text
+
+
+func _process(delta: float) -> void:
+ if selected:
+ if time_elapsed >= timer:
+ selector.texture = frames[last_frame]
+ last_frame += 1
+ if last_frame == frames.size() - 1:
+ last_frame = 0
+ time_elapsed = 0.0
+ time_elapsed += delta
+ else:
+ selector.texture = frames[4]
diff --git a/src/ui/main_menu/sprites/selector.png b/src/ui/main_menu/sprites/selector.png
new file mode 100644
index 0000000..48a5678
--- /dev/null
+++ b/src/ui/main_menu/sprites/selector.png
Binary files differ
diff --git a/src/ui/main_menu/sprites/selector.png.import b/src/ui/main_menu/sprites/selector.png.import
new file mode 100644
index 0000000..c327b8f
--- /dev/null
+++ b/src/ui/main_menu/sprites/selector.png.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/selector.png-bd5373564ca790ce40721086d248728a.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://ui/main_menu/sprites/selector.png"
+dest_files=[ "res://.import/selector.png-bd5373564ca790ce40721086d248728a.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=false
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=false
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=false
+svg/scale=1.0
diff --git a/src/ui/main_menu/sprites/selector1.png b/src/ui/main_menu/sprites/selector1.png
new file mode 100644
index 0000000..b516e93
--- /dev/null
+++ b/src/ui/main_menu/sprites/selector1.png
Binary files differ
diff --git a/src/ui/main_menu/sprites/selector1.png.import b/src/ui/main_menu/sprites/selector1.png.import
new file mode 100644
index 0000000..322198e
--- /dev/null
+++ b/src/ui/main_menu/sprites/selector1.png.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/selector1.png-b6d09b162403970de2678bdb1de12abb.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://ui/main_menu/sprites/selector1.png"
+dest_files=[ "res://.import/selector1.png-b6d09b162403970de2678bdb1de12abb.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=false
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=false
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=false
+svg/scale=1.0
diff --git a/src/ui/main_menu/sprites/selector2.png b/src/ui/main_menu/sprites/selector2.png
new file mode 100644
index 0000000..93547db
--- /dev/null
+++ b/src/ui/main_menu/sprites/selector2.png
Binary files differ
diff --git a/src/ui/main_menu/sprites/selector2.png.import b/src/ui/main_menu/sprites/selector2.png.import
new file mode 100644
index 0000000..6bb6018
--- /dev/null
+++ b/src/ui/main_menu/sprites/selector2.png.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/selector2.png-0419bb1259e0efa492a2ce8346b72d74.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://ui/main_menu/sprites/selector2.png"
+dest_files=[ "res://.import/selector2.png-0419bb1259e0efa492a2ce8346b72d74.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=false
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=false
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=false
+svg/scale=1.0
diff --git a/src/ui/main_menu/sprites/selector3.png b/src/ui/main_menu/sprites/selector3.png
new file mode 100644
index 0000000..0e468c2
--- /dev/null
+++ b/src/ui/main_menu/sprites/selector3.png
Binary files differ
diff --git a/src/ui/main_menu/sprites/selector3.png.import b/src/ui/main_menu/sprites/selector3.png.import
new file mode 100644
index 0000000..17be43b
--- /dev/null
+++ b/src/ui/main_menu/sprites/selector3.png.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/selector3.png-e7eb1264fbb84184dcddc29017bcfac0.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://ui/main_menu/sprites/selector3.png"
+dest_files=[ "res://.import/selector3.png-e7eb1264fbb84184dcddc29017bcfac0.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=false
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=false
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=false
+svg/scale=1.0
diff --git a/src/ui/main_menu/sprites/selector4.png b/src/ui/main_menu/sprites/selector4.png
new file mode 100644
index 0000000..7d2ee70
--- /dev/null
+++ b/src/ui/main_menu/sprites/selector4.png
Binary files differ
diff --git a/src/ui/main_menu/sprites/selector4.png.import b/src/ui/main_menu/sprites/selector4.png.import
new file mode 100644
index 0000000..5cb135e
--- /dev/null
+++ b/src/ui/main_menu/sprites/selector4.png.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/selector4.png-c3312c451267db277e5279e15c3e9dc2.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://ui/main_menu/sprites/selector4.png"
+dest_files=[ "res://.import/selector4.png-c3312c451267db277e5279e15c3e9dc2.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=false
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=false
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=false
+svg/scale=1.0
diff --git a/src/ui/main_menu/sprites/selector5.png b/src/ui/main_menu/sprites/selector5.png
new file mode 100644
index 0000000..5e4988e
--- /dev/null
+++ b/src/ui/main_menu/sprites/selector5.png
Binary files differ
diff --git a/src/ui/main_menu/sprites/selector5.png.import b/src/ui/main_menu/sprites/selector5.png.import
new file mode 100644
index 0000000..9282f51
--- /dev/null
+++ b/src/ui/main_menu/sprites/selector5.png.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/selector5.png-57a6bf00d882484ef5ce3c35f8ecea76.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://ui/main_menu/sprites/selector5.png"
+dest_files=[ "res://.import/selector5.png-57a6bf00d882484ef5ce3c35f8ecea76.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=false
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=false
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=false
+svg/scale=1.0