]> Untitled Git - wolf-seeking-sheep.git/blob - addons/dialogic/Modules/Core/subsystem_animation.gd
Initial Godot project with Dialogic 2.0-Alpha-17
[wolf-seeking-sheep.git] / addons / dialogic / Modules / Core / subsystem_animation.gd
1 extends DialogicSubsystem
2
3 ## Subsystem that allows entering and leaving an animation state.
4
5 signal finished
6 signal animation_interrupted
7
8 var prev_state: DialogicGameHandler.States = DialogicGameHandler.States.IDLE
9
10 var _is_animating := false
11
12 #region MAIN METHODS
13 ####################################################################################################
14
15 func clear_game_state(_clear_flag := DialogicGameHandler.ClearFlags.FULL_CLEAR) -> void:
16         stop_animation()
17
18
19 func is_animating() -> bool:
20         return _is_animating
21
22
23 func start_animating() -> void:
24         prev_state = dialogic.current_state
25         dialogic.current_state = dialogic.States.ANIMATING
26         _is_animating = true
27
28
29 func animation_finished(_arg := "") -> void:
30         # It can happen that the animation state has already been stopped
31         if not is_animating():
32                 return
33         _is_animating = false
34         dialogic.current_state = prev_state as DialogicGameHandler.States
35         finished.emit()
36
37
38 func stop_animation() -> void:
39         animation_finished()
40         animation_interrupted.emit()
41
42 #endregion