alone management
This commit is contained in:
@@ -26,6 +26,7 @@ class_name GameManager
|
||||
@export_group("Level 3")
|
||||
@export var lvl3_guest_1: MaskedChara
|
||||
@export var lvl3_guest_2: MaskedChara
|
||||
@export var lvl3_guest_3: MaskedChara
|
||||
|
||||
@export_category("Random levels")
|
||||
@export var current_level: Levels = Levels.LVL1
|
||||
@@ -52,12 +53,11 @@ var roster_size: int = 2
|
||||
|
||||
@onready var camera_2d: Camera2D = $"../Camera2D"
|
||||
@onready var ring_bell: Sprite2D = $"../RingBell"
|
||||
@onready var bell_anim_player: AnimationPlayer = $"../RingBell/AnimationPlayer"
|
||||
|
||||
|
||||
func create_new_roster() -> void:
|
||||
print("Create new roster")
|
||||
current_chara_roster = []
|
||||
print(character_roster.size())
|
||||
var roster_for_this_round = character_roster.duplicate()
|
||||
var max_number_of_people = min(roster_size, character_roster.size())
|
||||
for i in range(max_number_of_people):
|
||||
@@ -72,8 +72,6 @@ func create_new_roster() -> void:
|
||||
var masked_chara = MaskedChara.new(chara, face_mask, mouth_mask)
|
||||
|
||||
current_chara_roster.append(masked_chara)
|
||||
print("Added %s to roster" % chara.name)
|
||||
print(character_roster.size())
|
||||
|
||||
func review_next_guest():
|
||||
# See previous guest out
|
||||
@@ -90,7 +88,6 @@ func review_next_guest():
|
||||
return
|
||||
|
||||
# Process next guest
|
||||
print("Guest is %s" % current_guest.character.name)
|
||||
character.chara_resource = current_guest.character
|
||||
character.mask_eyes.mask_resource = current_guest.face_mask
|
||||
character.mask_mouth.mask_resource = current_guest.mouth_mask
|
||||
@@ -115,7 +112,7 @@ func ending_tween_cb():
|
||||
# Progress levels
|
||||
current_game_state = GameState.READY
|
||||
ring_bell.visible = true
|
||||
mask_list.visible = false
|
||||
bell_anim_player.play("idle")
|
||||
if current_level == Levels.LVL1:
|
||||
current_level = Levels.LVL2
|
||||
elif current_level == Levels.LVL2:
|
||||
@@ -144,18 +141,21 @@ func on_ready_bell_pressed() -> void:
|
||||
if(current_game_state != GameState.READY):
|
||||
return
|
||||
|
||||
for table in tables:
|
||||
table.initialize()
|
||||
|
||||
if current_level == Levels.LVL1:
|
||||
current_chara_roster = [lvl1_guest_1, lvl1_guest_2]
|
||||
elif current_level == Levels.LVL2:
|
||||
current_chara_roster = [lvl2_guest_1, lvl2_guest_2]
|
||||
elif current_level == Levels.LVL3:
|
||||
current_chara_roster = [lvl3_guest_1, lvl3_guest_2]
|
||||
current_chara_roster = [lvl3_guest_1, lvl3_guest_2, lvl3_guest_3]
|
||||
else:
|
||||
create_new_roster()
|
||||
|
||||
current_game_state = GameState.GUEST_REVIEW
|
||||
bell_anim_player.stop()
|
||||
ring_bell.visible = false
|
||||
mask_list.visible = true
|
||||
first_guest = true
|
||||
review_next_guest()
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@ class_name MaskedChara
|
||||
@export var face_mask: MaskResource
|
||||
@export var mouth_mask: MaskResource
|
||||
|
||||
const ALONE_TRAIT = preload("uid://c4kpcm4tplsgg")
|
||||
|
||||
var pref_score_map: Dictionary[CharacterResource.Preference, float] = {
|
||||
CharacterResource.Preference.LOVE: 2.0,
|
||||
CharacterResource.Preference.APPROVE: 1.0,
|
||||
@@ -26,10 +28,12 @@ func compute_score(other_guests: Array[MaskedChara]) -> float:
|
||||
var overall_score = 0.0
|
||||
var preferences = character.preferences
|
||||
|
||||
var is_alone = true
|
||||
for guest in other_guests:
|
||||
if guest == null:
|
||||
continue
|
||||
|
||||
|
||||
is_alone = false
|
||||
var guest_mouth_mask = guest.mouth_mask
|
||||
var guest_traits = guest.character.traits
|
||||
|
||||
@@ -47,10 +51,18 @@ func compute_score(other_guests: Array[MaskedChara]) -> float:
|
||||
var preference = character.preferences.get(guest_trait) if guest_trait in character.preferences else CharacterResource.Preference.DONT_CARE
|
||||
var score_multiplier = pref_score_map.get(preference) if preference in pref_score_map else 0.0
|
||||
guest_appreciation += trait_strength*score_multiplier
|
||||
|
||||
print("%s guest appreciation %s" % [character.name, guest_appreciation])
|
||||
|
||||
overall_score += guest_appreciation
|
||||
|
||||
print("%s score: %s" % [character.name, overall_score])
|
||||
if is_alone:
|
||||
var alone_pref = character.preferences.get(ALONE_TRAIT) if ALONE_TRAIT in character.preferences else CharacterResource.Preference.DONT_CARE
|
||||
var alone_score = pref_score_map.get(alone_pref) if alone_pref in pref_score_map else 0.0
|
||||
var alone_strength = 0.0
|
||||
for stimuli in ALONE_TRAIT.stimulis:
|
||||
var strength = stimuli
|
||||
if face_mask != null and stimuli == face_mask.stimuli:
|
||||
strength *= face_mask.stimuli_multiplier
|
||||
alone_strength += strength
|
||||
overall_score = alone_score*alone_strength
|
||||
|
||||
return overall_score
|
||||
|
||||
Reference in New Issue
Block a user