do the thing!

This commit is contained in:
zoe 2021-12-06 03:12:54 +01:00
parent b5ca89ac89
commit 212144bbc4
17 changed files with 240 additions and 20 deletions

View file

@ -0,0 +1,3 @@
source_md5="7f5e4fa7b0f78f8ba98b978e52ef7dbb"
dest_md5="743e6a634dc4af669c023a174d3a9d01"

View file

@ -0,0 +1,3 @@
source_md5="838dd6baad51851be3834b6cb20ac296"
dest_md5="ed437917dafe3014b7da5f5cfe5bb1ee"

BIN
Menu/enough_water.wav Normal file

Binary file not shown.

View file

@ -0,0 +1,21 @@
[remap]
importer="wav"
type="AudioStreamSample"
path="res://.import/enough_water.wav-7e11a042805efd23a3276c0d587fde75.sample"
[deps]
source_file="res://Menu/enough_water.wav"
dest_files=[ "res://.import/enough_water.wav-7e11a042805efd23a3276c0d587fde75.sample" ]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop=false
compress/mode=0

BIN
Music/WaterSFX.wav Normal file

Binary file not shown.

21
Music/WaterSFX.wav.import Normal file
View file

@ -0,0 +1,21 @@
[remap]
importer="wav"
type="AudioStreamSample"
path="res://.import/WaterSFX.wav-4fedf5f92696ac909f744f77fd4c2177.sample"
[deps]
source_file="res://Music/WaterSFX.wav"
dest_files=[ "res://.import/WaterSFX.wav-4fedf5f92696ac909f744f77fd4c2177.sample" ]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop=false
compress/mode=0

View file

@ -4,9 +4,9 @@ var watering = false
func _on_WateringCan_pressed(): func _on_WateringCan_pressed():
watering = !watering watering = !watering
if watering: if watering:
$Timer.start(1) $Timer.start(0.1)
$Particles2D.emitting = true $WaterParticles.emitting = true
if !watering: if !watering:
$Timer.stop() $Timer.stop()
$Particles2D.emitting = false $WaterParticles.emitting = false

View file

@ -0,0 +1,4 @@
extends Particles2D
func _on_Delete_timeout() -> void:
queue_free()

View file

