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")
|
static var card_prefab : PackedScene = preload("res://logic-scenes/board/card.tscn")
|
||||||
@onready var void_prefab : PackedScene = preload("res://logic-scenes/board/void_card.tscn")
|
static 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 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_out_of_world": ["p_unique", "p_few_friends", []],
|
||||||
"c_rejection": ["p_finding_friends", "p_laughed_at", []],
|
"c_rejection": ["p_finding_friends", "p_laughed_at", []],
|
||||||
|
|
@ -25,6 +30,11 @@ var source_dicts: Array[Dictionary] = [
|
||||||
"c_void": ["p_wet", "p_stop", []],
|
"c_void": ["p_wet", "p_stop", []],
|
||||||
"c_hit": ["p_confidence", "p_vent", ["p_becoming_teacher"]]
|
"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_seen": ["p_understanding_self", "p_starting_change", []],
|
||||||
"c_autistic": ["p_always_afraid", "p_in_hindsight", []],
|
"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)
|
static var all_ids: Dictionary[StringName, StringName] = generate_id_reference(true, true)
|
||||||
var card_ids: Dictionary[StringName, StringName] = generate_id_reference(true, false)
|
static var card_ids: Dictionary[StringName, StringName] = generate_id_reference(true, false)
|
||||||
|
|
||||||
var sticky_ids: Dictionary[StringName, StringName] = generate_id_reference(false, true)
|
static var sticky_ids: Dictionary[StringName, StringName] = generate_id_reference(false, true)
|
||||||
var obscure_ids: Dictionary[StringName, StringName] = generate_obscure_reference()
|
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] = {}
|
var out:Dictionary[StringName, StringName] = {}
|
||||||
|
|
||||||
for id in range(source_dicts.size()):
|
for id in range(source_dicts.size()):
|
||||||
|
|
@ -87,7 +97,7 @@ func generate_id_reference(include_cards: bool, include_sticky: bool) -> Diction
|
||||||
|
|
||||||
return out
|
return out
|
||||||
|
|
||||||
func generate_obscure_reference():
|
static func generate_obscure_reference():
|
||||||
var out:Dictionary[StringName, StringName] = {}
|
var out:Dictionary[StringName, StringName] = {}
|
||||||
|
|
||||||
randomize()
|
randomize()
|
||||||
|
|
@ -104,7 +114,7 @@ func generate_obscure_reference():
|
||||||
return out
|
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]
|
var out: Array[StringName]
|
||||||
for child_name: StringName in all_ids.keys():
|
for child_name: StringName in all_ids.keys():
|
||||||
if all_ids[child_name].contains(parent_id):
|
if all_ids[child_name].contains(parent_id):
|
||||||
|
|
@ -113,16 +123,16 @@ func get_child_names_of(parent_id: StringName) -> Array[StringName]:
|
||||||
return out
|
return out
|
||||||
|
|
||||||
#FIXME: enhance typing!
|
#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"]
|
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():
|
if State.obscure_logs and not OS.is_debug_build():
|
||||||
return obscure_ids[card_name]
|
return obscure_ids[card_name]
|
||||||
else:
|
else:
|
||||||
return card_name
|
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 x:int = 0
|
||||||
var y:int = 0
|
var y:int = 0
|
||||||
var i:int = 0
|
var i:int = 0
|
||||||
|
|
@ -166,7 +176,7 @@ func arrange(cards: Array[Card], rect: Rect2, _obstacles: Array[Area2D]) -> Arra
|
||||||
return r_cards
|
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] = [
|
var world_boundaries: Array[Transform2D] = [
|
||||||
Transform2D(PI, rect.position),
|
Transform2D(PI, rect.position),
|
||||||
Transform2D(PI/2, rect.position),
|
Transform2D(PI/2, rect.position),
|
||||||
|
|
@ -180,7 +190,7 @@ func is_out_of_bounds(card: Card, rect: Rect2):
|
||||||
return true
|
return true
|
||||||
return false
|
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]
|
var output:Array[Card]
|
||||||
|
|
||||||
for card_name in source_dicts[id].keys():
|
for card_name in source_dicts[id].keys():
|
||||||
|
|
@ -192,7 +202,7 @@ func get_cards_by_scene_id(id: int) -> Array[Card]:
|
||||||
return output
|
return output
|
||||||
|
|
||||||
|
|
||||||
func _create_card(card_name: StringName) -> Card:
|
static func _create_card(card_name: StringName) -> Card:
|
||||||
match card_name:
|
match card_name:
|
||||||
&"c_void": return void_prefab.instantiate() as Card
|
&"c_void": return void_prefab.instantiate() as Card
|
||||||
&"3.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
|
# 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] = {
|
var output:Dictionary[String, Array] = {
|
||||||
"cards": [],
|
"cards": [],
|
||||||
"sticky_notes": []
|
"sticky_notes": []
|
||||||
|
|
@ -217,7 +227,7 @@ func get_cards_by_name_array(names: Array[StringName]) -> Dictionary[String, Arr
|
||||||
|
|
||||||
return output
|
return output
|
||||||
|
|
||||||
func create_from_id(id:StringName) -> Area2D:
|
static func create_from_id(id:StringName) -> Area2D:
|
||||||
var parsed: PackedStringArray = id.rsplit(".")
|
var parsed: PackedStringArray = id.rsplit(".")
|
||||||
if card_ids.values().has(id):
|
if card_ids.values().has(id):
|
||||||
var card := _create_card(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"]
|
[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
|
process_mode = 4
|
||||||
visible = false
|
visible = false
|
||||||
anchors_preset = 15
|
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"]
|
[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")
|
script = ExtResource("1_ba1m7")
|
||||||
|
|
|
||||||
|
|
@ -175,7 +175,7 @@ func populate_board(names: Array[StringName]):
|
||||||
|
|
||||||
names = _ensure_unique(names)
|
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())
|
all_names.append_array(all_new.keys())
|
||||||
|
|
||||||
for new_card: Card in all_new["cards"]:
|
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())
|
print("CardBurner: Found %d cards to choose from" % card_names.size())
|
||||||
|
|
||||||
# 2. Get card instances and shuffle them
|
# 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()
|
stack.shuffle()
|
||||||
|
|
||||||
cards = []
|
cards = []
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ func reset():
|
||||||
for player in anim_players: player.play("reveal")
|
for player in anim_players: player.play("reveal")
|
||||||
|
|
||||||
func fill_card_slots(id: int):
|
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()):
|
for i in range(new_cards.size()):
|
||||||
$cards.get_child(i).remove_child($cards.get_child(i).get_child(1))
|
$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():
|
func fill_post_slots():
|
||||||
var sticky_notes: Array[StickyNote] = []
|
var sticky_notes: Array[StickyNote] = []
|
||||||
for card: Card in output:
|
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:
|
for note:StickyNote in sticky_notes:
|
||||||
note.current_handle = self
|
note.current_handle = self
|
||||||
|
|
@ -143,11 +143,11 @@ func pick(id: int) -> void:
|
||||||
options.erase(option)
|
options.erase(option)
|
||||||
anim_players[i].play("unshuffle")
|
anim_players[i].play("unshuffle")
|
||||||
anim_players.remove_at(i)
|
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
|
i += 1
|
||||||
|
|
||||||
var winning_id
|
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):
|
if not (current_scene_id == Scenes.id.YOUTH_JUI_JUTSU and selection_state == CARDS_SELECTED):
|
||||||
randomize()
|
randomize()
|
||||||
winning_id = randi() % options.size() - ( 1 if selection_state == POSTS_SELECTED else 0)
|
winning_id = randi() % options.size() - ( 1 if selection_state == POSTS_SELECTED else 0)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue