It's Cow Game! Version 2.04!

This commit is contained in:
PajamaBee 2024-09-19 23:06:51 -05:00
commit a9e1ed9ddd
3148 changed files with 95332 additions and 0 deletions

View file

@ -0,0 +1,6 @@
extends VBoxContainer
func show_achievement(achievement:Achievement):
%StickerSprite.texture = achievement.get_current_sprite()
%AchievementName.text = achievement.get_name()
%AchievementDescription.text = achievement.get_description()

View file

@ -0,0 +1,34 @@
[gd_scene load_steps=3 format=3 uid="uid://ctuytqfbdlvvl"]
[ext_resource type="Texture2D" uid="uid://byuj18rnowo4t" path="res://Achievements/AchievementScripts/Levels/Sprites/Walking20Achieved.png" id="1_3v18l"]
[ext_resource type="Script" path="res://UI/AchievementsMenu/AchievementDisplay.gd" id="1_54p10"]
[node name="AchievementDisplay" type="VBoxContainer"]
custom_minimum_size = Vector2(180, 0)
script = ExtResource("1_54p10")
[node name="StickerSprite" type="TextureRect" parent="."]
unique_name_in_owner = true
custom_minimum_size = Vector2(64, 64)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("1_3v18l")
[node name="AchievementName" type="Label" parent="."]
unique_name_in_owner = true
layout_mode = 2
text = "It's Walking Time"
horizontal_alignment = 1
[node name="ScrollContainer" type="ScrollContainer" parent="."]
custom_minimum_size = Vector2(0, 50)
layout_mode = 2
[node name="AchievementDescription" type="Label" parent="ScrollContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(175, 0)
layout_mode = 2
size_flags_horizontal = 6
text = "Play with a sugary worm on a string"
horizontal_alignment = 1
autowrap_mode = 3

View file

@ -0,0 +1,103 @@
extends Control
var categorySelectors = []
var achievementDisplays = []
var currentCategory
var currentAchievements
var currentPage
var pageSize
func _ready():
initialize()
spawn_category_buttons()
set_category(AchievementManager.get_categories()[0])
func opened():
get_tree().paused = true
update_category_buttons()
show_page(currentPage)
func close():
get_tree().paused = false
visible = false
func update_category_buttons():
for categorySelector in categorySelectors:
categorySelector.update_display()
func spawn_category_buttons():
var categorySelectorScene = load("res://UI/AchievementsMenu/CategorySelector.tscn")
var categories = AchievementManager.get_categories()
for category in categories:
var newSelector = categorySelectorScene.instantiate()
newSelector.set_category(category)
categorySelectors.append(newSelector)
%CategorySelectors.add_child(newSelector)
newSelector.pressed.connect(category_selector_clicked.bind(newSelector))
func category_selector_clicked(selector):
set_category(selector.get_category())
func set_category(category):
currentCategory = category
currentAchievements = category.get_achievements()
show_page(0)
func show_page(pageNum):
currentPage = pageNum
var pageAchievements = get_page_achievements()
for i in range(pageSize):
var currentDisplay = achievementDisplays[i]
if i < pageAchievements.size():
currentDisplay.visible = true
currentDisplay.show_achievement(pageAchievements[i])
else:
currentDisplay.visible = false
var maxPage = get_max_page()
%PageNumber.text = "Page " + str(pageNum + 1) + "/" + str(maxPage + 1)
update_page_buttons()
func get_page_achievements():
var firstIndex = currentPage * pageSize
var pageAchievements = []
for i in range(pageSize):
var currentIndex = firstIndex + i
if currentIndex < currentAchievements.size():
pageAchievements.append(currentAchievements[currentIndex])
else:
break
return pageAchievements
func get_max_page():
var maxPage = ceili(float(currentAchievements.size())/float(pageSize)) - 1
return maxPage
func update_page_buttons():
if currentPage <= 0:
%PageLeftButton.disabled = true
else:
%PageLeftButton.disabled = false
if currentPage >= get_max_page():
%PageRightButton.disabled = true
else:
%PageRightButton.disabled = false
func initialize():
achievementDisplays = %AchievementDisplays.get_children()
pageSize = achievementDisplays.size()
func _on_page_left_button_pressed():
show_page(currentPage - 1)
func _on_page_right_button_pressed():
show_page(currentPage + 1)
func _on_close_button_pressed():
close()

View file

@ -0,0 +1,161 @@
[gd_scene load_steps=6 format=3 uid="uid://dnt4r6t0qkc6g"]
[ext_resource type="Script" path="res://UI/AchievementsMenu/AchievementsMenu.gd" id="1_f2u73"]
[ext_resource type="PackedScene" uid="uid://ctuytqfbdlvvl" path="res://UI/AchievementsMenu/AchievementDisplay.tscn" id="2_d8wsb"]
[ext_resource type="PackedScene" uid="uid://bv25pnvc5mfkl" path="res://UI/Buttons/PageButtons/PageLeftButton.tscn" id="3_oanwh"]
[ext_resource type="PackedScene" uid="uid://dntmbosucrj4u" path="res://UI/Buttons/PageButtons/PageRightButton.tscn" id="4_k0eub"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4oavb"]
bg_color = Color(0.372549, 0.6, 0.6, 1)
border_width_left = 6
border_width_top = 6
border_width_right = 7
border_width_bottom = 6
[node name="AchievementsMenu" type="Control"]
process_mode = 3
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_f2u73")
[node name="PanelContainer" type="PanelContainer" parent="."]
custom_minimum_size = Vector2(650, 595)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -300.0
offset_top = -200.0
offset_right = 300.0
offset_bottom = 200.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_4oavb")
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
layout_mode = 2
[node name="AchievementsLabelMargin" type="MarginContainer" parent="PanelContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_top = 4
[node name="AchievementsLabel" type="Label" parent="PanelContainer/VBoxContainer/AchievementsLabelMargin"]
layout_mode = 2
theme_override_font_sizes/font_size = 32
text = "Achievements"
horizontal_alignment = 1
vertical_alignment = 2
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 7
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/MarginContainer"]
layout_mode = 2
size_flags_vertical = 3
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
[node name="CategoryZone" type="ScrollContainer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer"]
custom_minimum_size = Vector2(240, 0)
layout_mode = 2
size_flags_vertical = 3
[node name="CategorySelectors" type="VBoxContainer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer/CategoryZone"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_bottom = 8
[node name="CloseButton" type="Button" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer/MarginContainer"]
custom_minimum_size = Vector2(0, 40)
layout_mode = 2
theme_override_font_sizes/font_size = 22
text = "Close"
[node name="StickersZone" type="VBoxContainer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="AchievementDisplays" type="HFlowContainer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone"]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/h_separation = 17
alignment = 1
[node name="AchievementDisplay" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone/AchievementDisplays" instance=ExtResource("2_d8wsb")]
layout_mode = 2
[node name="AchievementDisplay2" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone/AchievementDisplays" instance=ExtResource("2_d8wsb")]
layout_mode = 2
[node name="AchievementDisplay3" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone/AchievementDisplays" instance=ExtResource("2_d8wsb")]
layout_mode = 2
[node name="AchievementDisplay4" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone/AchievementDisplays" instance=ExtResource("2_d8wsb")]
layout_mode = 2
[node name="AchievementDisplay5" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone/AchievementDisplays" instance=ExtResource("2_d8wsb")]
layout_mode = 2
[node name="AchievementDisplay6" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone/AchievementDisplays" instance=ExtResource("2_d8wsb")]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone"]
custom_minimum_size = Vector2(0, 65)
layout_mode = 2
size_flags_vertical = 10
theme_override_constants/margin_left = 30
theme_override_constants/margin_top = 6
theme_override_constants/margin_right = 30
theme_override_constants/margin_bottom = 6
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone/MarginContainer"]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/separation = 0
[node name="PageLeftButton" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone/MarginContainer/HBoxContainer" instance=ExtResource("3_oanwh")]
unique_name_in_owner = true
custom_minimum_size = Vector2(80, 0)
layout_mode = 2
size_flags_horizontal = 4
ignore_texture_size = true
stretch_mode = 0
[node name="PageNumber" type="Label" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone/MarginContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 6
theme_override_font_sizes/font_size = 25
text = "Page 3/1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="PageRightButton" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone/MarginContainer/HBoxContainer" instance=ExtResource("4_k0eub")]
unique_name_in_owner = true
custom_minimum_size = Vector2(80, 0)
layout_mode = 2
size_flags_horizontal = 4
ignore_texture_size = true
stretch_mode = 0
[connection signal="pressed" from="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer/MarginContainer/CloseButton" to="." method="_on_close_button_pressed"]
[connection signal="pressed" from="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone/MarginContainer/HBoxContainer/PageLeftButton" to="." method="_on_page_left_button_pressed"]
[connection signal="pressed" from="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/StickersZone/MarginContainer/HBoxContainer/PageRightButton" to="." method="_on_page_right_button_pressed"]

View file

@ -0,0 +1,34 @@
extends Button
var shownCategory
func get_category():
return shownCategory
func set_category(category):
shownCategory = category
update_display()
func update_display():
%CategoryTitle.text = shownCategory.get_category_name()
var completed = shownCategory.get_complete_count()
var total = shownCategory.get_achievement_count()
var percentage = floori((float(completed) / float(total)) * 100)
if completed > 0 and percentage <= 0:
percentage = 1
var progressCountText = str(completed) + "/" + str(total) + " - "
progressCountText += str(percentage) + "%"
%ProgressCount.text = progressCountText
%ProgressBar.max_value = total
%ProgressBar.value = completed
if completed >= total:
var greenFillBox:StyleBoxFlat = StyleBoxFlat.new()
greenFillBox.bg_color = Color.GREEN
%ProgressBar.set("theme_override_styles/fill", greenFillBox)

View file

@ -0,0 +1,52 @@
[gd_scene load_steps=4 format=3 uid="uid://b56fxgx8o2mr2"]
[ext_resource type="Script" path="res://UI/AchievementsMenu/CategorySelector.gd" id="1_sd6m4"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mcele"]
bg_color = Color(0.733333, 0.541176, 0.572549, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_y3isj"]
bg_color = Color(0.839216, 0.796078, 0, 1)
[node name="CategorySelector" type="Button"]
custom_minimum_size = Vector2(240, 80)
script = ExtResource("1_sd6m4")
[node name="ProgressBar" type="ProgressBar" parent="."]
unique_name_in_owner = true
custom_minimum_size = Vector2(220, 40)
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -110.0
offset_top = -40.0
offset_right = 110.0
grow_horizontal = 2
grow_vertical = 0
theme_override_styles/background = SubResource("StyleBoxFlat_mcele")
theme_override_styles/fill = SubResource("StyleBoxFlat_y3isj")
value = 40.0
show_percentage = false
[node name="VBoxContainer" type="VBoxContainer" parent="."]
custom_minimum_size = Vector2(240, 80)
layout_mode = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="CategoryTitle" type="Label" parent="VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_font_sizes/font_size = 26
text = "Levels"
horizontal_alignment = 1
[node name="ProgressCount" type="Label" parent="VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_font_sizes/font_size = 26
text = "1/1 - 100%"
horizontal_alignment = 1