re-refactoring of hardcoded cards into static CardLibrary
This commit is contained in:
parent
0e70bbda32
commit
ba9d59721d
|
|
@ -1,10 +1,15 @@
|
|||
class_name HardcodedCards extends Control
|
||||
class_name CardLibrary extends Control
|
||||
|
||||
@onready var card_prefab : PackedScene = preload("res://logic-scenes/board/card.tscn")
|
||||
@onready var void_prefab : PackedScene = preload("res://logic-scenes/board/void_card.tscn")
|
||||
@onready var note_prefab : PackedScene = preload("res://logic-scenes/board/sticky-note.tscn")
|
||||
static var card_prefab : PackedScene = preload("res://logic-scenes/board/card.tscn")
|
||||
static var void_prefab : PackedScene = preload("res://logic-scenes/board/void_card.tscn")
|
||||
static var note_prefab : PackedScene = preload("res://logic-scenes/board/sticky-note.tscn")
|
||||
|
||||
var source_dicts: Array[Dictionary] = [
|
||||
static var source_dicts: Array[Dictionary] = [
|
||||
{ # These provisionary cards are not being used in the game right now. This makes sure this is synced with [SceneReference.ids]
|
||||
"c_for_a_friend": ["p_a", "p_b", []],
|
||||
"c_for_the_character": ["p_c", "p_d", []],
|
||||
"c_for_myself": ["p_e", "p_f", []]
|
||||
},
|
||||
{
|
||||
"c_out_of_world": ["p_unique", "p_few_friends", []],
|
||||
"c_rejection": ["p_finding_friends", "p_laughed_at", []],
|
||||
|
|
@ -25,6 +30,11 @@ var source_dicts: Array[Dictionary] = [
|
|||
"c_void": ["p_wet", "p_stop", []],
|
||||
"c_hit": ["p_confidence", "p_vent", ["p_becoming_teacher"]]
|
||||
},
|
||||
{ # These provisionary cards are not being used in the game right now. This makes sure this is synced with [SceneReference.ids]
|
||||
"c_growing_up_1": ["p_g", "p_h", []],
|
||||
"c_growing_up_2": ["p_i", "p_j", []],
|
||||
"c_growing_up_3": ["p_k", "p_l", []]
|
||||
},
|
||||
{
|
||||
"c_seen": ["p_understanding_self", "p_starting_change", []],
|
||||
"c_autistic": ["p_always_afraid", "p_in_hindsight", []],
|
||||
|
|
@ -67,13 +77,13 @@ var source_dicts: Array[Dictionary] = [
|
|||
},
|
||||
]
|
||||
|
||||
var all_ids: Dictionary[StringName, StringName] = generate_id_reference(true, true)
|
||||
var card_ids: Dictionary[StringName, StringName] = generate_id_reference(true, false)
|
||||
static var all_ids: Dictionary[StringName, StringName] = generate_id_reference(true, true)
|
||||
static var card_ids: Dictionary[StringName, StringName] = generate_id_reference(true, false)
|
||||
|
||||
var sticky_ids: Dictionary[StringName, StringName] = generate_id_reference(false, true)
|
||||
var obscure_ids: Dictionary[StringName, StringName] = generate_obscure_reference()
|
||||
static var sticky_ids: Dictionary[StringName, StringName] = generate_id_reference(false, true)
|
||||
static var obscure_ids: Dictionary[StringName, StringName] = generate_obscure_reference()
|
||||
|
||||
func generate_id_reference(include_cards: bool, include_sticky: bool) -> Dictionary[StringName, StringName]:
|
||||
static func generate_id_reference(include_cards: bool, include_sticky: bool) -> Dictionary[StringName, StringName]:
|
||||
var out:Dictionary[StringName, StringName] = {}
|
||||
|
||||
for id in range(source_dicts.size()):
|
||||
|
|
@ -87,7 +97,7 @@ func generate_id_reference(include_cards: bool, include_sticky: bool) -> Diction
|
|||
|
||||
return out
|
||||
|
||||
func generate_obscure_reference():
|
||||
static func generate_obscure_reference():
|
||||
var out:Dictionary[StringName, StringName] = {}
|
||||
|
||||
randomize()
|
||||
|
|
@ -104,7 +114,7 @@ func generate_obscure_reference():
|
|||
return out
|
||||
|
||||
|
||||
func get_child_names_of(parent_id: StringName) -> Array[StringName]:
|
||||
static func get_child_names_of(parent_id: StringName) -> Array[StringName]:
|
||||
var out: Array[StringName]
|
||||
for child_name: StringName in all_ids.keys():
|
||||
if all_ids[child_name].contains(parent_id):
|
||||
|
|
@ -113,16 +123,16 @@ func get_child_names_of(parent_id: StringName) -> Array[StringName]:
|
|||
return out
|
||||
|
||||
#FIXME: enhance typing!
|
||||
func get_children_of(parent_id: StringName) -> Array:
|
||||
static func get_children_of(parent_id: StringName) -> Array:
|
||||
return get_cards_by_name_array(get_child_names_of(parent_id))["sticky_notes"]
|
||||
|
||||
func get_obscure_name(card_name: StringName):
|
||||
static func get_obscure_name(card_name: StringName):
|
||||
if State.obscure_logs and not OS.is_debug_build():
|
||||
return obscure_ids[card_name]
|
||||
else:
|
||||
return card_name
|
||||
|
||||
func arrange(cards: Array[Card], rect: Rect2, _obstacles: Array[Area2D]) -> Array[Card]:
|
||||
static func arrange(cards: Array[Card], rect: Rect2, _obstacles: Array[Area2D]) -> Array[Card]:
|
||||
var x:int = 0
|
||||
var y:int = 0
|
||||
var i:int = 0
|
||||
|
|
@ -166,7 +176,7 @@ func arrange(cards: Array[Card], rect: Rect2, _obstacles: Array[Area2D]) -> Arra
|
|||
return r_cards
|
||||
|
||||
|
||||
func is_out_of_bounds(card: Card, rect: Rect2):
|
||||
static func is_out_of_bounds(card: Card, rect: Rect2):
|
||||
var world_boundaries: Array[Transform2D] = [
|
||||
Transform2D(PI, rect.position),
|
||||
Transform2D(PI/2, rect.position),
|
||||
|
|
@ -180,7 +190,7 @@ func is_out_of_bounds(card: Card, rect: Rect2):
|
|||
return true
|
||||
return false
|
||||
|
||||
func get_cards_by_scene_id(id: int) -> Array[Card]:
|
||||
static func get_cards_by_scene_id(id: int) -> Array[Card]:
|
||||
var output:Array[Card]
|
||||
|
||||
for card_name in source_dicts[id].keys():
|
||||
|
|
@ -192,7 +202,7 @@ func get_cards_by_scene_id(id: int) -> Array[Card]:
|
|||
return output
|
||||
|
||||
|
||||
func _create_card(card_name: StringName) -> Card:
|
||||
static func _create_card(card_name: StringName) -> Card:
|
||||
match card_name:
|
||||
&"c_void": return void_prefab.instantiate() as Card
|
||||
&"3.c_void": return void_prefab.instantiate() as Card
|
||||
|
|
@ -200,7 +210,7 @@ func _create_card(card_name: StringName) -> Card:
|
|||
|
||||
|
||||
# used to put cards on the dev board
|
||||
func get_cards_by_name_array(names: Array[StringName]) -> Dictionary[String, Array]:
|
||||
static func get_cards_by_name_array(names: Array[StringName]) -> Dictionary[String, Array]:
|
||||
var output:Dictionary[String, Array] = {
|
||||
"cards": [],
|
||||
"sticky_notes": []
|
||||
|
|
@ -217,7 +227,7 @@ func get_cards_by_name_array(names: Array[StringName]) -> Dictionary[String, Arr
|
|||
|
||||
return output
|
||||
|
||||
func create_from_id(id:StringName) -> Area2D:
|
||||
static func create_from_id(id:StringName) -> Area2D:
|
||||
var parsed: PackedStringArray = id.rsplit(".")
|
||||
if card_ids.values().has(id):
|
||||
var card := _create_card(id)
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://dckj4hhl42v8u"]
|
||||
[gd_scene format=3 uid="uid://dckj4hhl42v8u"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dysgoaaesqjbg" path="res://dev-util/hardcoded_cards.gd" id="1_5kg6w"]
|
||||
|
||||
[node name="HardcodedCards" type="PanelContainer"]
|
||||
[node name="HardcodedCards" type="PanelContainer" unique_id=1337833972]
|
||||
process_mode = 4
|
||||
visible = false
|
||||
anchors_preset = 15
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://cnaffkv2n4gy5"]
|
||||
[gd_scene format=3 uid="uid://cnaffkv2n4gy5"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dysgoaaesqjbg" path="res://dev-util/hardcoded_cards.gd" id="1_ba1m7"]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
[node name="Node2D" type="Node2D" unique_id=1954072042]
|
||||
script = ExtResource("1_ba1m7")
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ func populate_board(names: Array[StringName]):
|
|||
|
||||
names = _ensure_unique(names)
|
||||
|
||||
var all_new:Dictionary = HardCards.get_cards_by_name_array(names)
|
||||
var all_new:Dictionary = CardLibrary.get_cards_by_name_array(names)
|
||||
all_names.append_array(all_new.keys())
|
||||
|
||||
for new_card: Card in all_new["cards"]:
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ func _populate() -> void:
|
|||
print("CardBurner: Found %d cards to choose from" % card_names.size())
|
||||
|
||||
# 2. Get card instances and shuffle them
|
||||
var stack : Array = HardCards.get_cards_by_name_array(card_names)["cards"]
|
||||
var stack : Array = CardLibrary.get_cards_by_name_array(card_names)["cards"]
|
||||
stack.shuffle()
|
||||
|
||||
cards = []
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ func reset():
|
|||
for player in anim_players: player.play("reveal")
|
||||
|
||||
func fill_card_slots(id: int):
|
||||
var new_cards : Array[Card] = HardCards.get_cards_by_scene_id(id)
|
||||
var new_cards : Array[Card] = CardLibrary.get_cards_by_scene_id(id)
|
||||
|
||||
for i in range(new_cards.size()):
|
||||
$cards.get_child(i).remove_child($cards.get_child(i).get_child(1))
|
||||
|
|
@ -79,7 +79,7 @@ func fill_card_slots(id: int):
|
|||
func fill_post_slots():
|
||||
var sticky_notes: Array[StickyNote] = []
|
||||
for card: Card in output:
|
||||
sticky_notes.append_array(HardCards.get_children_of(card.card_id))
|
||||
sticky_notes.append_array(CardLibrary.get_children_of(card.card_id))
|
||||
|
||||
for note:StickyNote in sticky_notes:
|
||||
note.current_handle = self
|
||||
|
|
@ -143,11 +143,11 @@ func pick(id: int) -> void:
|
|||
options.erase(option)
|
||||
anim_players[i].play("unshuffle")
|
||||
anim_players.remove_at(i)
|
||||
print("Removed StickyNote %s from options pool" % HardCards.get_obscure_name(option.name))
|
||||
print("Removed StickyNote %s from options pool" % CardLibrary.get_obscure_name(option.name))
|
||||
i += 1
|
||||
|
||||
var winning_id
|
||||
print("Randomly selected card %s" % HardCards.get_obscure_name(options[1].name))
|
||||
print("Randomly selected card %s" % CardLibrary.get_obscure_name(options[1].name))
|
||||
if not (current_scene_id == Scenes.id.YOUTH_JUI_JUTSU and selection_state == CARDS_SELECTED):
|
||||
randomize()
|
||||
winning_id = randi() % options.size() - ( 1 if selection_state == POSTS_SELECTED else 0)
|
||||
|
|
|
|||
Loading…
Reference in New Issue