Mask setup
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Successful in 1m8s

This commit is contained in:
2026-01-31 10:18:27 +01:00
parent 9d2322b6c7
commit cd150a4513
11 changed files with 147 additions and 21 deletions

View File

@@ -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,

12
resources/masks/cat.tres Normal file
View File

@@ -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"

11
resources/masks/mute.tres Normal file
View File

@@ -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"

View File

@@ -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"

View File

@@ -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")

View File

@@ -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

View File

@@ -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

View File

@@ -1,6 +1,20 @@
@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:
@@ -9,4 +23,17 @@ func _ready() -> void:
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
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

View File

@@ -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")

View File

@@ -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()

View File

@@ -0,0 +1 @@
uid://d26mv2xtvmpqt