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,135 @@
extends Window
@onready var inventoryDisplayer = %InventoryDisplayer
var shownBasket
var messageFadeDelay = 1
var messageFadeSpeed = 1
func _ready():
inventoryDisplayer.buttonPressed.connect(place_basket)
inventoryDisplayer.set_title("Baskets")
func _process(delta):
if %Message.self_modulate.a > 0:
if messageFadeDelay > 0:
messageFadeDelay -= delta
else:
%Message.self_modulate.a -= (messageFadeSpeed * delta)
func opened():
get_tree().paused = true
%Message.self_modulate.a = 0
shownBasket = get_parent().get_current_basket()
initialize_inventory()
update_basket_display()
func initialize_inventory():
var playerInventory = InventoryManager.get_inventory()
inventoryDisplayer.inventory = filter_inventory(playerInventory)
inventoryDisplayer.update_display()
func update_inventory():
inventoryDisplayer.update_display()
func update_basket_display():
if shownBasket != null:
%BasketSprite.texture = shownBasket.get_sprite()
else:
%BasketSprite.texture = null
if shownBasket != null:
var maxSpace = BasketWeaving.get_basket_space(shownBasket)
var spaceUsed = get_parent().get_used_space(shownBasket)
%BasketSpace.text = "Space: " + str(spaceUsed) + "/" + str(maxSpace)
if maxSpace < spaceUsed:
%BasketSpace.set("theme_override_colors/font_color", Color.RED)
else:
%BasketSpace.set("theme_override_colors/font_color", Color.WHITE)
else:
%BasketSpace.text = "Space: 0/0"
if shownBasket != null:
%BasketName.text = shownBasket.get_name()
else:
%BasketName.text = "No basket placed"
if shownBasket != null:
%ReturnButton.visible = true
else:
%ReturnButton.visible = false
func remove_basket():
if shownBasket != null:
inventoryDisplayer.inventory.add_item(shownBasket)
shownBasket = null
update_inventory()
update_basket_display()
func place_basket(basket):
if shownBasket != null:
inventoryDisplayer.inventory.add_item(shownBasket)
inventoryDisplayer.inventory.remove_item(basket)
shownBasket = basket
update_inventory()
update_basket_display()
func filter_inventory(inventory):
var filteredInv:Inventory = inventory.duplicate()
var i = filteredInv.items.size() - 1
while i >= 0:
var currentItem:Item = filteredInv.items[i]
if not Item.types.Basket in currentItem.itemTypes:
filteredInv.remove_item(currentItem, filteredInv.quantities[i])
i -= 1
return filteredInv
func not_enough_space_message():
%Message.self_modulate.a = 1
messageFadeDelay = 1
func _on_confirm_button_pressed():
var maxSpace = 0
if shownBasket != null:
maxSpace = BasketWeaving.get_basket_space(shownBasket)
var spaceUsed = get_parent().get_used_space(shownBasket)
if spaceUsed > maxSpace:
if shownBasket == null:
%Message.text = "Empty basket contents first"
else:
%Message.text = "Not Enough Space in New Basket"
not_enough_space_message()
return
get_parent().change_current_basket(shownBasket)
get_parent().update_basket_display()
if shownBasket.get_name(false) == "Wustard Basket":
var wustardItems = 0
var basketInv = InventoryManager.get_inventory(get_parent().basketInvName)
for item:Item in basketInv.items:
if item.get_name().contains("Wustard") and !item.get_name().contains("Empty"):
wustardItems += 1
if wustardItems >= 5:
AchievementManager.complete_achievement("Wustard Lover")
break
get_tree().paused = false
hide()
func _on_cancel_button_pressed():
get_tree().paused = false
hide()
func _on_return_button_pressed():
remove_basket()

View file

