Checked all FIXMEs and TODOs (#353)

Co-authored-by: Dennis Ploeger <develop@dieploegers.de>
Co-authored-by: dploeger <dploeger@users.noreply.github.com>
This commit is contained in:
Dennis Ploeger
2021-08-02 21:23:57 +02:00
committed by GitHub
parent 90f880d090
commit 56bf96da8c
26 changed files with 66 additions and 198 deletions

View File

@@ -31,16 +31,16 @@ var walk_context: ESCWalkContext = null
# Wether the character was moved at all
var moved: bool
# Angle degrees to the last position (TODO is that correct?)
# Angle degrees from the last position to the next
var last_deg: int
# Direction of the last position (TODO is that correct?)
# Player Direction used to reflect the movement to the new position
var last_dir: int
# Scale of the last position (TODO is that correct?)
# The last scaling applied to the parent
var last_scale: Vector2
# TODO Isn't this actually the flip state of the current animation?
# Wether the current direction animation is flipped
var pose_scale: int
@@ -50,9 +50,6 @@ var _orig_speed: float = 0.0
# Shortcut variable that references the node's parent
onready var parent = get_parent()
# If character misses an animation, bypass it and proceed.
onready var bypass_missing_animation = false
# Currenly running task
onready var task = MovableTask.NONE
@@ -89,7 +86,6 @@ func _process(delta: float) -> void:
dist *= parent.terrain.player_doubleclick_speed_multiplier
var dir = (next - pos).normalized()
# TODO comment what this is all about
dir = dir * (dir.x * dir.x + dir.y * dir.y * parent.v_speed_damp)
var new_pos
@@ -115,33 +111,26 @@ func _process(delta: float) -> void:
var current_animation = ""
if parent.animation_sprite != null:
current_animation = parent.animation_sprite.animation
# elif animation != null:
# current_animation = animation.current_animation
# FIXME This is obviously wrong as bypass_missing_animation is
# always false
bypass_missing_animation = false
if !bypass_missing_animation:
var animation_to_play = \
parent.animations.directions[last_dir][0]
if current_animation != animation_to_play:
if parent.animation_sprite.frames.has_animation(
animation_to_play
):
parent.animation_sprite.play(animation_to_play)
else:
bypass_missing_animation = true
current_animation = animation_to_play
escoria.logger.report_warnings(
"movable.gd:_process()",
[
"Character %s has no animation %s "
% [parent.global_id, animation_to_play],
"Bypassing missing animation and " +
"proceed movement."
],
true
)
var animation_to_play = \
parent.animations.directions[last_dir][0]
if current_animation != animation_to_play:
if parent.animation_sprite.frames.has_animation(
animation_to_play
):
parent.animation_sprite.play(animation_to_play)
else:
current_animation = animation_to_play
escoria.logger.report_warnings(
"movable.gd:_process()",
[
"Character %s has no animation %s "
% [parent.global_id, animation_to_play],
"Bypassing missing animation and " +
"proceed movement."
],
true
)
pose_scale = parent.animations.directions[last_dir][1]
@@ -152,53 +141,43 @@ func _process(delta: float) -> void:
# Teleports this item to the target position.
# TODO angle is only used for logging and has no further use, so it probably
# can be removed
#
# #### Parameters
#
# - target: Position2d or ESCItem to teleport to
func teleport(target: Node, angle: Object = null) -> void:
if target is Position2D:
func teleport(target: Node) -> void:
if target.has_method("get_interact_position"):
parent.position = target.get_interact_position()
escoria.logger.info(
"Object %s teleported at position %s with angle" %
[parent.global_id, str(target.position)],
[angle]
"Object %s is teleported at position %s" % [
target.name,
parent.position
]
)
elif "position" in target:
escoria.logger.info(
"Object %s teleported at position %s" %
[parent.global_id, str(target.position)]
)
parent.position = target.position
elif typeof(target) == TYPE_OBJECT:
# FIXME this is better written as target is ESCItem if that's
# the only case here
# if target.get("interact_positions") != null:
# parent.position = target.interact_positions.default
# else:
# parent.position = target.position
parent.position = target.get_interact_position()
escoria.logger.info("Object " + target.name + " teleported at position "
+ str(parent.position) + " with angle ", str(angle))
else:
escoria.logger.report_errors("escitem.gd:teleport()",
["Target to teleport to is null or unusable (" + str(target) + ")"])
escoria.logger.report_errors(
"ESCMovable#teleport()",
["Couldn't understand how to manage teleport Target %s" % target]
)
# Teleports this item to the target position.
# TODO angle is only used for logging and has no further use, so it probably
# can be removed
#
# #### Parameters
#
# - target: Vector2 target position to teleport to
func teleport_to(target: Vector2, angle: Object = null) -> void:
if typeof(target) == TYPE_VECTOR2 :
escoria.logger.info(
"Object %s teleported at position %s with angle" %
[parent.global_id, str(target)],
[angle]
)
parent.position = target
else:
escoria.logger.report_errors("escitem.gd:teleport_to()",
["Target to teleport to is null or unusable (" + str(target) + ")"])
func teleport_to(target: Vector2) -> void:
escoria.logger.info(
"Object %s teleported to position %s" %
[parent.global_id, str(target)]
)
parent.position = target
# Walk to a given position
@@ -236,14 +215,6 @@ func walk_to(pos: Vector2, p_walk_context: ESCWalkContext = null) -> void:
set_process(true)
# FIXME this function doesn't seem to be used anywhere
func walk(target_pos, p_speed, context = null) -> void:
if p_speed:
_orig_speed = parent.speed
parent.speed = p_speed
walk_to(target_pos, context)
# We have finished walking. Set the idle pose and complete
#
# #### Parameters
@@ -331,7 +302,6 @@ func update_terrain(on_event_finished_name = null) -> void:
# Do not flip the entire character, because that would conflict
# with shadows that expect to be siblings of $texture
# TODO Make the character sprite not rely on the node name
if pose_scale == -1 and parent.get_node("sprite").scale.x > 0:
parent.get_node("sprite").scale.x *= pose_scale
parent.collision.scale.x *= pose_scale
@@ -340,18 +310,6 @@ func update_terrain(on_event_finished_name = null) -> void:
parent.collision.scale.x *= -1
# Get the player direction index based on rotation angles
#
# FIXME: This function doesn't seem to be used anymore
# #### Parameters
#
# - angle: The rotation angle
# - animations: The list of character animations
func _get_dir(angle: float, animations) -> int:
var deg = escoria.utils.get_deg_from_rad(angle)
return _get_dir_deg(deg, animations)
# Get the player direction index based on degrees
#
# #### Parameters
@@ -385,7 +343,6 @@ func _get_dir_deg(deg: int, animations: Script) -> int:
# Returns true if given angle is inside the interval given by a starting_angle
# and the size.
# TODO Refactor to make this stuff understandable :D
#
# #### Parameters
#
@@ -416,20 +373,10 @@ func is_angle_in_interval(angle: float, interval: Array) -> bool:
# Sets character's angle and plays according animation.
#
# TODO: depending on current angle and current angle, the character may
# directly turn around with no "progression". We may enhance this by
# calculating successive directions to turn the character to, so that he
# doesn't switch to opposite direction too fast.
# For example, if character looks WEST and set_angle(EAST) is called, we may
# want the character to first turn SOUTHWEST, then SOUTH, then SOUTHEAST and
# finally EAST, all more or less fast.
# Whatever the implementation, this should be activated using "parameter
# "immediate" set to false.
#
# #### Parameters
#
# - deg int angle to set the character
# - immediate bool (currently unused, see TODO below)
# - immediate
# If true, direction is switched immediately. Else, successive animations are
# used so that the character turns to target angle.
func set_angle(deg: int, immediate = true) -> void:

View File

@@ -1,7 +1,6 @@
# `teleport object1 object2`
#
# Sets the position of object1 to the position of object2.
# FIXME re-add the angle parameter here
#
# @ESC
extends ESCBaseCommand

View File

@@ -1,7 +1,6 @@
# `teleport_pos object1 x y`
#
# Sets the position of object1 to the position (x,y).
# FIXME re-add the angle parameter here
#
# @ESC
extends ESCBaseCommand

View File

@@ -18,7 +18,6 @@ var scheduled_events: Array = []
func _process(delta: float) -> void:
if events_queue.size() > 0:
var running_event = events_queue.pop_front()
# TODO: Handle event flags
if not running_event.is_connected(
"finished", self, "_on_event_finished"
):

View File

@@ -15,7 +15,6 @@ const END_REGEX = \
# Dialog type
# FIXME, currently unused, but needs reimplementation
var type: String = ""
# Avatar used in the dialog

View File

@@ -78,7 +78,6 @@ func _ready():
# Manage inputs reaching the Area2D and emit the events to the input manager
# TODO: Don't change private variables here, use an event for BUTTON_WHEEL
#
# #### Parameters
# - _viewport: (not used)

View File

@@ -1,8 +1,4 @@
# A playable character
# TODO
# - Currently the sprite node needs to be named "sprite". This is bad.
# - Animation management doesn't allow using AnimationPlayer yet. Need to find
# the best solution to manage both AnimatedSprite and AnimationPlayer.
tool
extends ESCItem
class_name ESCPlayer

View File

@@ -185,7 +185,6 @@ func save_settings():
settings_res.voice_volume = escoria.settings.voice_volume
settings_res.fullscreen = escoria.settings.fullscreen
settings_res.skip_dialog = escoria.settings.skip_dialog
settings_res.rate_shown = escoria.settings.rate_shown
var directory: Directory = Directory.new()
if not directory.dir_exists(settings_folder):

View File

@@ -35,6 +35,3 @@ export var fullscreen: bool = false
# True if skipping dialogs is allowed
export var skip_dialog: bool = true
# FIXME: to be defined (achievements?)
export var rate_shown: bool = false

View File

@@ -244,7 +244,6 @@ func do(action: String, params: Array = []) -> void:
# Event handler when an object/item was clicked
# FIXME this method is way to complex
#
# #### Parameters
#
@@ -375,8 +374,6 @@ func _on_settings_loaded(p_settings: ESCSaveSettings) -> void:
else:
settings = ESCSaveSettings.new()
# TODO Apply globally
# AudioServer.set_fx_global_volume_scale(settings.sfx_volume)
AudioServer.set_bus_volume_db(
AudioServer.get_bus_index("Master"),
linear2db(settings.master_volume)

View File

@@ -16,8 +16,6 @@ var current_scene: Node
# The Escoria context currently in wait state
var wait_level
# FIXME Document this variable
var screen_ofs = Vector2(0, 0)
# Reference to the ESCBackgroundMusic node
onready var bg_music = $bg_music
@@ -111,7 +109,7 @@ func set_camera_limits(camera_limit_id: int = 0) -> void:
scene_camera_limits.size.x,
scene_camera_limits.position.y,
scene_camera_limits.position.y + \
scene_camera_limits.size.y + screen_ofs.y * 2
scene_camera_limits.size.y
)
escoria.logger.info(
"Setting camera limits from parameter ",
@@ -119,7 +117,6 @@ func set_camera_limits(camera_limit_id: int = 0) -> void:
)
current_scene.game.get_node("camera").set_limits(limits)
current_scene.game.get_node("camera").set_offset(screen_ofs * 2)
func save_game(p_savegame_res: Resource) -> void:

View File

@@ -6,5 +6,5 @@
[ext_resource path="res://game/ui/commons/dialogs/dialog_box_inset.tscn" type="PackedScene" id=4]
[node name="dialog_player" type="ResourcePreloader"]
resources = [ PoolStringArray( "dialog_box_inset", "dialog_label", "text_dialog_choice" ), [ ExtResource( 4 ), ExtResource( 1 ), ExtResource( 2 ) ] ]
resources = [ PoolStringArray( "default", "dialog_box_inset", "dialog_label", "text_dialog_choice" ), [ ExtResource( 2 ), ExtResource( 4 ), ExtResource( 1 ), ExtResource( 2 ) ] ]
script = ExtResource( 3 )

View File

@@ -1,5 +1,4 @@
# A transition player for scene changes
# FIXME Add configuration to select a specific mask
extends ColorRect

View File

@@ -36,7 +36,6 @@ func manage_input(_viewport, event, _shape_idx) -> void
```
Manage inputs reaching the Area2D and emit the events to the input manager
TODO: Don't change private variables here, use an event for BUTTON_WHEEL
#### Parameters
- _viewport: (not used)

View File

@@ -35,7 +35,6 @@ var type: String = ""
```
Dialog type
FIXME, currently unused, but needs reimplementation
### avatar

View File

@@ -70,7 +70,7 @@ Wether the character was moved at all
var last_deg: int
```
Angle degrees to the last position (TODO is that correct?)
Angle degrees from the last position to the next
### last\_dir
@@ -78,7 +78,7 @@ Angle degrees to the last position (TODO is that correct?)
var last_dir: int
```
Direction of the last position (TODO is that correct?)
Player Direction used to reflect the movement to the new position
### last\_scale
@@ -86,7 +86,7 @@ Direction of the last position (TODO is that correct?)
var last_scale: Vector2
```
Scale of the last position (TODO is that correct?)
The last scaling applied to the parent
### pose\_scale
@@ -94,7 +94,7 @@ Scale of the last position (TODO is that correct?)
var pose_scale: int
```
TODO Isn't this actually the flip state of the current animation?
Wether the current direction animation is flipped
### parent
@@ -104,14 +104,6 @@ var parent
Shortcut variable that references the node's parent
### bypass\_missing\_animation
```gdscript
var bypass_missing_animation
```
If character misses an animation, bypass it and proceed.
### task
```gdscript
@@ -125,12 +117,10 @@ Currenly running task
### teleport
```gdscript
func teleport(target: Node, angle: Object = null) -> void
func teleport(target: Node) -> void
```
Teleports this item to the target position.
TODO angle is only used for logging and has no further use, so it probably
can be removed
#### Parameters
@@ -139,12 +129,10 @@ can be removed
### teleport\_to
```gdscript
func teleport_to(target: Vector2, angle: Object = null) -> void
func teleport_to(target: Vector2) -> void
```
Teleports this item to the target position.
TODO angle is only used for logging and has no further use, so it probably
can be removed
#### Parameters
@@ -163,14 +151,6 @@ Walk to a given position
- pos: Position to walk to
- p_walk_context: Walk context to use
### walk
```gdscript
func walk(target_pos, p_speed, context = null) -> void
```
FIXME this function doesn't seem to be used anywhere
### walk\_stop
```gdscript
@@ -203,7 +183,6 @@ func is_angle_in_interval(angle: float, interval: Array) -> bool
Returns true if given angle is inside the interval given by a starting_angle
and the size.
TODO Refactor to make this stuff understandable :D
#### Parameters
@@ -220,19 +199,9 @@ func set_angle(deg: int, immediate = true) -> void
Sets character's angle and plays according animation.
TODO: depending on current angle and current angle, the character may
directly turn around with no "progression". We may enhance this by
calculating successive directions to turn the character to, so that he
doesn't switch to opposite direction too fast.
For example, if character looks WEST and set_angle(EAST) is called, we may
want the character to first turn SOUTHWEST, then SOUTH, then SOUTHEAST and
finally EAST, all more or less fast.
Whatever the implementation, this should be activated using "parameter
"immediate" set to false.
#### Parameters
- deg int angle to set the character
- immediate bool (currently unused, see TODO below)
- immediate
If true, direction is switched immediately. Else, successive animations are
used so that the character turns to target angle.

View File

@@ -7,10 +7,6 @@
## Description
A playable character
TODO
- Currently the sprite node needs to be named "sprite". This is bad.
- Animation management doesn't allow using AnimationPlayer yet. Need to find
the best solution to manage both AnimatedSprite and AnimationPlayer.
## Property Descriptions

View File

@@ -88,12 +88,4 @@ export var fullscreen: bool = false
export var skip_dialog: bool = true
```
True if skipping dialogs is allowed
### rate\_shown
```gdscript
export var rate_shown: bool = false
```
 FIXME: to be defined (achievements?)
True if skipping dialogs is allowed

View File

@@ -9,7 +9,6 @@
`teleport object1 object2`
Sets the position of object1 to the position of object2.
FIXME re-add the angle parameter here
@ESC

View File

@@ -9,7 +9,6 @@
`teleport_pos object1 x y`
Sets the position of object1 to the position (x,y).
FIXME re-add the angle parameter here
@ESC

View File

@@ -34,14 +34,6 @@ var wait_level
The Escoria context currently in wait state
### screen\_ofs
```gdscript
var screen_ofs
```
FIXME Document this variable
### bg\_music
```gdscript

View File

@@ -7,7 +7,6 @@
## Description
A transition player for scene changes
FIXME Add configuration to select a specific mask
## Property Descriptions

View File

@@ -331,11 +331,9 @@ Stops the event's execution.
#### <a name="TeleportCommand.md"></a>`teleport object1 object2` [API-Doc](api/TeleportCommand.md)
Sets the position of object1 to the position of object2.
FIXME re-add the angle parameter here
#### <a name="TeleportPosCommand.md"></a>`teleport_pos object1 x y` [API-Doc](api/TeleportPosCommand.md)
Sets the position of object1 to the position (x,y).
FIXME re-add the angle parameter here
#### <a name="TurnToCommand.md"></a>`turn_to object degrees [immediate]` [API-Doc](api/TurnToCommand.md)
**This command is currently not fully implemented.**

View File

@@ -11,9 +11,9 @@ anchor_top = 0.334
anchor_right = 0.845
anchor_bottom = 0.666
margin_left = 0.100006
margin_top = -0.199982
margin_top = -0.200012
margin_right = -0.100098
margin_bottom = 0.200012
margin_bottom = 0.199951
script = ExtResource( 3 )
__meta__ = {
"_edit_use_anchors_": false
@@ -23,7 +23,7 @@ __meta__ = {
margin_left = 7.0
margin_top = 7.0
margin_right = 876.0
margin_bottom = 259.0
margin_bottom = 292.2
custom_constants/margin_right = 20
custom_constants/margin_top = 20
custom_constants/margin_left = 20
@@ -36,35 +36,35 @@ __meta__ = {
margin_left = 20.0
margin_top = 20.0
margin_right = 849.0
margin_bottom = 232.0
margin_bottom = 265.0
custom_constants/separation = 35
dragger_visibility = 1
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/HSplitContainer"]
margin_right = 174.0
margin_bottom = 212.0
margin_bottom = 245.0
size_flags_horizontal = 3
size_flags_stretch_ratio = 0.3
[node name="avatar" type="TextureRect" parent="MarginContainer/HSplitContainer/VBoxContainer"]
margin_right = 174.0
margin_bottom = 184.0
margin_bottom = 217.0
size_flags_horizontal = 3
size_flags_vertical = 3
texture = ExtResource( 2 )
expand = true
[node name="name" type="Label" parent="MarginContainer/HSplitContainer/VBoxContainer"]
margin_top = 188.0
margin_top = 221.0
margin_right = 174.0
margin_bottom = 212.0
margin_bottom = 245.0
custom_fonts/font = ExtResource( 1 )
valign = 1
[node name="text" type="RichTextLabel" parent="MarginContainer/HSplitContainer"]
margin_left = 209.0
margin_right = 829.0
margin_bottom = 212.0
margin_bottom = 245.0
size_flags_horizontal = 3
custom_fonts/normal_font = ExtResource( 1 )
bbcode_enabled = true

View File

@@ -13,7 +13,6 @@ func _ready():
func _on_slot_pressed(p_slot_n: int):
slot_pressed = p_slot_n
if escoria.save_manager.save_game_exists(p_slot_n):
# TODO Manage save override, ask for confirmation
pass
else:
$save_name_popup.popup()

View File

@@ -548,7 +548,7 @@ _global_script_class_icons={
[application]
config/name="Escoria-reloaded"
config/name="Escoria"
run/main_scene="res://addons/escoria-core/game/main_scene.tscn"
boot_splash/image="res://addons/escoria-core/logo/escoria-logo-small.png"
boot_splash/fullsize=false