diff --git a/resources/characters/king.tres b/resources/characters/king.tres index e0a2e8f..ab5f5da 100644 --- a/resources/characters/king.tres +++ b/resources/characters/king.tres @@ -11,8 +11,10 @@ [resource] script = ExtResource("3_vvog1") chara_sprite = ExtResource("1_k1rnw") -mask_eyes_location = Vector2(-7.325, -274.11) -mask_mouth_location = Vector2(-13.425, -173.61) +mask_eyes_position = Vector2(-21.75, -274.015) +mask_eyes_rotation = 0.06981317007977318 +mask_mouth_position = Vector2(-7.63, -186.87) +mask_mouth_rotation = -0.1884955592153878 traits = Array[ExtResource("4_0s3fj")]([ExtResource("8_u46dm"), ExtResource("9_fvshn"), ExtResource("10_hcmf1"), ExtResource("7_0s3fj")]) preferences = Dictionary[int, int]({ 4: 0, diff --git a/resources/masks/cat.tres b/resources/masks/cat.tres new file mode 100644 index 0000000..cfe183d --- /dev/null +++ b/resources/masks/cat.tres @@ -0,0 +1,12 @@ +[gd_resource type="Resource" script_class="MaskResource" format=3 uid="uid://cuf1ocb4px4m3"] + +[ext_resource type="Texture2D" uid="uid://buql3bcbqx4pp" path="res://menus/assets/git_logo/Git-Logo-2Color.png" id="1_1u1n5"] +[ext_resource type="Script" uid="uid://d26mv2xtvmpqt" path="res://scenes/mask/mask_resource.gd" id="2_ypt8w"] + +[resource] +script = ExtResource("2_ypt8w") +mask_sprite = ExtResource("1_1u1n5") +tags_multipliers = Dictionary[int, int]({ +12: 0 +}) +metadata/_custom_type_script = "uid://d26mv2xtvmpqt" diff --git a/resources/masks/mute.tres b/resources/masks/mute.tres new file mode 100644 index 0000000..d749bfa --- /dev/null +++ b/resources/masks/mute.tres @@ -0,0 +1,11 @@ +[gd_resource type="Resource" script_class="MaskResource" format=3 uid="uid://pdiaprcknftw"] + +[ext_resource type="Script" uid="uid://d26mv2xtvmpqt" path="res://scenes/mask/mask_resource.gd" id="1_urvbb"] +[ext_resource type="Texture2D" uid="uid://cftllq6l7xclt" path="res://icon.svg" id="1_wp4x3"] + +[resource] +script = ExtResource("1_urvbb") +mask_sprite = ExtResource("1_wp4x3") +region = 1 +stimuli = 1 +metadata/_custom_type_script = "uid://d26mv2xtvmpqt" diff --git a/resources/masks/unracist.tres b/resources/masks/unracist.tres new file mode 100644 index 0000000..26761da --- /dev/null +++ b/resources/masks/unracist.tres @@ -0,0 +1,12 @@ +[gd_resource type="Resource" script_class="MaskResource" format=3 uid="uid://cbcqtj8mxngfy"] + +[ext_resource type="Script" uid="uid://d26mv2xtvmpqt" path="res://scenes/mask/mask_resource.gd" id="1_fs0fy"] +[ext_resource type="Texture2D" uid="uid://cftllq6l7xclt" path="res://icon.svg" id="1_fv3id"] + +[resource] +script = ExtResource("1_fs0fy") +mask_sprite = ExtResource("1_fv3id") +mask_transform = null +category = 3 +category_multiplier = 0.0 +metadata/_custom_type_script = "uid://d26mv2xtvmpqt" diff --git a/scenes/character/chara_resource.gd b/scenes/character/chara_resource.gd index 9ea72b2..a859b95 100644 --- a/scenes/character/chara_resource.gd +++ b/scenes/character/chara_resource.gd @@ -10,19 +10,32 @@ enum Preference { HATE } +@export_category("General") @export var chara_sprite: Texture2D: set(value): chara_sprite = value changed.emit() @export_category("Mask settings") -@export var mask_eyes_location: Vector2 = Vector2.ZERO: +@export_group("Eyes") +@export var mask_eyes_position: Vector2 = Vector2.ZERO: set(value): - mask_eyes_location = value + mask_eyes_position = value changed.emit() -@export var mask_mouth_location: Vector2 = Vector2.ZERO: +@export_custom(PROPERTY_HINT_RANGE, "-360,360,0.1,or_greater,or_less,radians") +var mask_eyes_rotation : float = 0.0: set(value): - mask_mouth_location = value + mask_eyes_rotation = value + changed.emit() +@export_group("Mouth") +@export var mask_mouth_position: Vector2 = Vector2.ZERO: + set(value): + mask_mouth_position = value + changed.emit() +@export_custom(PROPERTY_HINT_RANGE, "-360,360,0.1,or_greater,or_less,radians") +var mask_mouth_rotation : float = 0.0: + set(value): + mask_mouth_rotation = value changed.emit() @export_category("Traits and preferences") diff --git a/scenes/character/character.gd b/scenes/character/character.gd index a379a6b..7a80746 100644 --- a/scenes/character/character.gd +++ b/scenes/character/character.gd @@ -6,21 +6,16 @@ class_name Character set(new_resource): chara_resource = new_resource _on_chara_resource_changed() - # Connect the changed signal as soon as a new resource is being added. - if chara_resource != null: - chara_resource.changed.connect(_on_chara_resource_changed) + if chara_resource == null: + return + chara_resource.changed.connect(_on_chara_resource_changed) @onready var face: Sprite2D = $Face @onready var mask_eyes: Mask = $MaskEyes @onready var mask_mouth: Mask = $MaskMouth -var mask_eyes_location: Vector2 -var mask_mouth_location: Vector2 - func _on_chara_resource_changed() -> void: face.texture = chara_resource.chara_sprite - mask_eyes_location = chara_resource.mask_eyes_location - mask_mouth_location = chara_resource.mask_mouth_location # Called when the node enters the scene tree for the first time. @@ -41,5 +36,10 @@ func _game_process(delta: float) -> void: func _engine_process(delta: float) -> void: - mask_eyes.position = mask_eyes_location - mask_mouth.position = mask_mouth_location + if chara_resource == null: + return + + mask_eyes.position = chara_resource.mask_eyes_position + mask_eyes.rotation = chara_resource.mask_eyes_rotation + mask_mouth.position = chara_resource.mask_mouth_position + mask_mouth.rotation = chara_resource.mask_mouth_rotation diff --git a/scenes/character/character.tscn b/scenes/character/character.tscn index 76a7660..0f73a51 100644 --- a/scenes/character/character.tscn +++ b/scenes/character/character.tscn @@ -13,8 +13,9 @@ chara_resource = ExtResource("2_fgi2k") texture = ExtResource("3_f8hpl") [node name="MaskMouth" parent="." unique_id=1087336064 instance=ExtResource("3_mutn8")] -position = Vector2(-13.425, -173.61) +position = Vector2(-7.63, -186.87) +rotation = -0.18849556 [node name="MaskEyes" parent="." unique_id=428968220 instance=ExtResource("3_mutn8")] -position = Vector2(-7.325, -274.11) -scale = Vector2(2.599999, 0.76) +position = Vector2(-21.75, -274.015) +rotation = 0.06981317 diff --git a/scenes/mask/mask.gd b/scenes/mask/mask.gd index c06e8e7..d047ed3 100644 --- a/scenes/mask/mask.gd +++ b/scenes/mask/mask.gd @@ -1,7 +1,21 @@ +@tool extends Node2D class_name Mask +@export var mask_resource: MaskResource: + set(new_resource): + mask_resource = new_resource + _on_mask_resource_changed() + if mask_resource == null: + return + mask_resource.changed.connect(_on_mask_resource_changed) + +@onready var mask_sprite: Sprite2D = $MaskSprite + +func _on_mask_resource_changed() -> void: + mask_sprite.texture = mask_resource.mask_sprite + # Called when the node enters the scene tree for the first time. func _ready() -> void: pass # Replace with function body. @@ -9,4 +23,17 @@ func _ready() -> void: # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: - pass + if Engine.is_editor_hint(): + _engine_process(delta) + else: + _game_process(delta) + + +func _game_process(delta: float) -> void: + pass + + +func _engine_process(delta: float) -> void: + if mask_resource == null: + return + diff --git a/scenes/mask/mask.tscn b/scenes/mask/mask.tscn index 7eeac73..ba97bd0 100644 --- a/scenes/mask/mask.tscn +++ b/scenes/mask/mask.tscn @@ -2,9 +2,11 @@ [ext_resource type="Script" uid="uid://cfo3mk5f2q3ej" path="res://scenes/mask/mask.gd" id="1_61b51"] [ext_resource type="Texture2D" uid="uid://cftllq6l7xclt" path="res://icon.svg" id="1_jlvus"] +[ext_resource type="Resource" uid="uid://pdiaprcknftw" path="res://resources/masks/mute.tres" id="2_0pm64"] [node name="Mask" type="Node2D" unique_id=428968220] script = ExtResource("1_61b51") +mask_resource = ExtResource("2_0pm64") -[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1997645103] +[node name="MaskSprite" type="Sprite2D" parent="." unique_id=1997645103] texture = ExtResource("1_jlvus") diff --git a/scenes/mask/mask_resource.gd b/scenes/mask/mask_resource.gd new file mode 100644 index 0000000..621b01e --- /dev/null +++ b/scenes/mask/mask_resource.gd @@ -0,0 +1,45 @@ +@tool +extends Resource +class_name MaskResource + +enum Region { + EYES, + MOUTH, +} + +@export_category("General") +@export var mask_sprite: Texture2D: + set(value): + mask_sprite = value + changed.emit() + +@export var region: Region: + set(value): + region = value + changed.emit() + +@export_category("Stimuli") +@export var stimuli: Trait.Stimuli: + set(value): + stimuli = value + changed.emit() +@export var stimuli_multiplier: float = 1.0: + set(value): + stimuli_multiplier = value + changed.emit() + +@export_category("Category") +@export var category: Trait.Category: + set(value): + category = value + changed.emit() +@export var category_multiplier: float = 1.0: + set(value): + category_multiplier = value + changed.emit() + +@export_category("Tags") +@export var tags_multipliers: Dictionary[Trait.Tag, CharacterResource.Preference]: + set(value): + tags_multipliers = value + changed.emit() diff --git a/scenes/mask/mask_resource.gd.uid b/scenes/mask/mask_resource.gd.uid new file mode 100644 index 0000000..90447fb --- /dev/null +++ b/scenes/mask/mask_resource.gd.uid @@ -0,0 +1 @@ +uid://d26mv2xtvmpqt