AShadowWithoutLight/Main.gd

265 lines
6.1 KiB
GDScript3

extends Node
# Declare member variables here.
var wantToQuit = false
var mood = 0 #[-1,+1]
#taken pills that effects current state
var antiDep = 0
var moodStab = 0
var vision
var player
var averageDownPhase = 3
var averageUpPhase = 2
var averageStable = 2
var stableTimer
var maniaTimer
var depressionTimer
var secondsPerWeek = 10
var rng = RandomNumberGenerator.new()
var hudMood
var hudAnti
var hudStab
var takingPill = false
#smoothing curves points
var p0 = 0
var p1 = 0
var t = 0.0
var sun
var theEnd
# Called when the node enters the scene tree for the first time.
func _ready():
vision = $Player/CameraPivot/Camera
player = $Player
sun = $Lighting/Sun
hudMood = $HUD/debug/Mood
hudAnti = $HUD/debug/AntiDepActive
hudStab = $HUD/debug/MoodStabActive
stableTimer = $Timer/StableTimer
maniaTimer = $Timer/ManiaTimer
depressionTimer = $Timer/DepressionTimer
stableTimer.connect("timeout", self, "_on_StableTimer_timeout")
maniaTimer.connect("timeout", self, "_on_ManiaTimer_timeout")
depressionTimer.connect("timeout", self, "_on_DepressionTimer_timeout")
stableTimer.set_wait_time(secondsPerWeek*averageStable+rng.randf_range(-secondsPerWeek/5,+secondsPerWeek/5))
stableTimer.start()
print("stabletimer started with waitime: ",stableTimer.get_wait_time())
theEnd = $HUD/AcceptDialog
func _input(_event):
if Input.is_action_pressed("click"):
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
wantToQuit = false
if Input.is_action_just_released("depression"):
#take antidepressend
if(takingPill):
pass
else:
if(player.getAntiDepressant()>0):
player.takeAntiDepressant()
antiDep = antiDep + 1
var antiDepressantTimer = Timer.new()
antiDepressantTimer.one_shot = true
antiDepressantTimer.set_wait_time(secondsPerWeek*averageDownPhase/2)
add_child(antiDepressantTimer)
antiDepressantTimer.connect("timeout", self, "_on_AntiDepressantTimer_timeout")
antiDepressantTimer.start()
print("antiDepressantTimer started with waitime: ",antiDepressantTimer.get_wait_time())
takingPill = true
yield(get_tree().create_timer(1.0), "timeout")
takingPill = false
if Input.is_action_just_released("mania"):
if(takingPill):
pass
else:
if(player.getMoodStabilizer()>0):
player.takeMoodStabilizer()
moodStab = moodStab + 1
var moodStabilizerTimer = Timer.new()
moodStabilizerTimer.one_shot = true;
moodStabilizerTimer.set_wait_time(secondsPerWeek*averageUpPhase/2)
add_child(moodStabilizerTimer)
moodStabilizerTimer.connect("timeout", self, "_on_MoodStabilizerTimer_timeout")
moodStabilizerTimer.start()
print("moodStabilizerTimer started with waitime: ",moodStabilizerTimer.get_wait_time())
takingPill = true
yield(get_tree().create_timer(1.0), "timeout")
takingPill = false
if Input.is_action_pressed("reset"):
mood = 0
vision.reset()
player.setNormal()
changeEffectsByMood()
if Input.is_action_pressed("quit"):
if wantToQuit && Input.get_mouse_mode()==Input.MOUSE_MODE_CONFINED:
get_tree().quit()
else:
if Input.get_mouse_mode()==Input.MOUSE_MODE_CONFINED:
wantToQuit = true
else:
Input.set_mouse_mode(Input.MOUSE_MODE_CONFINED)
if Input.is_action_just_released("flashlight"):
if($Player/CameraPivot/Flashlight.visible):
$Player/CameraPivot/Flashlight.visible = false
else:
$Player/CameraPivot/Flashlight.visible = true
func changeEffectsByMood():
#depression
if(mood<0):
player.setDepressed(1+(1*abs(mood)))
#regulare med
if(antiDep>0):
vision.changeDownForce(0)
player.setDepressed(1)
#overdose of regulare med
if(antiDep>1):
vision.changeDownForce(+0.005*antiDep)
#none regular med
if(antiDep==0):
vision.changeDownForce(-0.005*abs(mood))
#wrong med
if(moodStab>0):
vision.changeShaking(1*moodStab)
#none wrong med
else:
vision.changeShaking(0)
#mania
if (mood>0):
#wrong med
if(antiDep>0):
player.setDepressed(1*antiDep)
else:
player.setManic(1+(1*mood))
#regulare med
if(moodStab>0):
vision.changeShaking(0)
#overdose regulare med
if(moodStab>1):
player.setManic(2)
if(moodStab==0):
vision.changeShaking(1*mood)
vision.changeDownForce(0)
#stable
if (mood==0):
vision.changeDownForce(mood)
vision.changeShaking(mood)
vision.reset()
player.setNormal()
if(antiDep>0):
player.setDepressed(1*antiDep)
if(moodStab>0):
vision.changeShaking(1*moodStab)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
smoothMood(delta/secondsPerWeek*0.7)
changeEffectsByMood()
sun.rotate_x(delta/3)
hudMood.text = String(mood)
hudAnti.text = String(antiDep)
hudStab.text = String(moodStab)
func _on_StableTimer_timeout():
print("StableTimer_timeout")
p0 = 0
p1 = -1
t = 0
depressionTimer.set_wait_time(secondsPerWeek*averageDownPhase+rng.randf_range(-secondsPerWeek/5,+secondsPerWeek/5))
depressionTimer.start()
print("depressionTimer started with waitime: ",depressionTimer.get_wait_time())
func _on_ManiaTimer_timeout():
print("ManiaTimer_timeout")
p0 = 1
p1 = 0
t = 0
stableTimer.set_wait_time(secondsPerWeek*averageStable+rng.randf_range(-secondsPerWeek/5,+secondsPerWeek/5))
stableTimer.start()
print("stabletimer started with waitime: ",stableTimer.get_wait_time())
func _on_DepressionTimer_timeout():
print("DepressionTimer_timeout")
p0 = -1
p1 = +1
t = 0
maniaTimer.set_wait_time(secondsPerWeek*averageUpPhase+rng.randf_range(-secondsPerWeek/5,+secondsPerWeek/5))
maniaTimer.start()
print("maniaTimer started with waitime: ",maniaTimer.get_wait_time())
func _on_AntiDepressantTimer_timeout():
print("AntiDepressantTimer_timeout")
antiDep = antiDep - 1
func _on_MoodStabilizerTimer_timeout():
print("MoodStabilizerTimer_timeout")
moodStab = moodStab - 1
func takingpill():
takingPill = false
func smoothMood(deltaTime: float):
t += deltaTime
if(t>1):
t=1
if(t<-1):
t=-1
mood = p0 * (1 - t) + p1 * t
func showEnd():
Input.set_mouse_mode(Input.MOUSE_MODE_CONFINED)
theEnd.show()