-
-
Notifications
You must be signed in to change notification settings - Fork 218
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Extend
DialogicPortrait
by custom portraits. (#2020)
* Extend `DialogicPortrait` by custom portraits. * Fix root name's extra `s`. * Format and fix errors. * Simplify by using `self`.
- Loading branch information
Showing
3 changed files
with
31 additions
and
17 deletions.
There are no files selected for viewing
4 changes: 2 additions & 2 deletions
4
addons/dialogic/Example Assets/portraits/CustomPortrait_AnimatedSprite.gd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
42 changes: 28 additions & 14 deletions
42
addons/dialogic/Example Assets/portraits/CustomPortrait_FaceAtlas.gd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,56 +1,70 @@ | ||
@tool | ||
extends Node2D | ||
extends DialogicPortrait | ||
|
||
enum Faces {BASED_ON_PORTRAIT_NAME, NEUTRAL, HAPPY, SAD, JOY, SHOCK, ANGRY} | ||
|
||
var portrait | ||
|
||
@export var emotion : Faces = Faces.BASED_ON_PORTRAIT_NAME | ||
@export var portrait_width: int | ||
@export var portrait_height: int | ||
@export var alien = true | ||
@export var alien := true | ||
|
||
var does_custom_portrait_change = true | ||
var does_custom_portrait_change := true | ||
|
||
func _ready(): | ||
func _ready() -> void: | ||
$Alien.hide() | ||
|
||
|
||
# Function to accept and use the extra data, if the custom portrait wants to accept it | ||
func _set_extra_data(data: String) -> void: | ||
if data == "alien": | ||
$Alien.show() | ||
elif data == "no_alien": | ||
$Alien.hide() | ||
|
||
|
||
# This function can be overridden. Defaults to true, if not overridden! | ||
func _should_do_portrait_update(character:DialogicCharacter, portrait:String) -> bool: | ||
func _should_do_portrait_update(_character: DialogicCharacter, _portrait:String) -> bool: | ||
return true | ||
|
||
|
||
# If the custom portrait accepts a change, then accept it here | ||
func _update_portrait(passed_character:DialogicCharacter, passed_portrait:String) -> void: | ||
func _update_portrait(_passed_character: DialogicCharacter, passed_portrait: String) -> void: | ||
for face in $Faces.get_children(): | ||
face.hide() | ||
|
||
if emotion == Faces.BASED_ON_PORTRAIT_NAME: | ||
if 'happy' in passed_portrait.to_lower(): $Faces/Smile.show() | ||
elif 'sad' in passed_portrait.to_lower(): $Faces/Frown.show() | ||
elif 'joy' in passed_portrait.to_lower(): $Faces/Joy.show() | ||
elif 'shock' in passed_portrait.to_lower(): $Faces/Shock.show() | ||
elif 'angry' in passed_portrait.to_lower(): $Faces/Anger.show() | ||
else: $Faces/Neutral.show() | ||
|
||
else: | ||
if emotion == Faces.HAPPY: $Faces/Smile.show() | ||
elif emotion == Faces.SAD: $Faces/Frown.show() | ||
elif emotion == Faces.JOY: $Faces/Joy.show() | ||
elif emotion == Faces.SHOCK: $Faces/Shock.show() | ||
elif emotion == Faces.ANGRY: $Faces/Anger.show() | ||
else: $Faces/Neutral.show() | ||
|
||
$Alien.visible = alien | ||
|
||
func _set_mirror(mirror:bool) -> void: | ||
if mirror: scale.x *= -1 | ||
|
||
# if implemented, this is used by the editor for the "full view" mode | ||
func _set_mirror(is_mirrored: bool) -> void: | ||
if is_mirrored: | ||
self.scale.x = -1 | ||
|
||
else: | ||
self.scale.x = 1 | ||
|
||
|
||
## If implemented, this is used by the editor for the "full view" mode | ||
func _get_covered_rect() -> Rect2: | ||
#return Rect2($Faces/Anger.position+$Faces.position, $Faces/Anger.get_rect().size*$Faces/Anger.scale*$Faces.scale) # will fcus on the face | ||
return Rect2($Body.position, $Body.get_rect().size*$Body.scale) | ||
# This will focus on the face. | ||
# return Rect2($Faces/Anger.position+$Faces.position, $Faces/Anger.get_rect().size*$Faces/Anger.scale*$Faces.scale) | ||
var size: Vector2 = $Body.get_rect().size | ||
var scaled_size: Vector2 = size * $Body.scale | ||
var position: Vector2 = $Body.position | ||
|
||
return Rect2(position, scaled_size) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters