Compare commits

..

No commits in common. "main" and "implement_support_cards" have entirely different histories.

71 changed files with 188 additions and 1209 deletions

BIN
assets/card_base/batu.png (Stored with Git LFS)

Binary file not shown.

BIN
assets/card_base/gunting.png (Stored with Git LFS)

Binary file not shown.

BIN
assets/card_base/illust bg 1.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://6trhu2r7h6g3"
path="res://.godot/imported/illust bg 1.png-7d6e961f3fef1ad5d8dcf698718d9c23.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/illust bg 1.png"
dest_files=["res://.godot/imported/illust bg 1.png-7d6e961f3fef1ad5d8dcf698718d9c23.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/card_base/kertas.png (Stored with Git LFS)

Binary file not shown.

BIN
assets/monster/Goldfish 2.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b0f5rg5eqyym1"
path="res://.godot/imported/Goldfish 2.png-20495c3132cec5d0b0f2eb9e1b6f168f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/Goldfish 2.png"
dest_files=["res://.godot/imported/Goldfish 2.png-20495c3132cec5d0b0f2eb9e1b6f168f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/axolotl 3.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://wdyu7txs2ijg"
path="res://.godot/imported/axolotl 3.png-66300d813b5cc2dfc432414b14c1f8bc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/axolotl 3.png"
dest_files=["res://.godot/imported/axolotl 3.png-66300d813b5cc2dfc432414b14c1f8bc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/capybara 1.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c72q2py2vj6j4"
path="res://.godot/imported/capybara 1.png-98187c93d8c784ac26a4fe6cdc81e3f0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/capybara 1.png"
dest_files=["res://.godot/imported/capybara 1.png-98187c93d8c784ac26a4fe6cdc81e3f0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/cat 3.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bcusdaqfhlv1b"
path="res://.godot/imported/cat 3.png-a083e2d16032d32908b04a46259e2c6a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/cat 3.png"
dest_files=["res://.godot/imported/cat 3.png-a083e2d16032d32908b04a46259e2c6a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/duck 1.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ujke0x73f77b"
path="res://.godot/imported/duck 1.png-e7d6d398a984b9ae6ba8f33dfe27e9dd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/duck 1.png"
dest_files=["res://.godot/imported/duck 1.png-e7d6d398a984b9ae6ba8f33dfe27e9dd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/jellyfish 2.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cstwubbj8l8fr"
path="res://.godot/imported/jellyfish 2.png-d36c6543a46308145decdddd5ae9a63d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/jellyfish 2.png"
dest_files=["res://.godot/imported/jellyfish 2.png-d36c6543a46308145decdddd5ae9a63d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/penguing 2.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://deneyvmke3qyl"
path="res://.godot/imported/penguing 2.png-80094e4bcdb64d08cfd28547f5dd45c7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/penguing 2.png"
dest_files=["res://.godot/imported/penguing 2.png-80094e4bcdb64d08cfd28547f5dd45c7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/rabbit 1.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cu0ivvtvryq64"
path="res://.godot/imported/rabbit 1.png-53666927d04c30fffb92370a7482b673.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/rabbit 1.png"
dest_files=["res://.godot/imported/rabbit 1.png-53666927d04c30fffb92370a7482b673.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/whale 2.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dw8cnu3lfblig"
path="res://.godot/imported/whale 2.png-8dca9b32eca20cb2feb31734e55de3f6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/whale 2.png"
dest_files=["res://.godot/imported/whale 2.png-8dca9b32eca20cb2feb31734e55de3f6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/Invisibility.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b8hkgi1r8wpri"
path="res://.godot/imported/Invisibility.png-b1f5b6e24b6db1d63402e75c2d90b9f4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/Invisibility.png"
dest_files=["res://.godot/imported/Invisibility.png-b1f5b6e24b6db1d63402e75c2d90b9f4.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/absorb.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cv5hjphfixv3o"
path="res://.godot/imported/absorb.png-e8458d89a69818053d3209e7228c83cd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/absorb.png"
dest_files=["res://.godot/imported/absorb.png-e8458d89a69818053d3209e7228c83cd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/all out attack.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bpmr8pa8cq3w0"
path="res://.godot/imported/all out attack.png-2872fd363fbff1bf0b089ac317139b0e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/all out attack.png"
dest_files=["res://.godot/imported/all out attack.png-2872fd363fbff1bf0b089ac317139b0e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/energy booster.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cd1mxacc3gfcy"
path="res://.godot/imported/energy booster.png-f846d83c962a9e077788e0d0ed5252dd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/energy booster.png"
dest_files=["res://.godot/imported/energy booster.png-f846d83c962a9e077788e0d0ed5252dd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/insurance.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bwo6dfe1kpxhe"
path="res://.godot/imported/insurance.png-fa2ae7ef8a239dc0e4a4bd2c8f0b477b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/insurance.png"
dest_files=["res://.godot/imported/insurance.png-fa2ae7ef8a239dc0e4a4bd2c8f0b477b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/lifesteal.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bni2wr2vrg0fe"
path="res://.godot/imported/lifesteal.png-1fcf74a2a74d8a4381ce6310ccb999d8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/lifesteal.png"
dest_files=["res://.godot/imported/lifesteal.png-1fcf74a2a74d8a4381ce6310ccb999d8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/potion.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://48hblv72emyr"
path="res://.godot/imported/potion.png-1339ae9737d6625a795e518c852db261.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/potion.png"
dest_files=["res://.godot/imported/potion.png-1339ae9737d6625a795e518c852db261.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/reflection.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b3uq5b2x2oacn"
path="res://.godot/imported/reflection.png-2ae705bc1d7282dacca1272db53a447a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/reflection.png"
dest_files=["res://.godot/imported/reflection.png-2ae705bc1d7282dacca1272db53a447a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/sword mastery.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ha5p3vpqn5jv"
path="res://.godot/imported/sword mastery.png-67026928e9b242f46437e6cfb6d95bee.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/sword mastery.png"
dest_files=["res://.godot/imported/sword mastery.png-67026928e9b242f46437e6cfb6d95bee.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/tanker.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://hiswkj2stt4l"
path="res://.godot/imported/tanker.png-de127e279370081587c7a5243fff4d1c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/tanker.png"
dest_files=["res://.godot/imported/tanker.png-de127e279370081587c7a5243fff4d1c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -1,6 +1,6 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://di76avwc0gn8e"]
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://deo8mj887rfx1"]
[ext_resource type="Texture2D" uid="uid://wdyu7txs2ijg" path="res://assets/monster/axolotl 3.png" id="1_j0l6n"]
[ext_resource type="Texture2D" uid="uid://b8accn4e2ojau" path="res://assets/monster/froggo 1.png" id="1_dyw44"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_s0p53"]
[resource]
@ -12,4 +12,4 @@ energy_cost = 1
base_health = 120
name = "Axoluna"
description = "Cute wanderer of the tank, Axoluna"
icon = ExtResource("1_j0l6n")
icon = ExtResource("1_dyw44")

View file

@ -1,7 +1,6 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://tgju8eodyuk1"]
[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://tgju8eodyuk1"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_3jfyg"]
[ext_resource type="Texture2D" uid="uid://cu0ivvtvryq64" path="res://assets/monster/rabbit 1.png" id="1_xibsw"]
[resource]
script = ExtResource("1_3jfyg")
@ -12,4 +11,3 @@ energy_cost = 1
base_health = 50
name = "Bunnaut"
description = "Run faster than tortoise."
icon = ExtResource("1_xibsw")

View file

@ -1,6 +1,5 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://cs7q8i7bvohmj"]
[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://cs7q8i7bvohmj"]
[ext_resource type="Texture2D" uid="uid://c72q2py2vj6j4" path="res://assets/monster/capybara 1.png" id="1_mulam"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_n3oql"]
[resource]
@ -12,4 +11,3 @@ energy_cost = 3
base_health = 170
name = "Capytain"
description = "A big, hungry capybara"
icon = ExtResource("1_mulam")

View file

@ -1,7 +1,6 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://bmst884k0myvd"]
[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://bmst884k0myvd"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_hblhq"]
[ext_resource type="Texture2D" uid="uid://bcusdaqfhlv1b" path="res://assets/monster/cat 3.png" id="1_xles7"]
[resource]
script = ExtResource("1_hblhq")
@ -12,4 +11,3 @@ energy_cost = 3
base_health = 80
name = "Cattogato"
description = "Lovely cat wandering in the space."
icon = ExtResource("1_xles7")

View file

@ -1,7 +1,6 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://myxgsyerrdla"]
[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://myxgsyerrdla"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_1j36c"]
[ext_resource type="Texture2D" uid="uid://b0f5rg5eqyym1" path="res://assets/monster/Goldfish 2.png" id="1_62dnj"]
[resource]
script = ExtResource("1_1j36c")
@ -12,4 +11,3 @@ energy_cost = 1
base_health = 120
name = "Gilli"
description = "There is a huge monster looking at me everyday."
icon = ExtResource("1_62dnj")

View file

@ -1,6 +1,5 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://425ipxdapg8o"]
[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://425ipxdapg8o"]
[ext_resource type="Texture2D" uid="uid://cstwubbj8l8fr" path="res://assets/monster/jellyfish 2.png" id="1_t6381"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_yvmeg"]
[resource]
@ -12,4 +11,3 @@ energy_cost = 2
base_health = 110
name = "Jellova"
description = "I'm gonna whip you till' you .. nevermind."
icon = ExtResource("1_t6381")

View file

@ -1,6 +1,5 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://cakkx0o8mifmn"]
[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://cakkx0o8mifmn"]
[ext_resource type="Texture2D" uid="uid://dw8cnu3lfblig" path="res://assets/monster/whale 2.png" id="1_4dsvt"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_xcdwy"]
[resource]
@ -12,4 +11,3 @@ energy_cost = 2
base_health = 200
name = "Orcava"
description = "Human try to communicate with me. I simply block them."
icon = ExtResource("1_4dsvt")

View file

@ -1,7 +1,6 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://shri5ne51s74"]
[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://shri5ne51s74"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_70s4q"]
[ext_resource type="Texture2D" uid="uid://deneyvmke3qyl" path="res://assets/monster/penguing 2.png" id="1_75ppb"]
[resource]
script = ExtResource("1_70s4q")
@ -12,4 +11,3 @@ energy_cost = 2
base_health = 100
name = "Prankie"
description = "I'm not pranking anyone. Yet."
icon = ExtResource("1_75ppb")

View file

@ -1,6 +1,5 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://dnf3gpji5prlr"]
[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://dnf3gpji5prlr"]
[ext_resource type="Texture2D" uid="uid://ujke0x73f77b" path="res://assets/monster/duck 1.png" id="1_4f7pv"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_a8rjn"]
[resource]
@ -12,4 +11,3 @@ energy_cost = 1
base_health = 70
name = "Quackle"
description = "Quack! Quack! No one notice me."
icon = ExtResource("1_4f7pv")

View file

@ -1,8 +1,7 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://be01tdq1fxlct"]
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=3 format=3 uid="uid://be01tdq1fxlct"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_mhxdy"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_f6hay"]
[ext_resource type="Texture2D" uid="uid://cv5hjphfixv3o" path="res://assets/support/absorb.png" id="2_i2lgf"]
[resource]
script = ExtResource("2_f6hay")
@ -11,4 +10,3 @@ type = "red"
effects = Array[ExtResource("1_mhxdy")]([])
name = "Absorb"
description = "Enemy damage converted to heal your Active Monster Field HP during this turn."
icon = ExtResource("2_i2lgf")

View file

@ -1,14 +1,12 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://dgxcvdo6x6kst"]
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=3 format=3 uid="uid://dgxcvdo6x6kst"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_fd50n"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_61mgn"]
[ext_resource type="Texture2D" uid="uid://bpmr8pa8cq3w0" path="res://assets/support/all out attack.png" id="2_a1iip"]
[resource]
script = ExtResource("2_61mgn")
scope = "turn"
scope = "instant"
type = "green"
effects = Array[ExtResource("1_fd50n")]([null])
name = "All-Out Attack"
description = "Combine all Rock Paper Scissor during this turn, and got additional damage from the lowest Rock Paper Scissor you got."
icon = ExtResource("2_a1iip")

View file

@ -1,8 +1,7 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://c0grh1y65e0f3"]
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=3 format=3 uid="uid://c0grh1y65e0f3"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_pkc1x"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_iq88n"]
[ext_resource type="Texture2D" uid="uid://cd1mxacc3gfcy" path="res://assets/support/energy booster.png" id="2_lxctl"]
[resource]
script = ExtResource("2_iq88n")
@ -11,4 +10,3 @@ type = "green"
effects = Array[ExtResource("1_pkc1x")]([null])
name = "Energy Booster"
description = "Add 1 additional Energy."
icon = ExtResource("2_lxctl")

View file

@ -1,8 +1,7 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://dfocg5yfh22e8"]
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=3 format=3 uid="uid://dfocg5yfh22e8"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_gtyqr"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_3ixor"]
[ext_resource type="Texture2D" uid="uid://bwo6dfe1kpxhe" path="res://assets/support/insurance.png" id="2_f7jjv"]
[resource]
script = ExtResource("2_3ixor")
@ -11,4 +10,3 @@ type = "red"
effects = Array[ExtResource("1_gtyqr")]([null])
name = "Insurance"
description = "If your monster supposed to be dead in this turn, keep it alive at 10 HP."
icon = ExtResource("2_f7jjv")

View file

@ -1,14 +1,13 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://by4yg81uqti3u"]
[gd_resource type="Resource" script_class="SimpleSupportCard" load_steps=3 format=3 uid="uid://by4yg81uqti3u"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_5tnpm"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_6c2xo"]
[ext_resource type="Texture2D" uid="uid://b8hkgi1r8wpri" path="res://assets/support/Invisibility.png" id="2_6occh"]
[resource]
script = ExtResource("2_6c2xo")
scope = "turn"
magnitude = 0
type = "green"
effects = Array[ExtResource("1_5tnpm")]([null])
name = "Invisibility"
description = "Ignore any damage to your monster in this turn."
icon = ExtResource("2_6occh")

View file

@ -1,7 +1,6 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://bcrlaam8uq6xt"]
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=3 format=3 uid="uid://bcrlaam8uq6xt"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_b33y4"]
[ext_resource type="Texture2D" uid="uid://bni2wr2vrg0fe" path="res://assets/support/lifesteal.png" id="2_arrkb"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_khaf1"]
[resource]
@ -11,4 +10,3 @@ type = "green"
effects = Array[ExtResource("1_b33y4")]([null])
name = "Lifesteal"
description = "During this turn your attack also heals your HP."
icon = ExtResource("2_arrkb")

View file

@ -1,9 +1,8 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=6 format=3 uid="uid://4eod3m0vc5a8"]
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=5 format=3 uid="uid://4eod3m0vc5a8"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_ujm0o"]
[ext_resource type="Resource" uid="uid://cvu0rtt5nggf" path="res://data/support_effects/heal.tres" id="2_k1cnl"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="3_at5nt"]
[ext_resource type="Texture2D" uid="uid://48hblv72emyr" path="res://assets/support/potion.png" id="3_hk8kx"]
[sub_resource type="Resource" id="Resource_88lmk"]
script = ExtResource("1_ujm0o")
@ -17,4 +16,3 @@ type = "green"
effects = Array[ExtResource("1_ujm0o")]([SubResource("Resource_88lmk")])
name = "Potion"
description = "Heal 30 HP"
icon = ExtResource("3_hk8kx")

View file

@ -1,14 +1,13 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://c1gsrru1wa6ao"]
[gd_resource type="Resource" script_class="SimpleSupportCard" load_steps=3 format=3 uid="uid://c1gsrru1wa6ao"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_mk2or"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_igbok"]
[ext_resource type="Texture2D" uid="uid://b3uq5b2x2oacn" path="res://assets/support/reflection.png" id="2_jrr8g"]
[resource]
script = ExtResource("2_igbok")
scope = "turn"
magnitude = 0
type = "red"
effects = Array[ExtResource("1_mk2or")]([null])
name = "Reflection"
description = "Enemy got the same amount of damage as our monster in this turn."
icon = ExtResource("2_jrr8g")

View file

@ -1,9 +1,8 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=6 format=3 uid="uid://2xeb6keaoabo"]
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=5 format=3 uid="uid://2xeb6keaoabo"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_y6yvj"]
[ext_resource type="Resource" uid="uid://bs4i85slalkgd" path="res://data/support_effects/sword_mastery.tres" id="2_omhdb"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="3_37rh4"]
[ext_resource type="Texture2D" uid="uid://ha5p3vpqn5jv" path="res://assets/support/sword mastery.png" id="3_rrvpt"]
[sub_resource type="Resource" id="Resource_wwv02"]
script = ExtResource("1_y6yvj")
@ -17,4 +16,3 @@ type = "green"
effects = Array[ExtResource("1_y6yvj")]([SubResource("Resource_wwv02")])
name = "Sword Mastery"
description = "Permanently add 20 damage for all Rock Paper Scissor to 1 Active Monster."
icon = ExtResource("3_rrvpt")

View file

@ -1,14 +1,13 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://dsmrqyxt8mdp5"]
[gd_resource type="Resource" script_class="SimpleSupportCard" load_steps=3 format=3 uid="uid://dsmrqyxt8mdp5"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_1fvcb"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_d0adk"]
[ext_resource type="Texture2D" uid="uid://hiswkj2stt4l" path="res://assets/support/tanker.png" id="2_hqv06"]
[resource]
script = ExtResource("2_d0adk")
scope = "turn"
magnitude = 0
type = "red"
effects = Array[ExtResource("1_1fvcb")]([null])
name = "Tanker"
description = "Add your HP with your selected (Rock Paper Scissor) during this turn, and reduce to max HP if current HP higher than max HP."
icon = ExtResource("2_hqv06")

View file

@ -8,12 +8,10 @@ signal opponent_played_rts(move: String)
@export var player_1_deck: Array[Card]
@export var player_2_deck: Array[Card]
@onready var match_manager: MatchManager = $MatchManager
@onready var match_manager = $MatchManager
@onready var own_side = $Own
@onready var opponent_side = $Opponent
@onready var start_game_btn = $StartGameButton
@onready var win_lose_tie_label: Label = $"Win-Lose-Tie"
var id_to_card: Dictionary = {}
@ -32,9 +30,6 @@ var player_2_action: Action:
var id
var signal_connected := false
func _ready() -> void:
_update_phase_info(Match.Phase.PREGAME)
func init(player_id: int) -> void:
id = player_id
@ -49,7 +44,6 @@ func init(player_id: int) -> void:
if card.id not in id_to_card:
id_to_card[card.id] = card
print(match_manager.phase)
match_manager.init({
MatchManager.PLAYER_1_ID: player_1_deck,
MatchManager.PLAYER_2_ID: player_2_deck
@ -65,11 +59,6 @@ var transition_history: Array[PhaseTransition] = []
func _on_match_manager_state_transitioned(transition: PhaseTransition):
start_game_btn.visible = match_manager.phase == Match.Phase.PREGAME
transition_history.append(transition)
_update_phase_info(transition.to)
if transition.to == Match.Phase.END:
var game_ended_event: EventGameEnded = transition.events.filter(func (it): return it is EventGameEnded)[0]
win_lose_tie_label.text = "TIE" if game_ended_event.winner_player_id == -1 else "YOU WON!" if game_ended_event.winner_player_id == id else "YOU LOST!"
win_lose_tie_label.visible = true
print("Phase: ", Match.phase_to_str(transition.from), " -> ", Match.phase_to_str(transition.to))
func _on_start_game_button_button_up() -> void:
@ -124,12 +113,3 @@ func rpc_opponent_rps_move(move: String) -> void:
if player_1_action:
match_manager.resolve(player_action_queue)
player_action_queue.clear()
func _update_phase_info(phase: Match.Phase):
var phaseHeaders: Container = get_node("%PhaseInfo/PhaseHeader")
for child: Label in phaseHeaders.get_children():
child.modulate = Color.DIM_GRAY
var target = phaseHeaders.get_node(Match.phase_to_str(phase))
phaseHeaders.visible = target != null
if target:
target.modulate = Color.WHITE

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=24 format=3 uid="uid://bgc0u117jqyr1"]
[gd_scene load_steps=19 format=3 uid="uid://bgc0u117jqyr1"]
[ext_resource type="Script" path="res://demo_game.gd" id="1_jn16u"]
[ext_resource type="Script" path="res://player_side.gd" id="2_w4tnt"]
@ -6,7 +6,7 @@
[ext_resource type="PackedScene" uid="uid://cikstg43mudkn" path="res://tcg/match/match_manager.tscn" id="3_3yhrl"]
[ext_resource type="Resource" uid="uid://cs7q8i7bvohmj" path="res://data/cards/monster/capytain.tres" id="3_we1tk"]
[ext_resource type="Resource" uid="uid://4eod3m0vc5a8" path="res://data/cards/support/potion.tres" id="4_kkhfk"]
[ext_resource type="Resource" uid="uid://deo8mj887rfx1" path="res://data/cards/monster/axoluna.tres" id="5_3cm5x"]
[ext_resource type="Resource" uid="uid://di76avwc0gn8e" path="res://data/cards/monster/axoluna.tres" id="5_3cm5x"]
[ext_resource type="Resource" uid="uid://bcrlaam8uq6xt" path="res://data/cards/support/lifesteal.tres" id="6_potm8"]
[ext_resource type="PackedScene" uid="uid://bhrelvt51cbp2" path="res://ui/card_template/monster_card.tscn" id="7_4ah45"]
[ext_resource type="Resource" uid="uid://dgxcvdo6x6kst" path="res://data/cards/support/all_out_attack.tres" id="7_nvv8k"]
@ -18,11 +18,6 @@
[ext_resource type="Resource" uid="uid://c0grh1y65e0f3" path="res://data/cards/support/energy_booster.tres" id="10_3rg8q"]
[ext_resource type="Resource" uid="uid://2xeb6keaoabo" path="res://data/cards/support/sword_mastery.tres" id="11_seakd"]
[ext_resource type="Resource" uid="uid://bmst884k0myvd" path="res://data/cards/monster/cattogato.tres" id="12_xqqfn"]
[ext_resource type="Texture2D" uid="uid://6trhu2r7h6g3" path="res://assets/card_base/illust bg 1.png" id="13_bdgfp"]
[ext_resource type="Texture2D" uid="uid://b0pclmv0j0r12" path="res://assets/card_base/kertas.png" id="18_gwpy8"]
[ext_resource type="Theme" uid="uid://is34t82g4jg" path="res://cards.tres" id="19_3iovu"]
[ext_resource type="Texture2D" uid="uid://ch04c20lkis6j" path="res://assets/card_base/gunting.png" id="19_clnw6"]
[ext_resource type="Texture2D" uid="uid://bywa8qlwvcksd" path="res://assets/card_base/batu.png" id="20_672ya"]
[node name="DemoGame" type="Control"]
layout_mode = 3
@ -35,14 +30,7 @@ script = ExtResource("1_jn16u")
player_1_deck = Array[ExtResource("2_xuft0")]([ExtResource("3_we1tk"), ExtResource("4_kkhfk"), ExtResource("5_3cm5x"), ExtResource("6_potm8"), ExtResource("7_nvv8k"), ExtResource("8_ewr4v"), ExtResource("9_ga5hf"), ExtResource("10_3rg8q"), ExtResource("11_seakd")])
player_2_deck = Array[ExtResource("2_xuft0")]([ExtResource("12_xqqfn"), ExtResource("4_kkhfk"), ExtResource("6_potm8"), ExtResource("7_nvv8k"), ExtResource("8_ewr4v"), ExtResource("9_ga5hf"), ExtResource("10_3rg8q"), ExtResource("11_seakd"), ExtResource("5_3cm5x")])
[node name="TextureRect" type="TextureRect" parent="."]
layout_mode = 0
offset_right = 1804.0
offset_bottom = 1224.0
scale = Vector2(1.1, 1.1)
texture = ExtResource("13_bdgfp")
[node name="Own" type="Control" parent="." node_paths=PackedStringArray("deck", "energy_label", "rps_button_container")]
[node name="Own" type="Control" parent="." node_paths=PackedStringArray("deck", "energy_label")]
layout_mode = 1
anchor_top = 0.5
anchor_right = 1.0
@ -56,8 +44,6 @@ skip_card_prefab = ExtResource("7_skjyk")
support_red_card_prefab = ExtResource("9_cabcc")
support_green_card_prefab = ExtResource("8_dytl5")
monster_card_prefab = ExtResource("7_4ah45")
rps_button_container = NodePath("HBoxContainer")
rps_grayed_color = Color(0.439216, 0.439216, 0.439216, 1)
[node name="MonsterCard" parent="Own" instance=ExtResource("7_4ah45")]
custom_minimum_size = Vector2(220, 330)
@ -116,22 +102,19 @@ layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -90.0
offset_top = -23.0
offset_right = 1152.0
offset_bottom = -67.0
grow_vertical = 0
text = "Energy:"
[node name="Hand" type="HBoxContainer" parent="Own"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchors_preset = 12
anchor_top = 1.0
anchor_right = 0.5
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -446.0
offset_top = -370.0
offset_right = 446.0
offset_top = -240.0
offset_bottom = 130.0
grow_horizontal = 2
grow_vertical = 0
pivot_offset = Vector2(0, 150)
@ -154,32 +137,13 @@ layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = 84.0
offset_top = 24.0
offset_right = 251.0
offset_bottom = 47.0
offset_left = -83.5
offset_top = 300.0
offset_right = 83.5
offset_bottom = 323.0
grow_horizontal = 2
text = "HP +0"
[node name="HBoxContainer" type="HBoxContainer" parent="Own"]
visible = false
layout_mode = 0
offset_left = 665.0
offset_top = 299.0
offset_right = 1326.0
offset_bottom = 548.0
[node name="KertasButton" type="TextureButton" parent="Own/HBoxContainer"]
layout_mode = 2
texture_normal = ExtResource("18_gwpy8")
[node name="GuntingButton" type="TextureButton" parent="Own/HBoxContainer"]
layout_mode = 2
texture_normal = ExtResource("19_clnw6")
[node name="BatuButton" type="TextureButton" parent="Own/HBoxContainer"]
layout_mode = 2
texture_normal = ExtResource("20_672ya")
text = "Incoming Damage: 0"
horizontal_alignment = 1
[node name="Opponent" type="Control" parent="." node_paths=PackedStringArray("deck", "energy_label")]
layout_mode = 1
@ -261,6 +225,18 @@ offset_bottom = 31.0
grow_horizontal = 2
alignment = 1
[node name="Button" type="Button" parent="Opponent/Hand"]
layout_mode = 2
text = "CARD_1"
[node name="Button2" type="Button" parent="Opponent/Hand"]
layout_mode = 2
text = "CARD_2"
[node name="Button3" type="Button" parent="Opponent/Hand"]
layout_mode = 2
text = "CARD_3"
[node name="EnergyLabel" type="Label" parent="Opponent"]
layout_mode = 2
offset_top = 35.0
@ -275,13 +251,14 @@ anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = 84.0
offset_top = -52.0
offset_right = 251.0
offset_bottom = -29.0
offset_left = -83.5
offset_top = -325.0
offset_right = 83.5
offset_bottom = -302.0
grow_horizontal = 2
grow_vertical = 0
text = "HP +0"
text = "Incoming Damage: 0"
horizontal_alignment = 1
[node name="StartGameButton" type="Button" parent="."]
layout_mode = 1
@ -300,75 +277,8 @@ text = "Start Game"
[node name="MatchManager" parent="." instance=ExtResource("3_3yhrl")]
[node name="PhaseInfo" type="VBoxContainer" parent="."]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = 347.0
offset_top = -102.0
offset_right = 864.0
offset_bottom = 106.0
grow_horizontal = 2
grow_vertical = 2
[node name="PhaseHeader" type="VBoxContainer" parent="PhaseInfo"]
layout_mode = 2
theme_override_constants/separation = 24
alignment = 2
[node name="Summon" type="Label" parent="PhaseInfo/PhaseHeader"]
layout_mode = 2
theme = ExtResource("19_3iovu")
theme_override_font_sizes/font_size = 24
text = "Summon"
[node name="Support 1" type="Label" parent="PhaseInfo/PhaseHeader"]
layout_mode = 2
theme = ExtResource("19_3iovu")
theme_override_font_sizes/font_size = 24
text = "Support (1)"
[node name="RPS" type="Label" parent="PhaseInfo/PhaseHeader"]
layout_mode = 2
theme = ExtResource("19_3iovu")
theme_override_font_sizes/font_size = 24
text = "Rock, Paper, Scissors"
[node name="Support 2" type="Label" parent="PhaseInfo/PhaseHeader"]
layout_mode = 2
theme = ExtResource("19_3iovu")
theme_override_font_sizes/font_size = 24
text = "Support (2)"
[node name="Win-Lose-Tie" type="Label" parent="."]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -365.0
offset_top = -215.0
offset_right = 365.0
offset_bottom = 215.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("19_3iovu")
theme_override_font_sizes/font_size = 52
text = "YOU WON!"
horizontal_alignment = 1
vertical_alignment = 1
[connection signal="play_card" from="Own" to="." method="_on_own_play_card"]
[connection signal="rps_move" from="Own" to="." method="_on_own_rps_move"]
[connection signal="button_down" from="Own/HBoxContainer/KertasButton" to="Own" method="_on_kertas_button_button_down"]
[connection signal="button_down" from="Own/HBoxContainer/GuntingButton" to="Own" method="_on_gunting_button_button_down"]
[connection signal="button_down" from="Own/HBoxContainer/BatuButton" to="Own" method="_on_batu_button_button_down"]
[connection signal="play_card" from="Opponent" to="." method="_on_opponent_play_card"]
[connection signal="rps_move" from="Opponent" to="." method="_on_opponent_rps_move"]
[connection signal="button_up" from="StartGameButton" to="." method="_on_start_game_button_button_up"]

View file

@ -9,8 +9,6 @@ signal rps_move(move: String)
@export var support_red_card_prefab: PackedScene
@export var support_green_card_prefab: PackedScene
@export var monster_card_prefab: PackedScene
@export var rps_button_container: Container
@export var rps_grayed_color: Color
@onready var monster_card_ui := $"MonsterCard"
@onready var support1_green := $"Support1GreenCard"
@ -22,14 +20,6 @@ var match_manager: MatchManager
var show_buttons: bool
var signal_connected: bool
var selected_card: Control
var focused_card: Control
var hovering_cards_this_frame: Array[Control] = []
var hovering_cards_duration: Dictionary = {}
const original_hover_position = 50 # hard coded idk what's a good way to find this value
const hover_animation_time = 0.1
const hover_height_offset = -50
const selected_height_offset = -100
func attach(match_manager: MatchManager, show_buttons: bool = true):
self.show_buttons = show_buttons
@ -43,14 +33,11 @@ func _ready():
support1_green.visible = false
support2_green.visible = false
support2_red.visible = false
incoming_damage_label.visible = false
for child in deck.get_children():
child.queue_free()
func _on_update(transition):
hovering_cards_duration.clear()
selected_card = null
incoming_damage_label.visible = true
for child in deck.get_children():
child.queue_free()
@ -83,8 +70,7 @@ func _on_update(transition):
if monster:
monster_card_ui.visible = true
monster_card_ui.show_monster(monster)
incoming_damage_label.text = "HP " + ("+0" if monster.health_delta == 0 else str(monster.health_delta))
incoming_damage_label.text = "Incoming Damage: " + str(monster.health_delta)
else:
monster_card_ui.visible = false
if match_manager.phase in [Match.Phase.SUMMON, Match.Phase.SUPPORT_1, Match.Phase.SUPPORT_2]:
@ -98,7 +84,6 @@ func _on_update(transition):
skip_btn.left_clicked.connect(func ():
_pop_this_card(skip_btn)
play_card.emit(null))
skip_btn.hovering.connect(func (delta): _do_hover(skip_btn, delta))
deck.add_child(skip_btn)
for card: Card in player.hand:
@ -126,13 +111,11 @@ func _on_update(transition):
if card is MonsterCard:
var monster_card:MonsterCardUI = monster_card_prefab.instantiate()
monster_card.show_monster(MatchMonster.new(card, card.base_health, 0))
if !is_disabled:
monster_card.left_clicked.connect(func ():
_pop_this_card(monster_card)
play_card.emit(card))
monster_card.hovering.connect(func (delta): _do_hover(monster_card, delta))
monster_card.right_clicked.connect(func(): _do_zoom(monster_card))
monster_card.un_right_clicked.connect(_do_unzoom)
deck.add_child(monster_card)
elif card is SupportCard and card.type == "red":
@ -148,92 +131,21 @@ func _on_update(transition):
btn.left_clicked.connect(func ():
_pop_this_card(btn)
play_card.emit(card))
btn.hovering.connect(func (delta): _do_hover(btn, delta))
btn.right_clicked.connect(func(): _do_zoom(btn))
btn.un_right_clicked.connect(_do_unzoom)
if rps_button_container:
rps_button_container.visible = match_manager.phase == Match.Phase.RPS
for button: TextureButton in rps_button_container.get_children():
button.modulate = rps_grayed_color
if match_manager.phase == Match.Phase.RPS:
for move in ["rock", "paper", "scissors"]:
func _do_zoom(card: Control):
if focused_card:
_do_unzoom()
if !show_buttons:
continue
var new_card: Control = card.duplicate()
get_parent().add_child(new_card)
new_card.set_anchors_and_offsets_preset(Control.PRESET_CENTER)
new_card.scale = Vector2(2,2)
focused_card = new_card
func _do_unzoom():
if focused_card:
focused_card.queue_free()
focused_card = null
var btn = Button.new()
btn.text = move
btn.button_up.connect(func (): rps_move.emit(move))
deck.add_child(btn)
func _pop_this_card(control: Control):
if selected_card:
selected_card.position = Vector2(selected_card.position.x, original_hover_position)
selected_card.size_flags_vertical = Control.SIZE_SHRINK_END
control.size_flags_vertical = Control.SIZE_SHRINK_BEGIN
selected_card = control
selected_card.position = Vector2(selected_card.position.x, original_hover_position + selected_height_offset)
func _do_hover(control: Control, delta: float):
if control == selected_card:
if control in hovering_cards_duration:
hovering_cards_duration.erase(control)
return
var duration: float
if control in hovering_cards_duration:
duration = hovering_cards_duration[control]
duration = clampf(duration + delta, 0, hover_animation_time)
hovering_cards_duration[control] = duration
else:
hovering_cards_duration[control] = delta
duration = delta
var height = lerpf(0, hover_height_offset, duration / hover_animation_time) + original_hover_position
control.position = Vector2(control.position.x, height)
hovering_cards_this_frame.append(control)
func _process(delta):
for card in hovering_cards_duration.keys():
if !card or card in hovering_cards_this_frame:
continue
var duration = hovering_cards_duration[card]
duration = maxf(0, duration - delta)
var height = lerpf(0, hover_height_offset, duration / hover_animation_time) + original_hover_position
card.position = Vector2(card.position.x, height)
if duration == 0:
hovering_cards_duration.erase(card)
else:
hovering_cards_duration[card] = duration
hovering_cards_this_frame.clear()
func _on_kertas_button_button_down() -> void:
rps_move.emit("paper")
for button: TextureButton in rps_button_container.get_children():
button.modulate = rps_grayed_color
rps_button_container.get_node("KertasButton").modulate = Color.WHITE
func _on_gunting_button_button_down() -> void:
rps_move.emit("scissors")
for button: TextureButton in rps_button_container.get_children():
button.modulate = rps_grayed_color
rps_button_container.get_node("GuntingButton").modulate = Color.WHITE
func _on_batu_button_button_down() -> void:
rps_move.emit("rock")
for button: TextureButton in rps_button_container.get_children():
button.modulate = rps_grayed_color
rps_button_container.get_node("BatuButton").modulate = Color.WHITE

View file

@ -1,7 +0,0 @@
extends Event
class_name EventGameEnded
var winner_player_id: int
func _init(winner_player_id: int) -> void:
self.winner_player_id = winner_player_id

View file

@ -79,7 +79,6 @@ func resolve(action_by_player_id: Dictionary) -> PhaseTransition:
players[player_id].monster = _monster_from_card(card)
players[player_id].hand = players[player_id].hand.filter(func(card_in_hand): return card.id != card_in_hand.id)
events.append(EventMonsterSummoned.new(card))
players[player_id].energy = players[player_id].energy - card.energy_cost
if players.values().all(func(player: MatchPlayer): return player.monster):
phase = Match.Phase.SUPPORT_1
Match.Phase.SUPPORT_1:
@ -172,7 +171,6 @@ func resolve(action_by_player_id: Dictionary) -> PhaseTransition:
player.active_support_cards = player.active_support_cards.filter(func (card): return not card_expires_this_turn.call(card))
var players_without_monster = players.values().filter(func(player): return player.monster == null)
var players_without_monster_ids = players_without_monster.map(func (it): return it.id)
if players_without_monster.size() == 0:
phase = Match.Phase.SUPPORT_1
elif players_without_monster.all(
@ -180,11 +178,7 @@ func resolve(action_by_player_id: Dictionary) -> PhaseTransition:
):
phase = Match.Phase.SUMMON
else:
var player_1_lost = players_without_monster_ids.has(player_1.id)
var player_2_lost = players_without_monster_ids.has(player_2.id)
var winner_id = -1 if player_1_lost and player_2_lost else player_1.id if player_2_lost else player_2.id
phase = Match.Phase.END
events.append(EventGameEnded.new(winner_id))
_:
pass
var transition = PhaseTransition.new(events, initial_phase, phase)

View file

@ -3,7 +3,6 @@ class_name CardBase
signal left_clicked
signal right_clicked
signal un_right_clicked
signal hovering(delta: float)
@export var card_name_label: Label
@ -26,17 +25,20 @@ func _update(card: SupportCard):
func _process(delta):
var mouse_position = get_global_mouse_position()
var rect = get_global_rect()
if rect.has_point(mouse_position) and get_window().has_focus():
if rect.has_point(mouse_position):
hovering.emit(delta)
func _input(event):
if event is InputEventMouseButton:
if !event.is_pressed():
return
var mouse_position = get_global_mouse_position()
var rect = get_global_rect()
if not rect.has_point(mouse_position):
return
if rect.has_point(mouse_position) and event.button_index == MOUSE_BUTTON_LEFT and event.is_pressed() and get_window().has_focus():
if event.button_index == MOUSE_BUTTON_LEFT:
left_clicked.emit()
elif rect.has_point(mouse_position) and event.button_index == MOUSE_BUTTON_RIGHT and event.is_pressed() and get_window().has_focus():
elif event.button_index == MOUSE_BUTTON_RIGHT:
right_clicked.emit()
elif event.button_index == MOUSE_BUTTON_RIGHT and !event.is_pressed():
un_right_clicked.emit()

View file

@ -3,7 +3,6 @@ class_name MonsterCardUI
signal left_clicked
signal right_clicked
signal un_right_clicked
signal hovering(delta: float)
@export var name_label : Label
@ -22,7 +21,7 @@ func show_monster(monster: MatchMonster):
return
name_label.text = monster.card.id
health_label.text = "HP %d/%d" % [monster.health, monster.card.base_health]
health_label.text = "HP %d" % [monster.health]
icon_texture_rect.texture = monster.card.icon
paper_damage.text = str(monster.card.paper)
@ -38,17 +37,20 @@ func show_monster(monster: MatchMonster):
func _process(delta):
var mouse_position = get_global_mouse_position()
var rect = get_global_rect()
if rect.has_point(mouse_position) and get_window().has_focus():
if rect.has_point(mouse_position):
hovering.emit(delta)
func _input(event):
if event is InputEventMouseButton:
if !event.is_pressed():
return
var mouse_position = get_global_mouse_position()
var rect = get_global_rect()
if not rect.has_point(mouse_position):
return
if rect.has_point(mouse_position) and event.button_index == MOUSE_BUTTON_LEFT and event.is_pressed() and get_window().has_focus():
if event.button_index == MOUSE_BUTTON_LEFT:
left_clicked.emit()
elif rect.has_point(mouse_position) and event.button_index == MOUSE_BUTTON_RIGHT and event.is_pressed() and get_window().has_focus():
elif event.button_index == MOUSE_BUTTON_RIGHT:
right_clicked.emit()
elif event.button_index == MOUSE_BUTTON_RIGHT and !event.is_pressed():
un_right_clicked.emit()

View file

@ -1,5 +1,6 @@
[gd_scene load_steps=14 format=3 uid="uid://bhrelvt51cbp2"]
[gd_scene load_steps=15 format=3 uid="uid://bhrelvt51cbp2"]
[ext_resource type="Texture2D" uid="uid://cqladcrximh6" path="res://assets/card_base/Screenshot 2025-01-25 211435.png" id="1_nvo50"]
[ext_resource type="Script" path="res://ui/card_template/monster_card.gd" id="1_xddej"]
[ext_resource type="Texture2D" uid="uid://l2nxxhh0pvh8" path="res://assets/card_base/Frame.png" id="2_lhxdu"]
[ext_resource type="Texture2D" uid="uid://crgrple0uik7x" path="res://assets/card_base/Stroke.png" id="4_kkcc6"]
@ -32,9 +33,15 @@ name_label = NodePath("MarginContainer/MonsterNameLabel")
health_label = NodePath("MarginContainer/HealthLabel")
energy_pip_container = NodePath("MarginContainer/EnergyStarsContainer")
icon_texture_rect = NodePath("MarginContainer/TextureRect2/IconTextureRect")
paper_damage = NodePath("MarginContainer/HBoxContainer/Rock2/PaperLabel")
scissors_damage = NodePath("MarginContainer/HBoxContainer/Rock3/ScissorsLabel")
rock_damage = NodePath("MarginContainer/HBoxContainer/Rock/RockLabel")
paper_damage = NodePath("MarginContainer/Paper/PaperDamage")
scissors_damage = NodePath("MarginContainer/Scissors/ScissorsDamage")
rock_damage = NodePath("MarginContainer/Rock/RockDamage")
[node name="Screenshot2025-01-25211435" type="Sprite2D" parent="."]
visible = false
position = Vector2(355, 157)
scale = Vector2(0.625, 0.625)
texture = ExtResource("1_nvo50")
[node name="Frame" type="TextureRect" parent="."]
layout_mode = 1
@ -114,13 +121,12 @@ stretch_mode = 5
[node name="EnergyStarsContainer" type="HBoxContainer" parent="MarginContainer"]
unique_name_in_owner = true
layout_mode = 0
offset_left = 100.0
offset_top = 54.0
offset_right = 197.0
offset_bottom = 69.0
alignment = 2
offset_left = 141.0
offset_top = 55.0
offset_right = 200.0
offset_bottom = 70.0
[node name="TextureRect" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"]
[node name="TextureRect3" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"]
layout_mode = 2
texture = ExtResource("8_ophhb")
expand_mode = 3
@ -132,19 +138,7 @@ texture = ExtResource("8_ophhb")
expand_mode = 3
stretch_mode = 5
[node name="TextureRect3" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"]
layout_mode = 2
texture = ExtResource("8_ophhb")
expand_mode = 3
stretch_mode = 5
[node name="TextureRect4" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"]
layout_mode = 2
texture = ExtResource("8_ophhb")
expand_mode = 3
stretch_mode = 5
[node name="TextureRect5" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"]
[node name="TextureRect" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"]
layout_mode = 2
texture = ExtResource("8_ophhb")
expand_mode = 3
@ -162,7 +156,7 @@ offset_bottom = 80.0
grow_horizontal = 2
theme = ExtResource("9_6x2vq")
theme_override_font_sizes/font_size = 16
text = "HP 80/100"
text = "HP 80"
vertical_alignment = 1
[node name="MonsterNameLabel" type="Label" parent="MarginContainer"]
@ -191,7 +185,6 @@ expand_mode = 1
stretch_mode = 5
[node name="Label" type="Label" parent="MarginContainer/CardNumber"]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
@ -212,110 +205,77 @@ text = "#01"
horizontal_alignment = 1
vertical_alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -100.0
offset_top = -102.143
offset_right = 100.0
offset_bottom = -7.1427
grow_horizontal = 2
grow_vertical = 0
alignment = 1
[node name="Rock" type="Control" parent="MarginContainer/HBoxContainer"]
custom_minimum_size = Vector2(64, 0)
layout_mode = 2
size_flags_horizontal = 3
[node name="RockLabel" type="Label" parent="MarginContainer/HBoxContainer/Rock"]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -32.0
offset_right = 32.0
offset_bottom = 26.0
grow_horizontal = 2
theme = ExtResource("9_6x2vq")
theme_override_font_sizes/font_size = 24
text = "100"
horizontal_alignment = 1
vertical_alignment = 2
[node name="Rock" type="TextureRect" parent="MarginContainer/HBoxContainer/Rock"]
layout_mode = 2
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 30.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("12_a4kkh")
expand_mode = 1
stretch_mode = 5
[node name="Rock2" type="Control" parent="MarginContainer/HBoxContainer"]
custom_minimum_size = Vector2(64, 0)
layout_mode = 2
size_flags_horizontal = 3
[node name="PaperLabel" type="Label" parent="MarginContainer/HBoxContainer/Rock2"]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -32.0
offset_right = 32.0
offset_bottom = 26.0
grow_horizontal = 2
theme = ExtResource("9_6x2vq")
theme_override_font_sizes/font_size = 24
text = "10"
horizontal_alignment = 1
vertical_alignment = 2
[node name="Paper" type="TextureRect" parent="MarginContainer/HBoxContainer/Rock2"]
layout_mode = 2
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 30.0
grow_horizontal = 2
grow_vertical = 2
[node name="Paper" type="TextureRect" parent="MarginContainer"]
layout_mode = 0
offset_left = 109.0
offset_top = 183.0
offset_right = 222.0
offset_bottom = 356.0
texture = ExtResource("14_gm7k7")
expand_mode = 1
stretch_mode = 5
[node name="Rock3" type="Control" parent="MarginContainer/HBoxContainer"]
custom_minimum_size = Vector2(64, 0)
layout_mode = 2
size_flags_horizontal = 3
[node name="ScissorsLabel" type="Label" parent="MarginContainer/HBoxContainer/Rock3"]
[node name="PaperDamage" type="Label" parent="MarginContainer/Paper"]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -32.0
offset_right = 32.0
offset_bottom = 26.0
anchors_preset = 10
anchor_right = 1.0
offset_left = 48.0
offset_top = 32.0
offset_right = -32.0
offset_bottom = 73.0
grow_horizontal = 2
theme = ExtResource("9_6x2vq")
theme_override_font_sizes/font_size = 24
theme_override_font_sizes/font_size = 20
text = "10"
horizontal_alignment = 1
vertical_alignment = 2
vertical_alignment = 1
[node name="Scissors" type="TextureRect" parent="MarginContainer/HBoxContainer/Rock3"]
layout_mode = 2
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 30.0
grow_horizontal = 2
grow_vertical = 2
[node name="Scissors" type="TextureRect" parent="MarginContainer"]
layout_mode = 0
offset_left = 43.0
offset_top = 182.0
offset_right = 156.0
offset_bottom = 355.0
texture = ExtResource("13_ifoc6")
expand_mode = 1
stretch_mode = 5
[node name="ScissorsDamage" type="Label" parent="MarginContainer/Scissors"]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 10
anchor_right = 1.0
offset_left = 48.0
offset_top = 32.0
offset_right = -32.0
offset_bottom = 73.0
grow_horizontal = 2
theme = ExtResource("9_6x2vq")
theme_override_font_sizes/font_size = 20
text = "10"
vertical_alignment = 1
[node name="Rock" type="TextureRect" parent="MarginContainer"]
layout_mode = 0
offset_left = -23.0
offset_top = 181.0
offset_right = 90.0
offset_bottom = 354.0
texture = ExtResource("12_a4kkh")
expand_mode = 1
stretch_mode = 5
[node name="RockDamage" type="Label" parent="MarginContainer/Rock"]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 10
anchor_right = 1.0
offset_left = 48.0
offset_top = 32.0
offset_right = -32.0
offset_bottom = 73.0
grow_horizontal = 2
theme = ExtResource("9_6x2vq")
theme_override_font_sizes/font_size = 20
text = "10"
vertical_alignment = 1

View file

@ -6,9 +6,9 @@
[ext_resource type="Texture2D" uid="uid://crgrple0uik7x" path="res://assets/card_base/Stroke.png" id="3_qajq3"]
[ext_resource type="Texture2D" uid="uid://blejyda8mendg" path="res://assets/card_base/InnerFill.png" id="4_pgomu"]
[ext_resource type="Texture2D" uid="uid://by7ws88pn4tvb" path="res://assets/card_base/Separator.png" id="5_501uu"]
[ext_resource type="Texture2D" uid="uid://bwo6dfe1kpxhe" path="res://assets/support/insurance.png" id="6_bpwac"]
[ext_resource type="Texture2D" uid="uid://0gxplli5krq2" path="res://assets/card_base/Pill.png" id="6_ce7hm"]
[ext_resource type="Theme" uid="uid://is34t82g4jg" path="res://cards.tres" id="7_va1d7"]
[ext_resource type="Theme" path="res://cards.tres" id="7_va1d7"]
[ext_resource type="Texture2D" uid="uid://rh3aswb0p7ri" path="res://assets/energy.png" id="8_4yq42"]
[ext_resource type="FontFile" uid="uid://08q3kkwmd4u6" path="res://assets/Inter-Regular.otf" id="10_c2ugn"]
[node name="CardBase" type="Control" node_paths=PackedStringArray("card_name_label", "card_desc_label", "icon_rect")]
@ -77,17 +77,6 @@ grow_vertical = 2
texture = ExtResource("4_pgomu")
expand_mode = 1
[node name="Icon" type="TextureRect" parent="MarginContainer"]
layout_mode = 0
offset_left = 2.0
offset_top = 63.0
offset_right = 209.0
offset_bottom = 203.0
pivot_offset = Vector2(304.286, 120.143)
texture = ExtResource("6_bpwac")
expand_mode = 1
stretch_mode = 6
[node name="InnerStroke" type="NinePatchRect" parent="MarginContainer"]
layout_mode = 1
anchors_preset = 15
@ -158,6 +147,16 @@ text = "Green card"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Icon" type="TextureRect" parent="MarginContainer"]
layout_mode = 0
offset_left = 26.0
offset_top = 74.0
offset_right = 169.0
offset_bottom = 179.0
texture = ExtResource("8_4yq42")
expand_mode = 1
stretch_mode = 6
[node name="DescriptionLabel" type="Label" parent="MarginContainer"]
layout_mode = 0
offset_left = 11.0