Compare commits

...
Sign in to create a new pull request.

36 commits

Author SHA1 Message Date
Kenshia
3e8dc34646 Merge branch 'main' of https://forge.darkwagonstudio.com/dark-wagon-studio/tcg 2025-01-26 11:51:59 +07:00
Kenshia
83df3047f7 feat: card zoom 2025-01-26 11:49:25 +07:00
72a1418914 fix: all out attack scope
fix: HP placeholder
2025-01-26 11:36:53 +07:00
e7c0782099 Merge pull request 'feat: win-lose-tie at game end' (#4) from win-lose-tie into main
Reviewed-on: https://forge.darkwagonstudio.com/dark-wagon-studio/tcg/pulls/4
2025-01-26 11:33:25 +07:00
4d041be88d Merge remote-tracking branch 'origin/main' into win-lose-tie 2025-01-26 11:32:48 +07:00
728d848e5b feat: damage incoming -> HP +- 2025-01-26 11:32:17 +07:00
kennetha123
cd9f7c7679 Merge branch 'main' of https://forge.darkwagonstudio.com/dark-wagon-studio/tcg 2025-01-26 11:30:50 +07:00
kennetha123
7b6be434a8 feat: add card images 2025-01-26 11:30:35 +07:00
abd2feaab8 feat: win-lose-tie at game end 2025-01-26 11:26:09 +07:00
Kenshia
41a72709df feat: card hover 2025-01-26 11:14:32 +07:00
bd9b9a35d8 Merge pull request 'feat: phase info on right hand side of the board' (#3) from visible-phase into main
Reviewed-on: https://forge.darkwagonstudio.com/dark-wagon-studio/tcg/pulls/3
2025-01-26 11:08:41 +07:00
7903af9463 Merge remote-tracking branch 'origin/main' into visible-phase 2025-01-26 11:08:09 +07:00
02ee129b42 merge: script changes 2025-01-26 11:07:08 +07:00
kennetha123
0d261242b3 feat: energy decrease 2025-01-26 11:01:55 +07:00
a0475c8588 feat: phase info on right hand side of the board 2025-01-26 10:59:39 +07:00
kennetha123
5395f971cb feat: rps button with texture 2025-01-26 10:36:55 +07:00
46e4ba0fbb feat: monster card 2025-01-26 09:48:01 +07:00
3220f4937f fix: grammar issue 2025-01-26 07:31:48 +07:00
kennetha123
64e79704bf fix: minor spelling mistakes 2025-01-26 07:15:58 +07:00
kennetha123
ca9c7b8e50 fix: minor spelling mistake 2025-01-26 06:31:06 +07:00
064559130c fix: add support card only if not instant 2025-01-26 05:05:45 +07:00
fc70d205b3 feat: implement support cards
- insurance
- absorb
- tanker
- lifesteal
- sword mastery
- invisibility
- potion
- all out attack
2025-01-26 05:00:37 +07:00
152ade51da Merge remote-tracking branch 'origin/sword_mastery' into implement_support_cards 2025-01-26 04:07:50 +07:00
kennetha123
3f99175dfe Merge branch 'main' of https://forge.darkwagonstudio.com/dark-wagon-studio/tcg 2025-01-26 02:51:07 +07:00
kennetha123
3141066258 feat: implement all support card tres 2025-01-26 02:50:21 +07:00
6026a32429 feat: Sword Masteryyyy 2025-01-26 02:48:27 +07:00
3ac654af4f fix: remove placeholder cards 2025-01-26 02:32:21 +07:00
Kenshia
5af462e78d feat: new cards in game 2025-01-26 01:58:35 +07:00
Kenshia
2c4e9d90f3 feat: user always play bottom 2025-01-25 22:35:11 +07:00
kennetha123
bebb7b467b wip: monster card 2025-01-25 22:00:20 +07:00
172ce12e79 Merge pull request 'multiplayer_and_some_card_art' (#2) from multiplayer-and-card-art into main
Reviewed-on: https://forge.darkwagonstudio.com/dark-wagon-studio/tcg/pulls/2
2025-01-25 19:58:36 +07:00
Kenshia
6156666665 Merge remote-tracking branch 'origin/card-art' into multiplayer-and-card-art 2025-01-25 18:49:32 +07:00
Kenshia
6c6e1b3289 feat: more multiplayer 2025-01-25 18:47:56 +07:00
Kenshia
3981646279 Merge branch 'server_discovery' into checkpoint_first_merge 2025-01-25 15:12:50 +07:00
Kenshia
0f5f1d466f fix: start game text & disconnect signal 2025-01-25 11:50:10 +07:00
Kenshia
3521732cd2 feat: server discovery 2025-01-25 11:45:55 +07:00
118 changed files with 3440 additions and 291 deletions

BIN
assets/card_base/Illustrated BG.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dft4fbgoecbp4"
path="res://.godot/imported/Illustrated BG.png-181034664aa2e590183e18ee7ca1bfaa.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/Illustrated BG.png"
dest_files=["res://.godot/imported/Illustrated BG.png-181034664aa2e590183e18ee7ca1bfaa.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/Monster-InnerFill.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c2qyx2k50v2vv"
path="res://.godot/imported/Monster-InnerFill.png-93b412d347601958a4d2176fe728b492.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/Monster-InnerFill.png"
dest_files=["res://.godot/imported/Monster-InnerFill.png-93b412d347601958a4d2176fe728b492.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/Pip.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cjmxetjq82rl2"
path="res://.godot/imported/Pip.png-de8c266f2e2c9cd5a4519b7d5df4868e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/Pip.png"
dest_files=["res://.godot/imported/Pip.png-de8c266f2e2c9cd5a4519b7d5df4868e.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/RPS Panel.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d0a2opcuwsko8"
path="res://.godot/imported/RPS Panel.png-ccba378cf0e54a7db466c513ef19441b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/RPS Panel.png"
dest_files=["res://.godot/imported/RPS Panel.png-ccba378cf0e54a7db466c513ef19441b.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/Screenshot 2025-01-25 211435.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cqladcrximh6"
path="res://.godot/imported/Screenshot 2025-01-25 211435.png-7837967bcc49e81c793d612b9d970963.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/Screenshot 2025-01-25 211435.png"
dest_files=["res://.godot/imported/Screenshot 2025-01-25 211435.png-7837967bcc49e81c793d612b9d970963.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/Star.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cqttp0i3vph37"
path="res://.godot/imported/Star.png-b9b4017ee1202aa95ea8c6ee772a751e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/Star.png"
dest_files=["res://.godot/imported/Star.png-b9b4017ee1202aa95ea8c6ee772a751e.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/batu.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bywa8qlwvcksd"
path="res://.godot/imported/batu.png-45758b8e11a9ea003a7865de11dc4441.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/batu.png"
dest_files=["res://.godot/imported/batu.png-45758b8e11a9ea003a7865de11dc4441.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/gunting.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ch04c20lkis6j"
path="res://.godot/imported/gunting.png-f8810080ad1e41ec3bcb0f8ff0d8b5f8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/gunting.png"
dest_files=["res://.godot/imported/gunting.png-f8810080ad1e41ec3bcb0f8ff0d8b5f8.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/illust bg 1.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b0pclmv0j0r12"
path="res://.godot/imported/kertas.png-fd031884ac9417a6b135672f3fcc1d7f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/kertas.png"
dest_files=["res://.godot/imported/kertas.png-fd031884ac9417a6b135672f3fcc1d7f.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/Goldfish 2.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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/froggo 1.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b8accn4e2ojau"
path="res://.godot/imported/froggo 1.png-9f147da84c624d2073b0c92236a84741.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/froggo 1.png"
dest_files=["res://.godot/imported/froggo 1.png-9f147da84c624d2073b0c92236a84741.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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[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,4 +1,4 @@
[gd_resource type="Theme" load_steps=2 format=3 uid="uid://cj3vs5hq2mcbp"]
[gd_resource type="Theme" load_steps=2 format=3 uid="uid://is34t82g4jg"]
[ext_resource type="FontFile" uid="uid://ncoq4i61plvt" path="res://assets/Bohemian Soul.otf" id="1_yowck"]

View file

@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://di76avwc0gn8e"]
[ext_resource type="Texture2D" uid="uid://wdyu7txs2ijg" path="res://assets/monster/axolotl 3.png" id="1_j0l6n"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_s0p53"]
[resource]
script = ExtResource("1_s0p53")
rock = 20
paper = 30
scissors = 50
energy_cost = 1
base_health = 120
name = "Axoluna"
description = "Cute wanderer of the tank, Axoluna"
icon = ExtResource("1_j0l6n")

View file

@ -1,11 +0,0 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://cs7q8i7bvohmj"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_v65bb"]
[resource]
script = ExtResource("1_v65bb")
rock = 100
paper = 100
scissors = 100
energy_cost = 3
base_health = 170

View file

@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 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")
rock = 10
paper = 30
scissors = 70
energy_cost = 1
base_health = 50
name = "Bunnaut"
description = "Run faster than tortoise."
icon = ExtResource("1_xibsw")

View file

@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 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]
script = ExtResource("1_n3oql")
rock = 100
paper = 40
scissors = 80
energy_cost = 3
base_health = 170
name = "Capytain"
description = "A big, hungry capybara"
icon = ExtResource("1_mulam")

View file

@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 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")
rock = 10
paper = 10
scissors = 200
energy_cost = 3
base_health = 80
name = "Cattogato"
description = "Lovely cat wandering in the space."
icon = ExtResource("1_xles7")

View file

@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://bt1ngixrq4sve"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_ayfld"]
[ext_resource type="Texture2D" uid="uid://b8accn4e2ojau" path="res://assets/monster/froggo 1.png" id="1_vlu3d"]
[resource]
script = ExtResource("1_ayfld")
rock = 20
paper = 30
scissors = 50
energy_cost = 1
base_health = 80
name = "Froguvo"
description = "Ribbit in space."
icon = ExtResource("1_vlu3d")

View file

@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 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")
rock = 40
paper = 10
scissors = 10
energy_cost = 1
base_health = 120
name = "Gilli"
description = "There is a huge monster looking at me everyday."
icon = ExtResource("1_62dnj")

View file

@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 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]
script = ExtResource("1_yvmeg")
rock = 40
paper = 60
scissors = 50
energy_cost = 2
base_health = 110
name = "Jellova"
description = "I'm gonna whip you till' you .. nevermind."
icon = ExtResource("1_t6381")

View file

@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 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]
script = ExtResource("1_xcdwy")
rock = 30
paper = 30
scissors = 30
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

@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 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")
rock = 60
paper = 60
scissors = 10
energy_cost = 2
base_health = 100
name = "Prankie"
description = "I'm not pranking anyone. Yet."
icon = ExtResource("1_75ppb")

View file

@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 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]
script = ExtResource("1_a8rjn")
rock = 50
paper = 20
scissors = 40
energy_cost = 1
base_health = 70
name = "Quackle"
description = "Quack! Quack! No one notice me."
icon = ExtResource("1_4f7pv")

View file

@ -1,11 +0,0 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://di76avwc0gn8e"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_j4601"]
[resource]
script = ExtResource("1_j4601")
rock = 50
paper = 50
scissors = 50
energy_cost = 1
base_health = 120

View file

@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 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")
scope = "turn"
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

@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 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"
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

@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://dcimexx4twoe2"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_jl6i7"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_p06c1"]
[resource]
script = ExtResource("2_p06c1")
type = "green"
priority = 0
effects = Array[ExtResource("1_jl6i7")]([null])
name = "Attack Mode"
description = "If you have Prankie in your Active Monster Field, set all Rock Paper Scissor to 100 permanently."

View file

@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://5n2o4m7xqd13"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_w4l0x"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_n7fiv"]
[resource]
script = ExtResource("2_n7fiv")
type = "green"
priority = 0
effects = Array[ExtResource("1_w4l0x")]([null])
name = "Caller"
description = "Get 1 monster of your choice to your hand. Shuffle it afterwards."

View file

@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://bk6myqvoklhqp"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_7f5cd"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_prilx"]
[resource]
script = ExtResource("2_prilx")
type = "red"
priority = 0
effects = Array[ExtResource("1_7f5cd")]([null])
name = "Cash Back"
description = "If your monster died during this turn, Refund all the energy being used by the monster sent to graveyard."

View file

@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://ca0fengr2xjps"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_r7m0a"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_g1u6x"]
[resource]
script = ExtResource("2_g1u6x")
type = "green"
priority = 0
effects = Array[ExtResource("1_r7m0a")]([null])
name = "Catcher"
description = "For one turn, swap your Active Enemy card with your Active Monster card. If the card you previously used died during this turn, you can keep the enemy monster card."

View file

@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 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")
scope = "turn"
type = "green"
effects = Array[ExtResource("1_pkc1x")]([null])
name = "Energy Booster"
description = "Add 1 additional Energy."
icon = ExtResource("2_lxctl")

View file

@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 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")
scope = "turn"
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

@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 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"
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

@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 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]
script = ExtResource("2_khaf1")
scope = "turn"
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

@ -0,0 +1,13 @@
[gd_resource type="Resource" script_class="SimpleSupportCard" load_steps=3 format=3 uid="uid://cl0jcer7o04uc"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_awvxv"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_tr5ug"]
[resource]
script = ExtResource("2_tr5ug")
scope = "turn"
magnitude = 0
type = "red"
effects = Array[ExtResource("1_awvxv")]([null])
name = "Negate"
description = "Cancel 1 of the Support Card played by your opponent. This card will always be played last."

View file

@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://crn3qovkygo6l"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_gqbio"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_rr70q"]
[resource]
script = ExtResource("2_rr70q")
type = "green"
priority = 0
effects = Array[ExtResource("1_gqbio")]([null])
name = "Force Paper"
description = "Forcing enemy to pick Paper during this turn."

View file

@ -1,9 +1,9 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=6 format=3 uid="uid://4eod3m0vc5a8"]
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=6 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/support_card.gd" id="3_6r4k4"]
[ext_resource type="Texture2D" uid="uid://rh3aswb0p7ri" path="res://assets/energy.png" id="3_kyx3v"]
[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")
@ -11,10 +11,10 @@ magnitude = 30
effect = ExtResource("2_k1cnl")
[resource]
script = ExtResource("3_6r4k4")
script = ExtResource("3_at5nt")
scope = "turn"
type = "green"
priority = 0
effects = Array[ExtResource("1_ujm0o")]([SubResource("Resource_88lmk")])
name = "Potion"
description = "Heal 30 HP"
icon = ExtResource("3_kyx3v")
icon = ExtResource("3_hk8kx")

View file

@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 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"
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

@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://cljmcpwa44j6b"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_2w2ve"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_r3faa"]
[resource]
script = ExtResource("2_r3faa")
type = "green"
priority = 0
effects = Array[ExtResource("1_2w2ve")]([null])
name = "Retreat"
description = "Swap your monster in Active Field with the one in your hand. The energy cost for summoning decreased by 1."

View file

@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://c3o6lxj0m6yod"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_y5oux"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_7m5wu"]
[resource]
script = ExtResource("2_7m5wu")
type = "red"
priority = 0
effects = Array[ExtResource("1_y5oux")]([null])
name = "Reviver"
description = "Revive 1 Monster of your choice from your graveyard, and move it into your hand."

View file

@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://defdobjmiloth"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_hx76y"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_oinlp"]
[resource]
script = ExtResource("2_oinlp")
type = "green"
priority = 0
effects = Array[ExtResource("1_hx76y")]([null])
name = "Force Rock"
description = "Forcing enemy to pick Rock during this turn."

View file

@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://d304v2sfewmp5"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_q82mb"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_yklgt"]
[resource]
script = ExtResource("2_yklgt")
type = "red"
priority = 0
effects = Array[ExtResource("1_q82mb")]([null])
name = "Force Scissor"
description = "Forcing enemy to pick Scissor during this turn."

View file

@ -0,0 +1,20 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=6 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")
magnitude = 20
effect = ExtResource("2_omhdb")
[resource]
script = ExtResource("3_37rh4")
scope = "monster"
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

@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 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"
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

@ -0,0 +1,6 @@
[gd_resource type="Resource" script_class="SupportCardEffect" load_steps=2 format=3 uid="uid://bs4i85slalkgd"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect.gd" id="1_43nry"]
[resource]
script = ExtResource("1_43nry")

View file

@ -1,62 +1,135 @@
extends Control
class_name DemoGame
signal own_played_card(card: Card)
signal opponent_played_card(card: Card)
signal own_played_rts(move: String)
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
@onready var match_manager: MatchManager = $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 = {}
var player_action_queue: Dictionary
var player_1_action: Action:
get:
return player_action_queue.get(MatchManager.PLAYER_1_ID)
return player_action_queue.get(own_side.player_id)
set(value):
player_action_queue[MatchManager.PLAYER_1_ID] = value
player_action_queue[own_side.player_id] = value
var player_2_action: Action:
get:
return player_action_queue.get(MatchManager.PLAYER_2_ID)
return player_action_queue.get(opponent_side.player_id)
set(value):
player_action_queue[MatchManager.PLAYER_2_ID] = value
player_action_queue[opponent_side.player_id] = value
var id
var signal_connected := false
func _ready() -> void:
_update_phase_info(Match.Phase.PREGAME)
func init(player_id: int) -> void:
id = player_id
own_side.player_id = player_id
opponent_side.player_id = MatchManager.PLAYER_2_ID if player_id == MatchManager.PLAYER_1_ID else MatchManager.PLAYER_1_ID
id_to_card.clear()
var cards = player_1_deck.duplicate()
cards.append_array(player_2_deck)
for card in cards:
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
})
own_side.attach(match_manager)
opponent_side.attach(match_manager)
}, own_side.player_id, opponent_side.player_id)
own_side.attach(match_manager, true)
opponent_side.attach(match_manager, false)
if !signal_connected:
match_manager.state_transitioned.connect(_on_match_manager_state_transitioned)
signal_connected = true
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:
#match_manager.resolve({})
pass
func rpc_start_game() -> void:
match_manager.resolve({})
func _on_own_play_card(card: Card) -> void:
if card:
player_1_action = ActionPlayCard.new(card)
own_played_card.emit(card)
else:
player_1_action = ActionSkipCard.new()
own_played_card.emit(null)
print(id, " _on_own_play_card", player_1_action, player_2_action)
if player_2_action:
match_manager.resolve(player_action_queue)
player_action_queue.clear()
func _on_opponent_play_card(card: Card) -> void:
func rpc_opponent_play_card(id: String) -> void:
if !id.is_empty():
var card = id_to_card[id]
player_2_action = ActionPlayCard.new(card)
else:
player_2_action = ActionSkipCard.new()
print(self.id , " rpc_opponent_play_card", player_1_action, player_2_action)
if player_1_action:
match_manager.resolve(player_action_queue)
player_action_queue.clear()
func _on_own_rps_move(move: String) -> void:
player_1_action = ActionRPSMove.new(move)
own_played_rts.emit(move)
print(id, " _on_own_rps_move", player_1_action, player_2_action, move)
if player_2_action:
match_manager.resolve(player_action_queue)
player_action_queue.clear()
func _on_opponent_rps_move(move: String) -> void:
func rpc_opponent_rps_move(move: String) -> void:
player_2_action = ActionRPSMove.new(move)
print(id, " rpc_opponent_rps_move", player_1_action, player_2_action, move)
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,12 +1,28 @@
[gd_scene load_steps=8 format=3 uid="uid://bgc0u117jqyr1"]
[gd_scene load_steps=24 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"]
[ext_resource type="Script" path="res://tcg/card/card.gd" id="2_xuft0"]
[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/baraga.tres" id="3_we1tk"]
[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://di76avwc0gn8e" path="res://data/cards/monster/taiman.tres" id="5_3cm5x"]
[ext_resource type="Resource" uid="uid://deo8mj887rfx1" 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"]
[ext_resource type="PackedScene" uid="uid://b60vuykleugjn" path="res://ui/card_template/skip_card.tscn" id="7_skjyk"]
[ext_resource type="PackedScene" uid="uid://dg5amjm1gqi06" path="res://ui/card_template/support_card_green.tscn" id="8_dytl5"]
[ext_resource type="Resource" uid="uid://be01tdq1fxlct" path="res://data/cards/support/absorb.tres" id="8_ewr4v"]
[ext_resource type="PackedScene" uid="uid://cds50kwwhlgam" path="res://ui/card_template/support_card_red.tscn" id="9_cabcc"]
[ext_resource type="Resource" uid="uid://dfocg5yfh22e8" path="res://data/cards/support/insurance.tres" id="9_ga5hf"]
[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
@ -16,134 +32,256 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_jn16u")
player_1_deck = Array[ExtResource("2_xuft0")]([ExtResource("3_we1tk"), ExtResource("4_kkhfk"), ExtResource("4_kkhfk")])
player_2_deck = Array[ExtResource("2_xuft0")]([ExtResource("5_3cm5x"), ExtResource("4_kkhfk"), ExtResource("4_kkhfk")])
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="Own" type="VBoxContainer" parent="." node_paths=PackedStringArray("deck", "monster_name_label", "monster_health_label", "incoming_damage_label", "energy_label")]
[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")]
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -131.0
grow_horizontal = 2
grow_vertical = 0
alignment = 2
grow_vertical = 2
script = ExtResource("2_w4tnt")
deck = NodePath("Hand")
monster_name_label = NodePath("Monster/VBoxContainer/NameLabel")
monster_health_label = NodePath("Monster/VBoxContainer/HealthLabel")
incoming_damage_label = NodePath("Monster/VBoxContainer/IncomingDamageLabel")
energy_label = NodePath("HBoxContainer/EnergyLabel")
energy_label = NodePath("EnergyLabel")
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="Monster" type="HBoxContainer" parent="Own"]
custom_minimum_size = Vector2(0, 128)
layout_mode = 2
[node name="MonsterCard" parent="Own" instance=ExtResource("7_4ah45")]
custom_minimum_size = Vector2(220, 330)
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
anchor_bottom = 0.0
offset_left = -110.0
offset_top = 20.0
offset_right = 110.0
offset_bottom = 350.0
grow_vertical = 1
pivot_offset = Vector2(110, 0)
size_flags_horizontal = 4
alignment = 1
size_flags_vertical = 4
[node name="VBoxContainer" type="VBoxContainer" parent="Own/Monster"]
layout_mode = 2
[node name="Support1GreenCard" parent="Own" instance=ExtResource("8_dytl5")]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -310.0
offset_top = 75.0
offset_right = -90.0
offset_bottom = 395.0
grow_horizontal = 2
pivot_offset = Vector2(110, 0)
[node name="NameLabel" type="Label" parent="Own/Monster/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
text = "Name:"
[node name="Support2GreenCard" parent="Own" instance=ExtResource("8_dytl5")]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = 90.0
offset_top = 75.0
offset_right = 310.0
offset_bottom = 395.0
grow_horizontal = 2
pivot_offset = Vector2(110, 0)
[node name="HealthLabel" type="Label" parent="Own/Monster/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
text = "Health:"
[node name="Support2RedCard" parent="Own" instance=ExtResource("9_cabcc")]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = 90.0
offset_top = 75.0
offset_right = 310.0
offset_bottom = 395.0
grow_horizontal = 2
pivot_offset = Vector2(110, 0)
[node name="IncomingDamageLabel" type="Label" parent="Own/Monster/VBoxContainer"]
custom_minimum_size = Vector2(128, 0)
layout_mode = 2
size_flags_vertical = 3
text = "Incoming Damage:"
vertical_alignment = 2
[node name="HBoxContainer" type="HBoxContainer" parent="Own"]
layout_mode = 2
[node name="EnergyLabel" type="Label" parent="Own/HBoxContainer"]
layout_mode = 2
[node name="EnergyLabel" type="Label" parent="Own"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -90.0
offset_right = 1152.0
offset_bottom = -67.0
grow_vertical = 0
text = "Energy:"
[node name="Hand" type="HBoxContainer" parent="Own"]
layout_mode = 2
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -446.0
offset_top = -370.0
offset_right = 446.0
grow_horizontal = 2
grow_vertical = 0
pivot_offset = Vector2(0, 150)
alignment = 1
[node name="Button" type="Button" parent="Own/Hand"]
[node name="SkipCard" parent="Own/Hand" instance=ExtResource("7_skjyk")]
layout_mode = 2
text = "CARD_1"
[node name="Button2" type="Button" parent="Own/Hand"]
[node name="MonsterCard" parent="Own/Hand" instance=ExtResource("7_4ah45")]
layout_mode = 2
text = "CARD_2"
[node name="Button3" type="Button" parent="Own/Hand"]
[node name="CardBase" parent="Own/Hand" instance=ExtResource("8_dytl5")]
layout_mode = 2
text = "CARD_3"
[node name="Opponent" type="VBoxContainer" parent="." node_paths=PackedStringArray("deck", "monster_name_label", "monster_health_label", "incoming_damage_label", "energy_label")]
[node name="CardBase2" parent="Own/Hand" instance=ExtResource("9_cabcc")]
layout_mode = 2
[node name="IncomingDamageLabel" type="Label" parent="Own"]
layout_mode = 1
anchors_preset = 10
anchor_right = 1.0
offset_bottom = 190.0
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
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")
[node name="Opponent" type="Control" parent="." node_paths=PackedStringArray("deck", "energy_label")]
layout_mode = 1
anchor_right = 1.0
anchor_bottom = 0.5
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("2_w4tnt")
player_id = 1
deck = NodePath("Hand")
monster_name_label = NodePath("Monster/VBoxContainer/NameLabel")
monster_health_label = NodePath("Monster/VBoxContainer/HealthLabel")
incoming_damage_label = NodePath("Monster/VBoxContainer/IncomingDamageLabel")
energy_label = NodePath("EnergyLabel")
[node name="MonsterCard" parent="Opponent" instance=ExtResource("7_4ah45")]
custom_minimum_size = Vector2(220, 330)
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
offset_left = -110.0
offset_top = -350.0
offset_right = 110.0
offset_bottom = -20.0
grow_vertical = 0
pivot_offset = Vector2(110, 330)
size_flags_horizontal = 4
size_flags_vertical = 4
[node name="Support1GreenCard" parent="Opponent" instance=ExtResource("8_dytl5")]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -310.0
offset_top = -465.0
offset_right = -90.0
offset_bottom = -145.0
grow_horizontal = 2
grow_vertical = 0
pivot_offset = Vector2(110, 320)
[node name="Support2GreenCard" parent="Opponent" instance=ExtResource("8_dytl5")]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = 90.0
offset_top = -465.0
offset_right = 310.0
offset_bottom = -145.0
grow_horizontal = 2
grow_vertical = 0
pivot_offset = Vector2(110, 320)
[node name="Support2RedCard" parent="Opponent" instance=ExtResource("9_cabcc")]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = 90.0
offset_top = -465.0
offset_right = 310.0
offset_bottom = -145.0
grow_horizontal = 2
grow_vertical = 0
pivot_offset = Vector2(110, 320)
[node name="Hand" type="HBoxContainer" parent="Opponent"]
layout_mode = 2
layout_mode = 1
anchors_preset = 10
anchor_right = 1.0
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
offset_right = 1152.0
offset_bottom = 58.0
text = "Energy:"
[node name="Monster" type="HBoxContainer" parent="Opponent"]
custom_minimum_size = Vector2(0, 128)
layout_mode = 2
size_flags_horizontal = 4
alignment = 1
[node name="VBoxContainer" type="VBoxContainer" parent="Opponent/Monster"]
layout_mode = 2
[node name="NameLabel" type="Label" parent="Opponent/Monster/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
text = "Name: "
[node name="HealthLabel" type="Label" parent="Opponent/Monster/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
text = "Health:"
[node name="IncomingDamageLabel" type="Label" parent="Opponent/Monster/VBoxContainer"]
custom_minimum_size = Vector2(128, 0)
layout_mode = 2
size_flags_vertical = 3
text = "Incoming Damage:"
vertical_alignment = 2
[node name="IncomingDamageLabel" type="Label" parent="Opponent"]
layout_mode = 1
anchors_preset = 7
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
grow_horizontal = 2
grow_vertical = 0
text = "HP +0"
[node name="StartGameButton" type="Button" parent="."]
layout_mode = 1
@ -162,8 +300,75 @@ 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

@ -130,3 +130,211 @@ Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorActi
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'"
[preset.2]
name="Android"
platform="Android"
runnable=true
advanced_options=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=""
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.2.options]
custom_template/debug=""
custom_template/release=""
gradle_build/use_gradle_build=false
gradle_build/gradle_build_directory=""
gradle_build/android_source_template=""
gradle_build/compress_native_libraries=false
gradle_build/export_format=0
gradle_build/min_sdk=""
gradle_build/target_sdk=""
architectures/armeabi-v7a=false
architectures/arm64-v8a=true
architectures/x86=false
architectures/x86_64=false
version/code=1
version/name=""
package/unique_name="com.example.$genname"
package/name=""
package/signed=true
package/app_category=2
package/retain_data_on_uninstall=false
package/exclude_from_recents=false
package/show_in_android_tv=false
package/show_in_app_library=true
package/show_as_launcher_app=false
launcher_icons/main_192x192=""
launcher_icons/adaptive_foreground_432x432=""
launcher_icons/adaptive_background_432x432=""
graphics/opengl_debug=false
xr_features/xr_mode=0
screen/immersive_mode=true
screen/support_small=true
screen/support_normal=true
screen/support_large=true
screen/support_xlarge=true
user_data_backup/allow=false
command_line/extra_args=""
apk_expansion/enable=false
apk_expansion/SALT=""
apk_expansion/public_key=""
permissions/custom_permissions=PackedStringArray()
permissions/access_checkin_properties=false
permissions/access_coarse_location=false
permissions/access_fine_location=false
permissions/access_location_extra_commands=false
permissions/access_mock_location=false
permissions/access_network_state=false
permissions/access_surface_flinger=false
permissions/access_wifi_state=false
permissions/account_manager=false
permissions/add_voicemail=false
permissions/authenticate_accounts=false
permissions/battery_stats=false
permissions/bind_accessibility_service=false
permissions/bind_appwidget=false
permissions/bind_device_admin=false
permissions/bind_input_method=false
permissions/bind_nfc_service=false
permissions/bind_notification_listener_service=false
permissions/bind_print_service=false
permissions/bind_remoteviews=false
permissions/bind_text_service=false
permissions/bind_vpn_service=false
permissions/bind_wallpaper=false
permissions/bluetooth=false
permissions/bluetooth_admin=false
permissions/bluetooth_privileged=false
permissions/brick=false
permissions/broadcast_package_removed=false
permissions/broadcast_sms=false
permissions/broadcast_sticky=false
permissions/broadcast_wap_push=false
permissions/call_phone=false
permissions/call_privileged=false
permissions/camera=false
permissions/capture_audio_output=false
permissions/capture_secure_video_output=false
permissions/capture_video_output=false
permissions/change_component_enabled_state=false
permissions/change_configuration=false
permissions/change_network_state=false
permissions/change_wifi_multicast_state=false
permissions/change_wifi_state=false
permissions/clear_app_cache=false
permissions/clear_app_user_data=false
permissions/control_location_updates=false
permissions/delete_cache_files=false
permissions/delete_packages=false
permissions/device_power=false
permissions/diagnostic=false
permissions/disable_keyguard=false
permissions/dump=false
permissions/expand_status_bar=false
permissions/factory_test=false
permissions/flashlight=false
permissions/force_back=false
permissions/get_accounts=false
permissions/get_package_size=false
permissions/get_tasks=false
permissions/get_top_activity_info=false
permissions/global_search=false
permissions/hardware_test=false
permissions/inject_events=false
permissions/install_location_provider=false
permissions/install_packages=false
permissions/install_shortcut=false
permissions/internal_system_window=false
permissions/internet=false
permissions/kill_background_processes=false
permissions/location_hardware=false
permissions/manage_accounts=false
permissions/manage_app_tokens=false
permissions/manage_documents=false
permissions/manage_external_storage=false
permissions/master_clear=false
permissions/media_content_control=false
permissions/modify_audio_settings=false
permissions/modify_phone_state=false
permissions/mount_format_filesystems=false
permissions/mount_unmount_filesystems=false
permissions/nfc=false
permissions/persistent_activity=false
permissions/post_notifications=false
permissions/process_outgoing_calls=false
permissions/read_calendar=false
permissions/read_call_log=false
permissions/read_contacts=false
permissions/read_external_storage=false
permissions/read_frame_buffer=false
permissions/read_history_bookmarks=false
permissions/read_input_state=false
permissions/read_logs=false
permissions/read_phone_state=false
permissions/read_profile=false
permissions/read_sms=false
permissions/read_social_stream=false
permissions/read_sync_settings=false
permissions/read_sync_stats=false
permissions/read_user_dictionary=false
permissions/reboot=false
permissions/receive_boot_completed=false
permissions/receive_mms=false
permissions/receive_sms=false
permissions/receive_wap_push=false
permissions/record_audio=false
permissions/reorder_tasks=false
permissions/restart_packages=false
permissions/send_respond_via_message=false
permissions/send_sms=false
permissions/set_activity_watcher=false
permissions/set_alarm=false
permissions/set_always_finish=false
permissions/set_animation_scale=false
permissions/set_debug_app=false
permissions/set_orientation=false
permissions/set_pointer_speed=false
permissions/set_preferred_applications=false
permissions/set_process_limit=false
permissions/set_time=false
permissions/set_time_zone=false
permissions/set_wallpaper=false
permissions/set_wallpaper_hints=false
permissions/signal_persistent_processes=false
permissions/status_bar=false
permissions/subscribed_feeds_read=false
permissions/subscribed_feeds_write=false
permissions/system_alert_window=false
permissions/transmit_ir=false
permissions/uninstall_shortcut=false
permissions/update_device_stats=false
permissions/use_credentials=false
permissions/use_sip=false
permissions/vibrate=false
permissions/wake_lock=false
permissions/write_apn_settings=false
permissions/write_calendar=false
permissions/write_call_log=false
permissions/write_contacts=false
permissions/write_external_storage=false
permissions/write_gservices=false
permissions/write_history_bookmarks=false
permissions/write_profile=false
permissions/write_secure_settings=false
permissions/write_settings=false
permissions/write_sms=false
permissions/write_social_stream=false
permissions/write_sync_settings=false
permissions/write_user_dictionary=false

BIN
icon.svg (Stored with Git LFS)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 994 B

After

Width:  |  Height:  |  Size: 128 B

Before After
Before After

212
main.gd
View file

@ -1,76 +1,204 @@
extends Node
class_name MainNode
const PORT = 25565
const PORT_RANGE := 10
const MAX_CONNECTIONS = 20
var counter = 0
@onready var before_connect_container = get_node("BeforeConnect") as Container
@onready var host_text_edit = get_node("%HostTextEdit") as TextEdit
@onready var connect_button = get_node("%ConnectButton") as Button
@onready var host_button = get_node("%HostButton") as Button
@onready var server_discovery = get_node("%ServerDiscovery") as ServerDiscovery
@onready var after_connect_container = get_node("%AfterConnect") as Container
@onready var counter_label = get_node("%CounterLabel") as Label
@onready var decrement_button = get_node("%DecrementButton") as Button
@onready var increment_button = get_node("%IncrementButton") as Button
@onready var after_connect_container = get_node("%AfterConnect") as Node
@onready var disconnect_button = get_node("%DisconnectButton") as Button
@onready var demo_game = get_node("AfterConnect/DemoGame") as DemoGame
@onready var start_game_button = (get_node("AfterConnect/DemoGame") as DemoGame).start_game_btn
var active_port: int
var server_buttons: Dictionary = Dictionary()
var base_seed: int
func _clean_room():
# this is if someone left the room and we will just clean the game room again
# should only called on host
# need to clean for server
pass
func _on_start_game_clicked():
if !multiplayer.multiplayer_peer:
return
if !multiplayer.is_server():
return
if (multiplayer.get_peers().size() == 0):
return
# do start game here, should only run on host
_start_game.rpc()
pass
func _ready() -> void:
if OS.has_feature("dedicated_server"):
print("Starting dedicated server")
var peer = ENetMultiplayerPeer.new()
var err = peer.create_server(PORT, MAX_CONNECTIONS)
if err:
print(err)
multiplayer.multiplayer_peer = peer
host_button.button_up.connect(_on_host_pressed)
host_button.text = "Host (%s)" % server_discovery.id
start_game_button.button_up.connect(_on_start_game_clicked)
print("Attach client")
multiplayer.peer_connected.connect(_on_player_connected)
else:
print("Game starting")
#multiplayer.peer_disconnected.connect(_on_player_disconnected)
multiplayer.peer_disconnected.connect(_on_player_disconnected)
multiplayer.connected_to_server.connect(_on_connected_ok)
#multiplayer.connection_failed.connect(_on_connected_fail)
#multiplayer.server_disconnected.connect(_on_server_disconnected)
multiplayer.server_disconnected.connect(_on_server_disconnected)
increment_button.button_up.connect(func(): _increment.rpc())
decrement_button.button_up.connect(func(): _decrement.rpc())
connect_button.button_up.connect(_on_connect_pressed)
disconnect_button.button_up.connect(_on_disconnect_clicked)
connect_button.get_parent().remove_child(connect_button)
@rpc("any_peer", "call_local")
func _increment():
counter += 1
counter_label.text = str(counter)
server_discovery.server_added.connect(_on_server_added)
server_discovery.server_removed.connect(_on_server_removed)
@rpc("any_peer", "call_local")
func _decrement():
counter -= 1
counter_label.text = str(counter)
demo_game.own_played_card.connect(func (card): _on_own_played_card.rpc(card.id if card else ""))
demo_game.own_played_rts.connect(func (move): _on_own_played_rts.rpc(move))
@rpc("authority", "call_remote")
func _set_counter(value: int):
counter = value
counter_label.text = str(counter)
@rpc("any_peer", "call_remote", "reliable")
func _on_own_played_card(card_id: String):
demo_game.rpc_opponent_play_card(card_id)
func _on_connect_pressed():
@rpc("any_peer", "call_remote", "reliable")
func _on_own_played_rts(move: String):
demo_game.rpc_opponent_rps_move(move)
@rpc("authority", "call_local", "reliable")
func _sync_seed(seed: int):
seed(seed)
@rpc("authority", "call_local", "reliable")
func _start_game():
if multiplayer.is_server():
demo_game.init(MatchManager.PLAYER_1_ID)
else:
demo_game.init(MatchManager.PLAYER_2_ID)
demo_game.rpc_start_game()
func _on_disconnect_clicked():
if (multiplayer.is_server()):
server_discovery.disable_server()
for peer_id in multiplayer.get_peers():
multiplayer.disconnect_peer(peer_id)
multiplayer.multiplayer_peer = null
$BeforeConnect.visible = true
$AfterConnect.visible = false
func _on_server_added(id, ip, port):
print("%s | Server added %s %s" % [server_discovery.id, id, ip])
var button = connect_button.duplicate()
before_connect_container.add_child(button)
var key = "%s|%s" % [id,ip]
server_buttons[key] = button
button.text = "%s\nConnect\n%s:%d" % [id, ip, port]
for conn in button.button_down.get_connections():
button.button_down.disconnect(conn)
var _on_button_downed = func():
_do_connect(ip, port)
button.button_down.connect(_on_button_downed)
func _on_server_removed(id, ip):
print("%s | Server removed %s %s" % [server_discovery.id, id, ip])
var key = "%s|%s" % [id,ip]
var button = server_buttons[key]
button.queue_free()
server_buttons.erase(key)
func _do_connect(ip: String, port: int):
var peer = ENetMultiplayerPeer.new()
var parsed: PackedStringArray = host_text_edit.text.split(":")
print("Connecting to ", parsed[0])
peer.create_client(parsed[0] if not parsed[0].is_empty() else "localhost", int(parsed[1]) if parsed.size() > 1 else PORT)
print("%s Connecting to %s:%d" % [server_discovery.id, ip, port])
var err = peer.create_client(ip, port)
print(err)
multiplayer.multiplayer_peer = peer
func _on_host_pressed():
print("%s | Starting dedicated server" % server_discovery.id)
var peer = ENetMultiplayerPeer.new()
for offset in range(PORT_RANGE):
if not is_port_available(PORT + offset):
continue
active_port = PORT + offset
var err = peer.create_server(active_port, MAX_CONNECTIONS)
if err:
print(err)
break
multiplayer.multiplayer_peer = peer
_on_connected_ok()
start_game_button.disabled = true
start_game_button.text = "Start Game (Not enough player)"
base_seed = randi()
_sync_seed.rpc(base_seed)
server_discovery.enable_server(active_port)
func is_port_available(port: int) -> bool:
var udp_peer = PacketPeerUDP.new()
var error = udp_peer.bind(port)
if error == OK:
udp_peer.close()
return true
else:
return false
func _on_player_connected(id: int):
if multiplayer.get_unique_id() == 1:
_set_counter.rpc_id(id, counter)
func _on_player_disconnected():
pass
_sync_seed.rpc(base_seed)
if (multiplayer.get_peers().size() > 0):
start_game_button.disabled = false
start_game_button.text = "Start Game"
server_discovery.disable_server()
func _on_player_disconnected(id):
print("%s | _on_player_disconnected %s" % [server_discovery.id, id])
if multiplayer.get_unique_id() == id:
$BeforeConnect.visible = true
$AfterConnect.visible = false
if (id != 1 and multiplayer.get_unique_id() == 1):
_clean_room()
start_game_button.disabled = true
start_game_button.text = "Start Game (Not enough player)"
server_discovery.enable_server(active_port)
func _on_connected_ok():
$AfterConnect.visible = true
$BeforeConnect.visible = false
counter_label.text = str(counter)
if (multiplayer.is_server()):
disconnect_button.text = "Disconnect (Host)"
start_game_button.visible = true
else:
disconnect_button.text = "Disconnect"
start_game_button.visible = false
func _on_connected_fail():
pass
func _on_server_disconnected():
pass
print("%s | _on_server_disconnected" % [server_discovery.id])
$AfterConnect.visible = false
$BeforeConnect.visible = true

View file

@ -1,6 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://c7gn46af6whf8"]
[gd_scene load_steps=4 format=3 uid="uid://c7gn46af6whf8"]
[ext_resource type="Script" path="res://main.gd" id="1_e0ud3"]
[ext_resource type="Script" path="res://server_discovery.gd" id="2_hed18"]
[ext_resource type="PackedScene" uid="uid://bgc0u117jqyr1" path="res://demo_game.tscn" id="3_2ln6b"]
[node name="Main" type="Control"]
layout_mode = 3
@ -27,11 +29,11 @@ grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="HostTextEdit" type="TextEdit" parent="BeforeConnect"]
[node name="HostButton" type="Button" parent="BeforeConnect"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 64)
layout_mode = 2
size_flags_vertical = 3
placeholder_text = "192.168.*.*"
text = "Host"
[node name="ConnectButton" type="Button" parent="BeforeConnect"]
unique_name_in_owner = true
@ -39,42 +41,34 @@ custom_minimum_size = Vector2(0, 64)
layout_mode = 2
text = "Connect"
[node name="AfterConnect" type="VBoxContainer" parent="."]
[node name="DiscoveryTimer" type="Timer" parent="BeforeConnect"]
unique_name_in_owner = true
[node name="ServerDiscovery" type="Node" parent="BeforeConnect"]
unique_name_in_owner = true
script = ExtResource("2_hed18")
[node name="AfterConnect" type="Control" parent="."]
unique_name_in_owner = true
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 = -187.5
offset_top = -88.5
offset_right = 187.5
offset_bottom = 88.5
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="CounterLabel" type="Label" parent="AfterConnect"]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
theme_override_font_sizes/font_size = 64
text = "1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="DemoGame" parent="AfterConnect" instance=ExtResource("3_2ln6b")]
layout_mode = 1
[node name="Actions" type="HBoxContainer" parent="AfterConnect"]
layout_mode = 2
[node name="DecrementButton" type="Button" parent="AfterConnect/Actions"]
[node name="DisconnectButton" type="Button" parent="AfterConnect"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "-"
[node name="IncrementButton" type="Button" parent="AfterConnect/Actions"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "+"
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -186.0
offset_bottom = 31.0
grow_horizontal = 0
size_flags_horizontal = 8
text = "Disconnect"

Some files were not shown because too many files have changed in this diff Show more