@ -0,0 +1,183 @@
[gd_scene load_steps=7 format=3 uid="uid://k2okvt6ol7r3"]
[ext_resource type="PackedScene" uid="uid://c3ku75p4ep3c7" path="res://UI/Inventory/InventoryDisplayer.tscn" id="1_kofvl"]
[ext_resource type="Script" path="res://UI/BasketStorage/BasketPlacingWindow.gd" id="1_mwxs2"]
[ext_resource type="Texture2D" uid="uid://bbmlkil40xcbc" path="res://MiscArt/WhiteCircle.png" id="2_ru54q"]
[ext_resource type="Texture2D" uid="uid://dlxnk74anrjt7" path="res://Items/Basket/BaseItem/BasketBasket.png" id="3_qvqwn"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_iimgq"]
bg_color = Color(0.419608, 0.223529, 0.141176, 1)
border_width_left = 4
border_width_top = 4
border_width_right = 4
border_width_bottom = 4
border_color = Color(0, 0, 0, 1)
[sub_resource type="FontVariation" id="FontVariation_plq2c"]
spacing_bottom = -14
[node name="BasketPlacingWindow" type="Window"]
process_mode = 3
size = Vector2i(600, 500)
borderless = true
script = ExtResource("1_mwxs2")
[node name="PanelContainer" type="PanelContainer" parent="."]
custom_minimum_size = Vector2(600, 500)
offset_right = 40.0
offset_bottom = 40.0
theme_override_styles/panel = SubResource("StyleBoxFlat_iimgq")
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
layout_mode = 2
theme_override_constants/separation = 13
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 0
theme_override_colors/font_color = Color(0.960784, 0.713726, 0.494118, 1)
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 16
theme_override_font_sizes/font_size = 32
text = "Basket Placing"
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 = 14
theme_override_constants/margin_right = 14
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/MarginContainer"]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/separation = 14
[node name="InventoryDisplayer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer" instance=ExtResource("1_kofvl")]
unique_name_in_owner = true
layout_mode = 2
[node name="PanelContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
mouse_filter = 2
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/PanelContainer"]
layout_mode = 2
theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 0
theme_override_constants/margin_bottom = 10
[node name="VSplitContainer" type="VSplitContainer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/PanelContainer/MarginContainer"]
layout_mode = 2
split_offset = 400
dragger_visibility = 2
[node name="VBoxContainer" type="VSplitContainer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/PanelContainer/MarginContainer/VSplitContainer"]
layout_mode = 2
collapsed = true
dragger_visibility = 2
[node name="BasketName" type="Label" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/PanelContainer/MarginContainer/VSplitContainer/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 2
size_flags_stretch_ratio = 0.4
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 8
theme_override_constants/line_spacing = 0
theme_override_fonts/font = SubResource("FontVariation_plq2c")
theme_override_font_sizes/font_size = 35
text = "Basket"
horizontal_alignment = 1
vertical_alignment = 2
autowrap_mode = 2
[node name="BasketSpace" type="Label" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/PanelContainer/MarginContainer/VSplitContainer/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 2
size_flags_stretch_ratio = 0.08
theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 8
theme_override_constants/line_spacing = 0
theme_override_fonts/font = SubResource("FontVariation_plq2c")
theme_override_font_sizes/font_size = 35
text = "Space: 5/20"
horizontal_alignment = 1
vertical_alignment = 1
autowrap_mode = 2
[node name="ReturnButton" type="Button" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/PanelContainer/MarginContainer/VSplitContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
size_flags_horizontal = 4
text = " Remove "
[node name="Outline" type="Sprite2D" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/PanelContainer"]
self_modulate = Color(0.713726, 0.713726, 0.713726, 1)
position = Vector2(140, 160)
scale = Vector2(0.2, 0.2)
texture = ExtResource("2_ru54q")
[node name="BasketSprite" type="Sprite2D" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/PanelContainer"]
unique_name_in_owner = true
position = Vector2(144, 198)
scale = Vector2(3, 3)
texture = ExtResource("3_qvqwn")
[node name="MarginContainer2" type="MarginContainer" parent="PanelContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 47
theme_override_constants/margin_right = 42
theme_override_constants/margin_bottom = 10
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/MarginContainer2"]
layout_mode = 2
alignment = 1
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/MarginContainer2/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_left = 0
theme_override_constants/margin_right = 45
[node name="ConfirmButton" type="Button" parent="PanelContainer/VBoxContainer/MarginContainer2/HBoxContainer/MarginContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "Confirm"
[node name="CancelButton" type="Button" parent="PanelContainer/VBoxContainer/MarginContainer2/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 8
text = "Cancel"
[node name="Message" type="Label" parent="."]
unique_name_in_owner = true
self_modulate = Color(1, 1, 1, 0)
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -239.5
offset_top = -22.5
offset_right = 239.5
offset_bottom = 22.5
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme_override_colors/font_color = Color(1, 0, 0, 1)
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 12
theme_override_font_sizes/font_size = 30
text = "Not Enough Space in New Basket"
horizontal_alignment = 1
[connection signal="pressed" from="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/PanelContainer/MarginContainer/VSplitContainer/ReturnButton" to="." method="_on_return_button_pressed"]
[connection signal="pressed" from="PanelContainer/VBoxContainer/MarginContainer2/HBoxContainer/MarginContainer/ConfirmButton" to="." method="_on_confirm_button_pressed"]
[connection signal="pressed" from="PanelContainer/VBoxContainer/MarginContainer2/HBoxContainer/CancelButton" to="." method="_on_cancel_button_pressed"]

View file

@ -0,0 +1,145 @@
extends Window
var basketInventoryName
func _ready():
basketInventoryName = get_parent().basketInvName
%InventoryDisplayer.fiveButtons = true
%InventoryDisplayer.allButtons = true
%InventoryDisplayer.buttonPressed.connect(store_item_request)
%InventoryDisplayer.fiveButtonPressed.connect(store_item_request.bind(5))
%InventoryDisplayer.allButtonPressed.connect(store_item_request.bind(999999))
%InventoryDisplayer.set_title("Inventory")
%BasketInventoryDisplayer.fiveButtons = true
%BasketInventoryDisplayer.allButtons = true
%BasketInventoryDisplayer.buttonPressed.connect(withdraw_item_request)
%BasketInventoryDisplayer.fiveButtonPressed.connect(withdraw_item_request.bind(5))
%BasketInventoryDisplayer.allButtonPressed.connect(withdraw_item_request.bind(999999))
%BasketInventoryDisplayer.set_title("Basket Inventory")
update_displays()
func opened():
get_tree().paused = true
update_displays()
func update_displays():
update_inventory_displays()
update_space_display()
func update_space_display():
var basketSpace = get_parent().get_current_basket_space()
var basketSpaceUsed = get_parent().get_used_space()
%SpaceLabel.text = "Space: " + str(basketSpaceUsed) + "/" + str(basketSpace)
func update_inventory_displays():
%InventoryDisplayer.inventory = InventoryManager.get_inventory()
%InventoryDisplayer.update_display()
%BasketInventoryDisplayer.inventory = InventoryManager.get_inventory(basketInventoryName)
%BasketInventoryDisplayer.update_display()
func store_item_request(item, amount = 1):
var itemsInInv = InventoryManager.get_item_count(item)
if itemsInInv < amount:
amount = itemsInInv
if not (SaveManager.get_save_value("ambiQuestComplete", false) and get_parent().infinite_check(item)):
var basketSpaceLeft = get_parent().get_basket_space_left()
if amount > basketSpaceLeft:
amount = basketSpaceLeft
if amount > 0:
store_item(item, amount)
else:
no_room_message()
func no_room_message():
pass
func store_item(item, amount):
InventoryManager.remove_item_from_inventory(item, amount)
var basketItem:Item = get_parent().get_current_basket()
if Item.modifications.Wet in basketItem.itemModifications:
var newItem:Item = ItemSoaking.wet_item(item)
if amount >= 100 and !newItem.equals(item):
AchievementManager.complete_achievement("Leaky Basket")
InventoryManager.add_item_to_inventory(item, amount, basketInventoryName)
update_displays()
func withdraw_item_request(item, amount = 1):
var itemsInStorage = InventoryManager.get_item_count(item, basketInventoryName)
if itemsInStorage < amount:
amount = itemsInStorage
if amount > 0:
withdraw_item(item, amount)
func withdraw_item(item, amount):
InventoryManager.remove_item_from_inventory(item, amount, basketInventoryName)
InventoryManager.add_item_to_inventory(item, amount)
update_displays()
func achievement_checks():
var achievementSets = [["1 Fancy Skeleton",
["Crystal Bone",
"Dirt Bone",
"Haunted Bone",
"Licorice Bone",
"Parallelogram Bone",
"Pretzel Bone",
"Redby Bone",
"Rex Bone",
"Rock Bone",
"Square Bone",
"Zucchini Bone"], false],
["Portable Biodome",
["Amethyst Deceiver",
"Blue Pinkgill",
"Hairy Curtain Crust",
"Lions Mane",
"Mycena Chlorophos",
"Veiled Lady",
"Wolfs Milk Slime Mould"], false]
]
for achievementSet in achievementSets:
var achievementName = achievementSet[0]
var modified = achievementSet[2]
var itemNames = achievementSet[1]
var allAccountedFor = true
for itemName in itemNames:
var itemsInInv = InventoryManager.get_item_count_by_name(itemName, basketInventoryName, modified)
if itemsInInv <= 0:
allAccountedFor = false
break
if allAccountedFor:
AchievementManager.complete_achievement(achievementName)
#Wustard Lover Achievement
var basketItem = get_parent().get_current_basket()
if basketItem != null and basketItem.get_name(false) == "Wustard Basket":
var wustardItems = 0
var basketInv = InventoryManager.get_inventory(basketInventoryName)
for item:Item in basketInv.items:
if item.get_name().contains("Wustard") and !item.get_name().contains("Empty"):
wustardItems += 1
if wustardItems >= 5:
AchievementManager.complete_achievement("Wustard Lover")
break
func _on_leave_button_pressed():
achievement_checks()
get_tree().paused = false
hide()

View file

@ -0,0 +1,84 @@
[gd_scene load_steps=4 format=3 uid="uid://cgp2l1mosnko"]
[ext_resource type="Script" path="res://UI/BasketStorage/BasketStorageWindow.gd" id="1_udu18"]
[ext_resource type="PackedScene" uid="uid://c3ku75p4ep3c7" path="res://UI/Inventory/InventoryDisplayer.tscn" id="2_gt4sc"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_iimgq"]
bg_color = Color(0.419608, 0.223529, 0.141176, 1)
border_width_left = 4
border_width_top = 4
border_width_right = 4
border_width_bottom = 4
border_color = Color(0, 0, 0, 1)
[node name="BasketStorageWindow" type="Window"]
process_mode = 3
size = Vector2i(600, 500)
borderless = true
script = ExtResource("1_udu18")
[node name="PanelContainer" type="PanelContainer" parent="."]
custom_minimum_size = Vector2(600, 500)
offset_right = 40.0
offset_bottom = 40.0
theme_override_styles/panel = SubResource("StyleBoxFlat_iimgq")
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
layout_mode = 2
theme_override_constants/separation = 13
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 0
theme_override_colors/font_color = Color(0.960784, 0.713726, 0.494118, 1)
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 16
theme_override_font_sizes/font_size = 32
text = "Basket Storage"
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 = 14
theme_override_constants/margin_right = 14
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/MarginContainer"]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/separation = 14
[node name="InventoryDisplayer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer" instance=ExtResource("2_gt4sc")]
unique_name_in_owner = true
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="BasketInventoryDisplayer" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer" instance=ExtResource("2_gt4sc")]
unique_name_in_owner = true
layout_mode = 2
[node name="SpaceLabel" type="Label" parent="PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 11
theme_override_font_sizes/font_size = 26
text = "Space: 0/0"
horizontal_alignment = 1
[node name="MarginContainer2" type="MarginContainer" parent="PanelContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 47
theme_override_constants/margin_right = 42
theme_override_constants/margin_bottom = 10
[node name="LeaveButton" type="Button" parent="PanelContainer/VBoxContainer/MarginContainer2"]
layout_mode = 2
size_flags_horizontal = 4
text = "Leave"
[connection signal="pressed" from="PanelContainer/VBoxContainer/MarginContainer2/LeaveButton" to="." method="_on_leave_button_pressed"]