diff --git a/src/logic-scenes/board/card-board.gd b/src/logic-scenes/board/card-board.gd index 84b4d9b..133916c 100644 --- a/src/logic-scenes/board/card-board.gd +++ b/src/logic-scenes/board/card-board.gd @@ -162,10 +162,14 @@ func populate_board(card_names: Array[StringName]): var all_new:Dictionary = HardCards.get_cards_by_name_array(card_names) # spawning the cards and adding them to the dictionary - for new_card in all_new["cards"]: + for new_card: Card in all_new["cards"]: add_card(new_card, false) - for new_sticky_note in all_new["sticky_notes"]: # spawning a sticky note + # marking the first card as random picks + new_card.picked_random = new_card.name == card_names[1] + for new_sticky_note: StickyNote in all_new["sticky_notes"]: # spawning a sticky note add_sticky_note(new_sticky_note, false) + # marking the first sticky as random picks + new_sticky_note.picked_random = new_sticky_note.name == card_names[3] #currently_active_node = area_dict["dropzone_content"][0] # set first Card as currently selected node by default currently_active_node = dropzone.get_child(0) @@ -485,15 +489,20 @@ func on_sticky_panel_cleared(): func get_save_dict() -> Dictionary: var cards: Dictionary = {} var stickies: Dictionary = {} + var randoms: Array[StringName] for child in dropzone.get_children(): if child is Card: # Save position of Card. cards[child.name] = child.transform.origin + if child.picked_random: + randoms.append(child) if child.has_sticky_note_attached(): # Saves Card Name as position of it's children. stickies[child.get_attached_sticky_note().name] = child.name + if child.get_attached_sticky_note().picked_random: + randoms.append(child.get_attached_sticky_note().card_id) elif child is StickyNote: # Save position of StickyNote. @@ -505,7 +514,8 @@ func get_save_dict() -> Dictionary: stickies[child.attached_sticky_note.name] = -1 return { "cards": cards, - "stickies": stickies + "stickies": stickies, + "randoms": randoms } @@ -521,6 +531,9 @@ func rebuild_from_savedict(board_state:Dictionary): var stickies: Dictionary[StringName, Variant] if board_state["stickies"] != {} : stickies = board_state["stickies"] + var randoms: Array[StringName] + if board_state["randoms"] != {} : + randoms = board_state["randoms"] if cards == null and stickies == null: return @@ -531,6 +544,7 @@ func rebuild_from_savedict(board_state:Dictionary): card.transform.origin = cards[card.name]# Replacing position reference with card reference! Needed in next loop. cards[card.name] = card text_recovery[card.name] = card.text + card.picked_random == randoms.has( card.card_id ) for sticky:StickyNote in card_pile["sticky_notes"]: text_recovery[sticky.name] = sticky.text if stickies[sticky.name] == -1: @@ -540,6 +554,7 @@ func rebuild_from_savedict(board_state:Dictionary): else: insert_area(dropzone, sticky) sticky.transform.origin = stickies[sticky.name] + sticky.picked_random == randoms.has( sticky.card_id ) func validate_board(): return diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index d573458..335c08f 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -29,6 +29,9 @@ var transfor_arr: Array[Transform2D] = [ _on_text_updated() var label:Label var background_sprite: AnimatedSprite2D + +@export var picked_random: bool = false + @export var wiggle_strength: float = 0.2 @export var wiggle_speed: float = 5 @export_range(1, 2) var scale_bump: float = 1.05 @@ -63,6 +66,7 @@ var background_sprite: AnimatedSprite2D @export var is_dragable: bool = false @export var diameter = 336.0 + var sticky_note_position: Vector2 = Vector2(-66, 83) var collider: Shape2D diff --git a/src/logic-scenes/board/sticky-note.gd b/src/logic-scenes/board/sticky-note.gd index 4d9269a..3252c92 100644 --- a/src/logic-scenes/board/sticky-note.gd +++ b/src/logic-scenes/board/sticky-note.gd @@ -31,6 +31,8 @@ var content: Node2D var label: Label var background_sprite: AnimatedSprite2D +@export var picked_random: bool = false + @export var shift_by: Vector2 = Vector2(-32, 0) @export_color_no_alpha var highlight_color: Color = Color(1.5, 1.5, 1.5) @export var highlighted: bool = false: