add CardValue

This commit is contained in:
Fabien Freling 2021-12-14 21:53:45 +01:00
parent a4ca3c3a34
commit af58e4438c
6 changed files with 93 additions and 81 deletions

9
CardValue.gd Normal file
View file

@ -0,0 +1,9 @@
class_name CardValue
extends Node
var month: int
var type: int
func _init(month: int, type: int):
self.month = month
self.type = type

116
Deck.gd
View file

@ -1,83 +1,74 @@
extends Node2D extends Node2D
var HanafudaCard = preload("res://HanafudaCard.tscn") const CardValue = preload("res://CardValue.gd")
onready var cards = [ onready var cards = [
HanafudaCard.instance().init_card(Enums.Month.JANUARY, Enums.Type.LIGHT), CardValue.new(Enums.Month.JANUARY, Enums.Type.LIGHT),
HanafudaCard.instance().init_card(Enums.Month.JANUARY, Enums.Type.RIBBON), CardValue.new(Enums.Month.JANUARY, Enums.Type.RIBBON),
HanafudaCard.instance().init_card(Enums.Month.JANUARY, Enums.Type.SCRAP_1), CardValue.new(Enums.Month.JANUARY, Enums.Type.SCRAP_1),
HanafudaCard.instance().init_card(Enums.Month.JANUARY, Enums.Type.SCRAP_2), CardValue.new(Enums.Month.JANUARY, Enums.Type.SCRAP_2),
HanafudaCard.instance().init_card(Enums.Month.FEBRUARY, Enums.Type.ANIMAL), CardValue.new(Enums.Month.FEBRUARY, Enums.Type.ANIMAL),
HanafudaCard.instance().init_card(Enums.Month.FEBRUARY, Enums.Type.RIBBON), CardValue.new(Enums.Month.FEBRUARY, Enums.Type.RIBBON),
HanafudaCard.instance().init_card(Enums.Month.FEBRUARY, Enums.Type.SCRAP_1), CardValue.new(Enums.Month.FEBRUARY, Enums.Type.SCRAP_1),
HanafudaCard.instance().init_card(Enums.Month.FEBRUARY, Enums.Type.SCRAP_2), CardValue.new(Enums.Month.FEBRUARY, Enums.Type.SCRAP_2),
HanafudaCard.instance().init_card(Enums.Month.MARCH, Enums.Type.LIGHT), CardValue.new(Enums.Month.MARCH, Enums.Type.LIGHT),
HanafudaCard.instance().init_card(Enums.Month.MARCH, Enums.Type.RIBBON), CardValue.new(Enums.Month.MARCH, Enums.Type.RIBBON),
HanafudaCard.instance().init_card(Enums.Month.MARCH, Enums.Type.SCRAP_1), CardValue.new(Enums.Month.MARCH, Enums.Type.SCRAP_1),
HanafudaCard.instance().init_card(Enums.Month.MARCH, Enums.Type.SCRAP_2), CardValue.new(Enums.Month.MARCH, Enums.Type.SCRAP_2),
HanafudaCard.instance().init_card(Enums.Month.APRIL, Enums.Type.ANIMAL), CardValue.new(Enums.Month.APRIL, Enums.Type.ANIMAL),
HanafudaCard.instance().init_card(Enums.Month.APRIL, Enums.Type.RIBBON), CardValue.new(Enums.Month.APRIL, Enums.Type.RIBBON),
HanafudaCard.instance().init_card(Enums.Month.APRIL, Enums.Type.SCRAP_1), CardValue.new(Enums.Month.APRIL, Enums.Type.SCRAP_1),
HanafudaCard.instance().init_card(Enums.Month.APRIL, Enums.Type.SCRAP_2), CardValue.new(Enums.Month.APRIL, Enums.Type.SCRAP_2),
HanafudaCard.instance().init_card(Enums.Month.MAY, Enums.Type.ANIMAL), CardValue.new(Enums.Month.MAY, Enums.Type.ANIMAL),
HanafudaCard.instance().init_card(Enums.Month.MAY, Enums.Type.RIBBON), CardValue.new(Enums.Month.MAY, Enums.Type.RIBBON),
HanafudaCard.instance().init_card(Enums.Month.MAY, Enums.Type.SCRAP_1), CardValue.new(Enums.Month.MAY, Enums.Type.SCRAP_1),
HanafudaCard.instance().init_card(Enums.Month.MAY, Enums.Type.SCRAP_2), CardValue.new(Enums.Month.MAY, Enums.Type.SCRAP_2),
HanafudaCard.instance().init_card(Enums.Month.JUNE, Enums.Type.ANIMAL), CardValue.new(Enums.Month.JUNE, Enums.Type.ANIMAL),
HanafudaCard.instance().init_card(Enums.Month.JUNE, Enums.Type.RIBBON), CardValue.new(Enums.Month.JUNE, Enums.Type.RIBBON),
HanafudaCard.instance().init_card(Enums.Month.JUNE, Enums.Type.SCRAP_1), CardValue.new(Enums.Month.JUNE, Enums.Type.SCRAP_1),
HanafudaCard.instance().init_card(Enums.Month.JUNE, Enums.Type.SCRAP_2), CardValue.new(Enums.Month.JUNE, Enums.Type.SCRAP_2),
HanafudaCard.instance().init_card(Enums.Month.JULY, Enums.Type.ANIMAL), CardValue.new(Enums.Month.JULY, Enums.Type.ANIMAL),
HanafudaCard.instance().init_card(Enums.Month.JULY, Enums.Type.RIBBON), CardValue.new(Enums.Month.JULY, Enums.Type.RIBBON),
HanafudaCard.instance().init_card(Enums.Month.JULY, Enums.Type.SCRAP_1), CardValue.new(Enums.Month.JULY, Enums.Type.SCRAP_1),
HanafudaCard.instance().init_card(Enums.Month.JULY, Enums.Type.SCRAP_2), CardValue.new(Enums.Month.JULY, Enums.Type.SCRAP_2),
HanafudaCard.instance().init_card(Enums.Month.AUGUST, Enums.Type.LIGHT), CardValue.new(Enums.Month.AUGUST, Enums.Type.LIGHT),
HanafudaCard.instance().init_card(Enums.Month.AUGUST, Enums.Type.ANIMAL), CardValue.new(Enums.Month.AUGUST, Enums.Type.ANIMAL),
HanafudaCard.instance().init_card(Enums.Month.AUGUST, Enums.Type.SCRAP_1), CardValue.new(Enums.Month.AUGUST, Enums.Type.SCRAP_1),
HanafudaCard.instance().init_card(Enums.Month.AUGUST, Enums.Type.SCRAP_2), CardValue.new(Enums.Month.AUGUST, Enums.Type.SCRAP_2),
HanafudaCard.instance().init_card(Enums.Month.SEPTEMBER, Enums.Type.ANIMAL), CardValue.new(Enums.Month.SEPTEMBER, Enums.Type.ANIMAL),
HanafudaCard.instance().init_card(Enums.Month.SEPTEMBER, Enums.Type.RIBBON), CardValue.new(Enums.Month.SEPTEMBER, Enums.Type.RIBBON),
HanafudaCard.instance().init_card(Enums.Month.SEPTEMBER, Enums.Type.SCRAP_1), CardValue.new(Enums.Month.SEPTEMBER, Enums.Type.SCRAP_1),
HanafudaCard.instance().init_card(Enums.Month.SEPTEMBER, Enums.Type.SCRAP_2), CardValue.new(Enums.Month.SEPTEMBER, Enums.Type.SCRAP_2),
HanafudaCard.instance().init_card(Enums.Month.OCTOBER, Enums.Type.ANIMAL), CardValue.new(Enums.Month.OCTOBER, Enums.Type.ANIMAL),
HanafudaCard.instance().init_card(Enums.Month.OCTOBER, Enums.Type.RIBBON), CardValue.new(Enums.Month.OCTOBER, Enums.Type.RIBBON),
HanafudaCard.instance().init_card(Enums.Month.OCTOBER, Enums.Type.SCRAP_1), CardValue.new(Enums.Month.OCTOBER, Enums.Type.SCRAP_1),
HanafudaCard.instance().init_card(Enums.Month.OCTOBER, Enums.Type.SCRAP_2), CardValue.new(Enums.Month.OCTOBER, Enums.Type.SCRAP_2),
HanafudaCard.instance().init_card(Enums.Month.NOVEMBER, Enums.Type.LIGHT), CardValue.new(Enums.Month.NOVEMBER, Enums.Type.LIGHT),
HanafudaCard.instance().init_card(Enums.Month.NOVEMBER, Enums.Type.ANIMAL), CardValue.new(Enums.Month.NOVEMBER, Enums.Type.ANIMAL),
HanafudaCard.instance().init_card(Enums.Month.NOVEMBER, Enums.Type.RIBBON), CardValue.new(Enums.Month.NOVEMBER, Enums.Type.RIBBON),
HanafudaCard.instance().init_card(Enums.Month.NOVEMBER, Enums.Type.SCRAP_1), CardValue.new(Enums.Month.NOVEMBER, Enums.Type.SCRAP_1),
HanafudaCard.instance().init_card(Enums.Month.DECEMBER, Enums.Type.LIGHT), CardValue.new(Enums.Month.DECEMBER, Enums.Type.LIGHT),
HanafudaCard.instance().init_card(Enums.Month.DECEMBER, Enums.Type.SCRAP_1), CardValue.new(Enums.Month.DECEMBER, Enums.Type.SCRAP_1),
HanafudaCard.instance().init_card(Enums.Month.DECEMBER, Enums.Type.SCRAP_2), CardValue.new(Enums.Month.DECEMBER, Enums.Type.SCRAP_2),
HanafudaCard.instance().init_card(Enums.Month.DECEMBER, Enums.Type.SCRAP_3), CardValue.new(Enums.Month.DECEMBER, Enums.Type.SCRAP_3),
] ]
var card_order = [] var card_order = []
var next_to_draw = 0 var next_to_draw = 0
# Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
init_card_order() init_card_order()
for c in cards:
add_child(c)
c.hide()
var card: HanafudaCard = cards[0]
card.show()
card.reveal(false)
func init_card_order() -> void: func init_card_order() -> void:
card_order.resize(cards.size()) card_order.resize(cards.size())
@ -86,14 +77,9 @@ func init_card_order() -> void:
card_order.shuffle() card_order.shuffle()
next_to_draw = 0 next_to_draw = 0
func draw_card() -> int: func draw_card() -> CardValue:
if next_to_draw >= card_order.size(): if next_to_draw >= card_order.size():
return -1 return null
var card_id = card_order[next_to_draw] var card_id = card_order[next_to_draw]
next_to_draw += 1 next_to_draw += 1
return card_id return card_id
func card(index: int) -> HanafudaCard:
if index == -1:
printerr("Invalid card index")
return cards[index]

View file

@ -1,27 +1,30 @@
tool tool
extends Node2D
class_name HanafudaCard class_name HanafudaCard
extends Node2D
const CardValue = preload("res://CardValue.gd")
export var revealed: bool = true setget reveal export var revealed: bool = true setget reveal
export(Enums.Month) var month: int export(Enums.Month) var month: int setget _set_card_month
export(Enums.Type) var type: int export(Enums.Type) var type: int setget _set_card_type
onready var value = CardValue.new(Enums.Month.JANUARY, Enums.Type.LIGHT)
onready var _is_ready := true onready var _is_ready := true
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
var texture_path := card_texture() var texture_path := card_texture()
$Frontside.texture = load(texture_path) $Frontside.texture = load(texture_path)
reveal(revealed) reveal(revealed)
func init_card(month_: int, type_: int) -> HanafudaCard: func init_card(value_: CardValue) -> HanafudaCard:
month = month_ value = value_
type = type_
return self return self
func card_texture() -> String: func card_texture() -> String:
var m := "" var m := ""
match month: match value.month:
Enums.Month.JANUARY: m = "January" Enums.Month.JANUARY: m = "January"
Enums.Month.FEBRUARY: m = "February" Enums.Month.FEBRUARY: m = "February"
Enums.Month.MARCH: m = "March" Enums.Month.MARCH: m = "March"
@ -36,7 +39,7 @@ func card_texture() -> String:
Enums.Month.DECEMBER: m = "December" Enums.Month.DECEMBER: m = "December"
var t := "" var t := ""
match type: match value.type:
Enums.Type.LIGHT: t = "Hikari" Enums.Type.LIGHT: t = "Hikari"
Enums.Type.ANIMAL: t = "Tane" Enums.Type.ANIMAL: t = "Tane"
Enums.Type.RIBBON: t = "Tanzaku" Enums.Type.RIBBON: t = "Tanzaku"
@ -59,3 +62,9 @@ func reveal(new_reveal: bool) -> void:
else: else:
$Frontside.hide() $Frontside.hide()
$Backside.show() $Backside.show()
func _set_card_month(new_month: int) -> void:
value.month = new_month
func _set_card_type(new_type: int) -> void:
value.type = new_type

