retrace/Global/Pills.gd
karl ff1d85a325 Add Pill singleton with basic behavior
A pill can be taken (key 'E', currently in Player.gd for testing) to
increase the level up to the max level (currently 6).

The drugged level gradually decreases down to the min level
(currently 0).
2019-11-11 21:54:17 +01:00

37 lines
863 B
GDScript

extends Node
var _level: float setget _set_level, get_level
var _min: float = 0.0
var _max: float = 6.0
var _decrease_per_second: float = 0.2
var _pill_add_amount: float = 2.0
# Returns the exact current level as a floating point number between min and max
func get_level():
return _level
# Returns the rounded level, e.g. for behavior which changes stepwise (X at level 6, Y at level 5, ...)
func get_round_level():
return ceil(get_level())
func _set_level(new_level: float):
# Make sure the level stays between min and max
_level = clamp(new_level, _min, _max)
func _ready() -> void:
# Start with the maximum druggedness
_set_level(_max)
func _process(delta: float) -> void:
# Gradually decrease the level by the decrease per second
_set_level(_level - _decrease_per_second * delta)
func take_pill():
_set_level(_level + _pill_add_amount)