basic score computing
This commit is contained in:
@@ -5,10 +5,14 @@ class_name MaskedChara
|
||||
@export var face_mask: MaskResource
|
||||
@export var mouth_mask: MaskResource
|
||||
|
||||
@export var pref_score_map: Dictionary[CharacterResource.Preference, float] = {
|
||||
CharacterResource.Preference.LOVE: 2.0,
|
||||
CharacterResource.Preference.APPROVE: 1.0,
|
||||
CharacterResource.Preference.DONT_CARE: 0.0,
|
||||
CharacterResource.Preference.DISAPPROVE: -1.0,
|
||||
CharacterResource.Preference.HATE: -2.0,
|
||||
}
|
||||
|
||||
# Make sure that every parameter has a default value.
|
||||
# Otherwise, there will be problems with creating and editing
|
||||
# your resource via the inspector.
|
||||
func _init(
|
||||
p_character: CharacterResource = CharacterResource.new(),
|
||||
p_mask_face: MaskResource = MaskResource.new(),
|
||||
@@ -16,3 +20,35 @@ func _init(
|
||||
character = p_character
|
||||
face_mask = p_mask_face
|
||||
mouth_mask = p_mask_mouth
|
||||
|
||||
|
||||
func compute_score(other_guests: Array[MaskedChara]) -> float:
|
||||
var overall_score = 0.0
|
||||
var preferences = character.preferences
|
||||
|
||||
for guest in other_guests:
|
||||
if guest == null:
|
||||
continue
|
||||
|
||||
var guest_mouth_mask = guest.mouth_mask
|
||||
var guest_traits = guest.character.traits
|
||||
|
||||
var guest_appreciation = 0.0
|
||||
for guest_trait in guest_traits:
|
||||
var trait_strength = 0.0
|
||||
for stimuli in guest_trait.stimulis:
|
||||
var strength = stimuli
|
||||
if stimuli == guest_mouth_mask.stimuli:
|
||||
strength *= guest_mouth_mask.stimuli_multiplier
|
||||
if stimuli == face_mask.stimuli:
|
||||
strength *= face_mask.stimuli_multiplier
|
||||
trait_strength += strength
|
||||
|
||||
var preference = character.preferences.get(guest_trait.tag) if guest_trait.tag in character.preferences else CharacterResource.Preference.APPROVE
|
||||
var score_multiplier = pref_score_map.get(preference) if preference in pref_score_map else 1.0
|
||||
guest_appreciation += trait_strength*score_multiplier
|
||||
|
||||
overall_score += guest_appreciation
|
||||
|
||||
print("%s score: %s" % [character.name, overall_score])
|
||||
return overall_score
|
||||
|
||||
Reference in New Issue
Block a user