17
Main.gd
View file

@ -1,5 +1,7 @@
extends Node extends Node
onready var HanafudaCard = preload("res://HanafudaCard.tscn")
onready var deck = $Deck onready var deck = $Deck
onready var tween = $Tween onready var tween = $Tween
@ -8,18 +10,19 @@ func _ready():
func oya(): func oya():
tween.start() tween.start()
var card_1 = $Deck.card($Deck.draw_card()) var card_1 = HanafudaCard.instance().init_card($Deck.draw_card())
card_1.show() add_child(card_1)
# card_1.show()
tween.interpolate_property(card_1, "position", tween.interpolate_property(card_1, "position",
Vector2(0, 0), Vector2(100, 100), 3, Vector2(0, 0), Vector2(100, 100), 3,
Tween.TRANS_LINEAR, Tween.EASE_IN_OUT) Tween.TRANS_LINEAR, Tween.EASE_IN_OUT)
var card_2 = $Deck.card($Deck.draw_card()) # var card_2 = $Deck.card($Deck.draw_card())
card_2.show() # card_2.show()
tween.interpolate_property(card_2, "position", # tween.interpolate_property(card_2, "position",
Vector2(0, 0), Vector2(-100, 100), 0.4, # Vector2(0, 0), Vector2(-100, 100), 0.4,
Tween.TRANS_LINEAR, Tween.EASE_IN_OUT) # Tween.TRANS_LINEAR, Tween.EASE_IN_OUT)
yield(tween, "tween_all_completed") yield(tween, "tween_all_completed")

View file

@ -18,7 +18,6 @@ __meta__ = {
[node name="HanafudaCard" parent="." instance=ExtResource( 1 )] [node name="HanafudaCard" parent="." instance=ExtResource( 1 )]
visible = false visible = false
position = Vector2( 205, 447 ) position = Vector2( 205, 447 )
month = 2
[node name="Deck" type="Node2D" parent="."] [node name="Deck" type="Node2D" parent="."]
position = Vector2( 293, 412 ) position = Vector2( 293, 412 )

View file

@ -9,12 +9,18 @@
config_version=4 config_version=4
_global_script_classes=[ { _global_script_classes=[ {
"base": "Node",
"class": "CardValue",
"language": "GDScript",
"path": "res://CardValue.gd"
}, {
"base": "Node2D", "base": "Node2D",
"class": "HanafudaCard", "class": "HanafudaCard",
"language": "GDScript", "language": "GDScript",
"path": "res://HanafudaCard.gd" "path": "res://HanafudaCard.gd"
} ] } ]
_global_script_class_icons={ _global_script_class_icons={
"CardValue": "",
"HanafudaCard": "" "HanafudaCard": ""
} }