@ -0,0 +1,31 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://World/GoodAndWellBalancedWaterParticles.gd" type="Script" id=1]
[sub_resource type="ParticlesMaterial" id=14]
lifetime_randomness = 1.0
flag_disable_z = true
direction = Vector3( 0, -1, 0 )
spread = 90.0
gravity = Vector3( 0, 10, 0 )
initial_velocity = 24.0
initial_velocity_random = 1.0
orbit_velocity = 0.0
orbit_velocity_random = 0.0
color = Color( 0.341176, 0.337255, 0.756863, 1 )
[node name="GoodAndWellBalancedWaterParticles" type="Particles2D"]
position = Vector2( 0, -3 )
z_index = 2
emitting = false
amount = 32
lifetime = 2.0
explosiveness = 1.0
randomness = 1.0
process_material = SubResource( 14 )
script = ExtResource( 1 )
[node name="Delete" type="Timer" parent="."]
wait_time = 0.5
[connection signal="timeout" from="Delete" to="." method="_on_Delete_timeout"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=22 format=2] [gd_scene load_steps=23 format=2]
[ext_resource path="res://World/Plant.tscn" type="PackedScene" id=1] [ext_resource path="res://World/Plant.tscn" type="PackedScene" id=1]
[ext_resource path="res://World/FullscreenButton.gd" type="Script" id=2] [ext_resource path="res://World/FullscreenButton.gd" type="Script" id=2]
@ -14,6 +14,7 @@
[ext_resource path="res://Aseprite/wateringcan.png" type="Texture" id=12] [ext_resource path="res://Aseprite/wateringcan.png" type="Texture" id=12]
[ext_resource path="res://Tools/WateringCan.gd" type="Script" id=13] [ext_resource path="res://Tools/WateringCan.gd" type="Script" id=13]
[ext_resource path="res://Aseprite/wateringcanactive.png" type="Texture" id=14] [ext_resource path="res://Aseprite/wateringcanactive.png" type="Texture" id=14]
[ext_resource path="res://World/Pot.gd" type="Script" id=15]
[sub_resource type="Theme" id=7] [sub_resource type="Theme" id=7]
@ -28,7 +29,7 @@ expand_margin_right = 2.0
[sub_resource type="CanvasItemMaterial" id=3] [sub_resource type="CanvasItemMaterial" id=3]
[sub_resource type="DynamicFont" id=4] [sub_resource type="DynamicFont" id=4]
size = 8 size = 6
extra_spacing_char = 1 extra_spacing_char = 1
font_data = ExtResource( 10 ) font_data = ExtResource( 10 )
@ -79,9 +80,9 @@ __meta__ = {
[node name="MusicVolume" type="VSlider" parent="Options"] [node name="MusicVolume" type="VSlider" parent="Options"]
margin_left = 1.0 margin_left = 1.0
margin_top = 1.0 margin_top = 62.0
margin_right = 17.0 margin_right = 17.0
margin_bottom = 120.0 margin_bottom = 122.0
custom_icons/tick = ExtResource( 7 ) custom_icons/tick = ExtResource( 7 )
custom_icons/grabber_disabled = ExtResource( 7 ) custom_icons/grabber_disabled = ExtResource( 7 )
custom_icons/grabber_highlight = ExtResource( 8 ) custom_icons/grabber_highlight = ExtResource( 8 )
@ -95,6 +96,25 @@ __meta__ = {
} }
bus_channel = "Music" bus_channel = "Music"
[node name="SFXVolume" type="VSlider" parent="Options"]
margin_left = 1.0
margin_top = 1.0
margin_right = 17.0
margin_bottom = 61.0
rect_scale = Vector2( 1, 0.99844 )
custom_icons/tick = ExtResource( 7 )
custom_icons/grabber_disabled = ExtResource( 7 )
custom_icons/grabber_highlight = ExtResource( 8 )
custom_icons/grabber = ExtResource( 7 )
custom_styles/slider = SubResource( 2 )
max_value = 1.0
step = 0.1
script = ExtResource( 6 )
__meta__ = {
"_edit_use_anchors_": false
}
bus_channel = "SFX"
[node name="RightPanel" type="Panel" parent="."] [node name="RightPanel" type="Panel" parent="."]
margin_left = 128.0 margin_left = 128.0
margin_top = 2.0 margin_top = 2.0
@ -125,7 +145,9 @@ __meta__ = {
} }
[node name="Reveal" type="Timer" parent="RightPanel/Terminal"] [node name="Reveal" type="Timer" parent="RightPanel/Terminal"]
wait_time = 0.15 wait_time = 0.05
[node name="MessageTimer" type="Timer" parent="RightPanel/Terminal"]
[node name="WateringCan" type="TextureButton" parent="RightPanel"] [node name="WateringCan" type="TextureButton" parent="RightPanel"]
margin_left = 2.0 margin_left = 2.0
@ -143,8 +165,9 @@ __meta__ = {
[node name="Timer" type="Timer" parent="RightPanel/WateringCan"] [node name="Timer" type="Timer" parent="RightPanel/WateringCan"]
[node name="Particles2D" type="Particles2D" parent="RightPanel/WateringCan"] [node name="WaterParticles" type="Particles2D" parent="RightPanel/WateringCan"]
position = Vector2( -56, -1 ) position = Vector2( -56, -1 )
z_index = 2
emitting = false emitting = false
amount = 15 amount = 15
lifetime = 0.5 lifetime = 0.5
@ -153,10 +176,15 @@ process_material = SubResource( 13 )
[node name="Pot" type="Sprite" parent="."] [node name="Pot" type="Sprite" parent="."]
position = Vector2( 64, 136 ) position = Vector2( 64, 136 )
texture = ExtResource( 9 ) texture = ExtResource( 9 )
script = ExtResource( 15 )
[connection signal="good_water" from="Plant" to="Pot" method="_on_Plant_good_water"]
[connection signal="has_need" from="Plant" to="RightPanel/Terminal" method="_on_Plant_has_need"] [connection signal="has_need" from="Plant" to="RightPanel/Terminal" method="_on_Plant_has_need"]
[connection signal="pressed" from="Options/FullscreenButton" to="Options/FullscreenButton" method="_on_FullscreenButton_pressed"] [connection signal="pressed" from="Options/FullscreenButton" to="Options/FullscreenButton" method="_on_FullscreenButton_pressed"]
[connection signal="value_changed" from="Options/MusicVolume" to="Options/MusicVolume" method="_on_MusicVolume_value_changed"] [connection signal="value_changed" from="Options/MusicVolume" to="Options/MusicVolume" method="_on_MusicVolume_value_changed"]
[connection signal="value_changed" from="Options/SFXVolume" to="Options/SFXVolume" method="_on_MusicVolume_value_changed"]
[connection signal="was_social" from="RightPanel/Terminal" to="Plant" method="_on_Terminal_was_social"]
[connection signal="timeout" from="RightPanel/Terminal/Reveal" to="RightPanel/Terminal" method="_on_Reveal_timeout"] [connection signal="timeout" from="RightPanel/Terminal/Reveal" to="RightPanel/Terminal" method="_on_Reveal_timeout"]
[connection signal="timeout" from="RightPanel/Terminal/MessageTimer" to="RightPanel/Terminal" method="_on_MessageTimer_timeout"]
[connection signal="pressed" from="RightPanel/WateringCan" to="RightPanel/WateringCan" method="_on_WateringCan_pressed"] [connection signal="pressed" from="RightPanel/WateringCan" to="RightPanel/WateringCan" method="_on_WateringCan_pressed"]
[connection signal="timeout" from="RightPanel/WateringCan/Timer" to="Plant" method="add_water"] [connection signal="timeout" from="RightPanel/WateringCan/Timer" to="Plant" method="add_water"]

View file

@ -10,8 +10,11 @@ var water = 20
var health = 100 var health = 100
var social = 50 var social = 50
var light = 50 var light = 50
var last_need = ["x", -100] var last_need = ["x", -100, -100]
var was_silent = false
signal good_water()
signal has_need(need_and_value) signal has_need(need_and_value)
func get_mood() -> int: func get_mood() -> int:
@ -27,26 +30,30 @@ func _process(_delta):
func step(): func step():
$Timer.wait_time = float(get_mood()) / 100 + 0.25 $Timer.wait_time = abs(float(get_mood()) / 100) + 0.25
call_deferred("grow") call_deferred("grow")
if (randi() % 200 == 0) && (get_mood() < 50): if (randi() % 200 == 0) && (get_mood() < 50):
blossom() blossom()
communicate_needs() communicate_needs()
func communicate_needs(): func communicate_needs():
var needs = [(50 - water) * 2, 100 - health, 100 - social, (50 - light) * 2] var needs = [abs((50 - water) * 2), 100 - health, 100 - social, abs((50 - light) * 2)]
var most_important = [0, needs[0]] var needs_for_real = [water, health, social, light]
var most_important = ["cool name sample text", needs[0], needs_for_real[0]]
var i = 0 var i = 0
for need in needs: for need in needs:
if most_important[1] <= need: if most_important[1] <= need:
most_important[1] = need most_important[1] = need
most_important[2] = needs_for_real[i]
most_important[0] = i most_important[0] = i
i += 1 i += 1
var names = ["water", "health", "social", "light"] var names = ["water", "health", "social", "light"]
most_important[0] = names[most_important[0]] most_important[0] = names[most_important[0]]
if (last_need[0] != most_important[0]) || (abs(last_need[1] - most_important[1]) >= 10): if (last_need[0] != most_important[0]) || (abs(last_need[1] - most_important[1]) >= 10) || was_silent:
emit_signal("has_need", most_important) emit_signal("has_need", most_important)
last_need = most_important last_need = most_important
was_silent = false
$TalkTimer.start(15)
func _ready(): func _ready():
@ -118,8 +125,19 @@ func blossom():
func _on_WaterTimer_timeout() -> void: func _on_WaterTimer_timeout() -> void:
water = clamp(water - 1, 0, 100) water = clamp(water - 1, 0, 100)
social = clamp(social - 2, 0, 100)
func add_water(): func add_water():
water = clamp(water + 1, 0, 100) water = clamp(water + 1, 0, 100)
print(water) if water == 55:
$WaterSFX.play(0)
emit_signal("good_water")
func _on_TalkTimer_timeout() -> void:
was_silent = true
func _on_Terminal_was_social() -> void:
social += clamp(social + randi() % 11, 0, 10)

View file

@ -1,5 +1,6 @@
[gd_scene load_steps=2 format=2] [gd_scene load_steps=3 format=2]
[ext_resource path="res://Music/WaterSFX.wav" type="AudioStream" id=1]
[ext_resource path="res://World/Plant.gd" type="Script" id=2] [ext_resource path="res://World/Plant.gd" type="Script" id=2]
[node name="Plant" type="Node2D"] [node name="Plant" type="Node2D"]
@ -13,5 +14,12 @@ autostart = true
wait_time = 20.0 wait_time = 20.0
autostart = true autostart = true
[node name="TalkTimer" type="Timer" parent="."]
[node name="WaterSFX" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 1 )
bus = "SFX"
[connection signal="timeout" from="Timer" to="." method="step"] [connection signal="timeout" from="Timer" to="." method="step"]
[connection signal="timeout" from="WaterTimer" to="." method="_on_WaterTimer_timeout"] [connection signal="timeout" from="WaterTimer" to="." method="_on_WaterTimer_timeout"]
[connection signal="timeout" from="TalkTimer" to="." method="_on_TalkTimer_timeout"]

13
World/Pot.gd Normal file
View file

@ -0,0 +1,13 @@
extends Sprite
func _on_Plant_good_water() -> void:
var main = get_tree().current_scene
var Particle = preload("res://World/GoodAndWellBalancedWaterParticles.tscn")
var particle = Particle.instance()
particle.one_shot = true
particle.emitting = true
main.add_child(particle)
particle.global_position = global_position
particle.global_position.y -= 2

View file

@ -1,17 +1,81 @@
extends RichTextLabel extends RichTextLabel
signal was_social()
var can_show_mesage = true
var last = "sample tess"
var water_msg_low = [
"Please water me :o",
"I'm THIRSTY i could drink a [shake rate=10 level=2]100!!![/shake] ... somethings"
]
var water_msg_high = [
"EEE! Too wet!!!",
"The pot is like a swamp... :(",
"I need to dry!!!",
"Wet wet wet!!!! AAAAAA",
"Way too wet :( If this was nintendo ds game i would ask you to blow into the microphone, but [shake rate=10 level=2]NO![/shake]"
]
var water_msg_good = [
"Comfy wet soil :)",
"Thank you!!!",
"Thank you for taking such good care of me!",
"When i'm happy i grow [shake rate=10 level=2]flowers[/shake]!"
]
var social = [
"You ever think about bees?",
"You like [wave amp=24 freq=2]Jazz[/wave]?",
"Trans rights!",
"[wave amp=24 freq=2]eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee[/wave]",
"Fun fact! [wave amp=24 freq=2]uhhhhidk[/wave]",
"Look up cool bug facts and tell me one! Quick!!!",
"Ladybirds play dead to avoid predators. Don't we all sometimes...",
"Do you ever forget if you already told someone something and then you just tell them like [shake rate=10 level=2]50 times[/shake]? Yeah.",
"If i had to fight someone i would simply look up the weaknesses section on their wikipedia page.",
]
func _ready() -> void: func _ready() -> void:
visible_characters = 0 visible_characters = 0
func _on_Plant_has_need(need_and_value) -> void: func _on_Plant_has_need(need_and_values) -> void:
print_message(need_and_value) if need_and_values[0] == "water":
tell_about_water(need_and_values)
if need_and_values[0] == "social" && can_show_mesage:
tell_about_social()
func tell_about_social():
print_message(social[randi() % social.size()])
emit_signal("was_social")
func tell_about_water(need_and_values):
if need_and_values[2] > 60:
if !(last == "high_water"): can_show_mesage = true
print_message(water_msg_high[randi() % water_msg_high.size()])
last = "high_water"
elif need_and_values[2] < 40:
if !(last == "low_water"): can_show_mesage = true
print_message(water_msg_low[randi() % water_msg_low.size()])
last = "low_water"
else:
if !(last == "good_water"): can_show_mesage = true
print_message(water_msg_good[randi() % water_msg_good.size()])
last = "good_water"
func print_message(mesage): func print_message(mesage):
$Reveal.start() if can_show_mesage:
text = text + "\n >" + str(mesage) + "\n " $Reveal.start()
bbcode_text = bbcode_text + "\n>" + str(mesage) + "\n"
can_show_mesage = false
$MessageTimer.start(5)
func _on_Reveal_timeout() -> void: func _on_Reveal_timeout() -> void:
if visible_characters <= text.length(): if visible_characters <= text.length():
visible_characters += 1 visible_characters += 1
else: $Reveal.stop() else: $Reveal.stop()
func _on_MessageTimer_timeout() -> void:
can_show_mesage = true
if randi() % 3 == 0:
tell_about_social()

View file

@ -8,3 +8,9 @@ bus/1/mute = false
bus/1/bypass_fx = false bus/1/bypass_fx = false
bus/1/volume_db = -80.0 bus/1/volume_db = -80.0
bus/1/send = "Master" bus/1/send = "Master"
bus/2/name = "SFX"
bus/2/solo = false
bus/2/mute = false
bus/2/bypass_fx = false
bus/2/volume_db = 0.0
bus/2/send = "Master"