diff --git a/.godot/.gdignore b/.godot/.gdignore new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.godot/.gdignore @@ -0,0 +1 @@ + diff --git a/.godot/editor/editor_layout.cfg b/.godot/editor/editor_layout.cfg new file mode 100644 index 0000000..9c29ff6 --- /dev/null +++ b/.godot/editor/editor_layout.cfg @@ -0,0 +1,73 @@ +[docks] + +dock_3_selected_tab_idx=0 +dock_4_selected_tab_idx=0 +dock_5_selected_tab_idx=0 +dock_floating={} +dock_closed=[] +dock_split_2=0 +dock_split_3=0 +dock_hsplit_1=0 +dock_hsplit_2=280 +dock_hsplit_3=-280 +dock_hsplit_4=0 +dock_9_selected_tab_idx=1 +dock_3="Scene,Import" +dock_4="FileSystem,History" +dock_5="Inspector,Signals,Groups" +dock_9="Output,Debugger,Audio,Animation,Shader Editor,Search Results,AnimationTree,ResourcePreloader,ShaderFile,SpriteFrames,Theme,Polygon,TileSet,TileMap,Replication,GridMap" + +[docks/FileSystem] + +h_split_offset=240 +v_split_offset=0 +display_mode=0 +file_sort=0 +file_list_display_mode=1 +selected_paths=PackedStringArray("res://") +uncollapsed_paths=PackedStringArray("Favorites", "res://") + +[docks/History] + +include_scene=true +include_global=true + +[EditorNode] + +open_scenes=PackedStringArray("res://src/ui/scenes/main_menu.tscn") +current_scene="res://src/ui/scenes/main_menu.tscn" +bottom_panel_offsets={ +"Audio": -450, +"Debugger": 0, +"Output": 0 +} +selected_default_debugger_tab_idx=0 +selected_main_editor_idx=2 + +[EditorWindow] + +screen=0 +mode="windowed" +position=Vector2i(1331, 150) +size=Vector2i(1152, 648) + +[ScriptEditor] + +open_scripts=["res://src/game/training_controller.gd"] +selected_script="res://src/game/training_controller.gd" +open_help=[] +script_split_offset=200 +list_split_offset=0 +zoom_factor=1.0 + +[GameView] + +floating_window_rect=Rect2i(634, 142, 1292, 740) +floating_window_screen=0 + +[ShaderEditor] + +open_shaders=[] +split_offset=200 +selected_shader="" +text_shader_zoom_factor=1.0 diff --git a/.godot/editor/filesystem_cache10 b/.godot/editor/filesystem_cache10 new file mode 100644 index 0000000..d57506e --- /dev/null +++ b/.godot/editor/filesystem_cache10 @@ -0,0 +1,59 @@ +63f7b34db8d8cdea90c76aacccf841ec +::res://::1780099064 +check_errors.txt::TextFile::-1::1780067435::0::1::::<><><>0<>0<><>:: +check_output.txt::TextFile::-1::1780067436::0::1::::<><><>0<>0<><>:: +README.md::TextFile::-1::1780058809::0::1::::<><><>0<>0<><>:: +run_errors.txt::TextFile::-1::1780099036::0::1::::<><><>0<>0<><>:: +run_output.txt::TextFile::-1::1780099036::0::1::::<><><>0<>0<><>:: +::res://addons/::1780019826 +::res://docs/::1779979748 +::res://docs/superpowers/::1780013039 +::res://docs/superpowers/plans/::1780013236 +2026-05-28-guandan-training-mode.md::TextFile::-1::1780013236::0::1::::<><><>0<>0<><>:: +::res://docs/superpowers/specs/::1779979781 +2026-05-28-guandan-card-game-design.md::TextFile::-1::1779982163::0::1::::<><><>0<>0<><>:: +::res://src/::1780017254 +::res://src/ai/::1780066437 +base_ai.gd::GDScript::393918515999702918::1780020075::0::1::::BaseAI<>RefCounted<><>0<>0<><>:: +l1_basic_ai.gd::GDScript::3824293036085027691::1780020020::0::1::::L1BasicAI<>BaseAI<><>0<>0<><>:: +l2_rule_ai.gd::GDScript::2394058896228022033::1780066437::0::1::::L2RuleAI<>BaseAI<><>0<>0<><>:: +::res://src/autoload/::1780097357 +audio_manager.gd::GDScript::358732800655427921::1780097357::0::1::::<>Node<><>0<>0<><>:: +config.gd::GDScript::2812499630245000571::1780017185::0::1::::<>Node<><>0<>0<><>:: +event_bus.gd::GDScript::5265213255942945415::1780097205::0::1::::<>Node<><>0<>0<><>:: +::res://src/core/::1780098678 +actions.gd::GDScript::5385093260602373151::1780017019::0::1::::Actions<>RefCounted<><>0<>0<><>:: +card.gd::GDScript::5722482673676396107::1780098655::0::1::::Card<>RefCounted<><>0<>0<><>:: +constants.gd::GDScript::1018983800197122308::1780016790::0::1::::<>RefCounted<><>0<>0<><>:: +deck.gd::GDScript::7625729605329324812::1780098687::0::1::::Deck<>RefCounted<><>0<>0<><>:: +game_state.gd::GDScript::1313773448155235731::1780017031::0::1::::GameState<>RefCounted<><>0<>0<><>:: +hand_evaluator.gd::GDScript::2941013735155443621::1780019993::0::1::::HandEvaluator<>RefCounted<><>0<>0<><>:: +move_generator.gd::GDScript::4717501802299714497::1780067204::0::1::::MoveGenerator<>RefCounted<><>0<>0<><>:: +round.gd::GDScript::4048136154956438979::1780017022::0::1::::Round<>RefCounted<><>0<>0<><>:: +rule_config.gd::GDScript::5834083765288513466::1780016802::0::1::::RuleConfig<>RefCounted<><>0<>0<><>:: +rule_engine.gd::GDScript::1125035198888330416::1780017015::0::1::::RuleEngine<>RefCounted<><>0<>0<><>:: +::res://src/game/::1780098917 +game_controller.gd::GDScript::7404956464888235868::1780065068::0::1::::GameController<>Node<><>0<>0<><>:: +replay_recorder.gd::GDScript::2551932574825654942::1780017203::0::1::::<>Node<><>0<>0<><>:: +training_controller.gd::GDScript::1120733736618609603::1780098917::0::1::::TrainingController<>GameController<><>0<>0<><>:: +::res://src/ui/::1780017254 +::res://src/ui/components/::1780066437 +card_node.gd::GDScript::1700562391934990522::1780066437::0::1::::CardNode<>Control<><>0<>0<><>:: +card_node.tscn::PackedScene::-1::1780017273::0::1::::<><><>0<>0<><>::res://src/ui/components/card_node.gd +hand_area.gd::GDScript::8635681064847839428::1780059588::0::1::::HandArea<>HBoxContainer<><>0<>0<><>:: +hand_area.tscn::PackedScene::-1::1780017274::0::1::::<><><>0<>0<><>::res://src/ui/components/hand_area.gd +::res://src/ui/scenes/::1780066437 +main_menu.gd::GDScript::8687373002954932151::1780061851::0::1::::<>Control<><>0<>0<><>:: +main_menu.tscn::PackedScene::-1::1780017280::0::1::::<><><>0<>0<><>::res://src/ui/scenes/main_menu.gd +training_room.gd::GDScript::1431432233075994614::1780066437::0::1::::<>Control<><>0<>0<><>:: +training_room.tscn::PackedScene::-1::1780060957::0::1::::<><><>0<>0<><>::res://src/ui/scenes/training_room.gd<>res://src/ui/components/hand_area.gd +::res://tests/::1780059239 +hello.gd::GDScript::801214535407504309::1780020576::0::1::::<>Node<><>0<>0<><>:: +quick_test.gd::GDScript::8419040576856027441::1780020535::0::1::::<>Node<><>0<>0<><>:: +run_validation.gd::GDScript::5977040163953791705::1780019872::0::1::::<>Node<><>0<>0<><>:: +test_cards.gd::GDScript::3474674096739086510::1780017322::0::1::::<>GutTest<><>0<>0<><>:: +test_deck.gd::GDScript::5372822746484118668::1780017327::0::1::::<>GutTest<><>0<>0<><>:: +test_game_state.gd::GDScript::5310760542796422668::1780017346::0::1::::<>GutTest<><>0<>0<><>:: +test_hand_evaluator.gd::GDScript::5064547684838000492::1780017338::0::1::::<>GutTest<><>0<>0<><>:: +test_rule_engine.gd::GDScript::1242756042438170058::1780017356::0::1::::<>GutTest<><>0<>0<><>:: +validate_project.gd::GDScript::2810346865604840601::1780019501::0::1::::<>RefCounted<><>0<>0<><>:: diff --git a/.godot/editor/main_menu.tscn-folding-e08c0659af5d59bd459faee59fac57c8.cfg b/.godot/editor/main_menu.tscn-folding-e08c0659af5d59bd459faee59fac57c8.cfg new file mode 100644 index 0000000..51fef28 --- /dev/null +++ b/.godot/editor/main_menu.tscn-folding-e08c0659af5d59bd459faee59fac57c8.cfg @@ -0,0 +1,5 @@ +[folding] + +node_unfolds=[NodePath("."), PackedStringArray("Layout"), NodePath("VBoxContainer"), PackedStringArray("Layout"), NodePath("VBoxContainer/StartButton"), PackedStringArray("Layout"), NodePath("VBoxContainer/QuitButton"), PackedStringArray("Layout")] +resource_unfolds=[] +nodes_folded=[] diff --git a/.godot/editor/script_editor_cache.cfg b/.godot/editor/script_editor_cache.cfg new file mode 100644 index 0000000..9f805fe --- /dev/null +++ b/.godot/editor/script_editor_cache.cfg @@ -0,0 +1,13 @@ +[res://src/game/training_controller.gd] + +state={ +"bookmarks": PackedInt32Array(), +"breakpoints": PackedInt32Array(), +"column": 0, +"folded_lines": PackedInt32Array(), +"h_scroll_position": 0, +"row": 1, +"scroll_position": 1.0, +"selection": false, +"syntax_highlighter": "GDScript" +} diff --git a/.godot/global_script_class_cache.cfg b/.godot/global_script_class_cache.cfg new file mode 100644 index 0000000..337a297 --- /dev/null +++ b/.godot/global_script_class_cache.cfg @@ -0,0 +1,129 @@ +list=[{ +"base": &"RefCounted", +"class": &"Actions", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/core/actions.gd" +}, { +"base": &"RefCounted", +"class": &"BaseAI", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/ai/base_ai.gd" +}, { +"base": &"RefCounted", +"class": &"Card", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/core/card.gd" +}, { +"base": &"Control", +"class": &"CardNode", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/ui/components/card_node.gd" +}, { +"base": &"RefCounted", +"class": &"Deck", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/core/deck.gd" +}, { +"base": &"Node", +"class": &"GameController", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/game/game_controller.gd" +}, { +"base": &"RefCounted", +"class": &"GameState", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/core/game_state.gd" +}, { +"base": &"HBoxContainer", +"class": &"HandArea", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/ui/components/hand_area.gd" +}, { +"base": &"RefCounted", +"class": &"HandEvaluator", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/core/hand_evaluator.gd" +}, { +"base": &"BaseAI", +"class": &"L1BasicAI", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/ai/l1_basic_ai.gd" +}, { +"base": &"BaseAI", +"class": &"L2RuleAI", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/ai/l2_rule_ai.gd" +}, { +"base": &"RefCounted", +"class": &"MoveGenerator", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/core/move_generator.gd" +}, { +"base": &"RefCounted", +"class": &"Round", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/core/round.gd" +}, { +"base": &"RefCounted", +"class": &"RuleConfig", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/core/rule_config.gd" +}, { +"base": &"RefCounted", +"class": &"RuleEngine", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/core/rule_engine.gd" +}, { +"base": &"GameController", +"class": &"TrainingController", +"icon": "", +"is_abstract": false, +"is_tool": false, +"language": &"GDScript", +"path": "res://src/game/training_controller.gd" +}] diff --git a/.godot/scene_groups_cache.cfg b/.godot/scene_groups_cache.cfg new file mode 100644 index 0000000..e69de29 diff --git a/.godot/shader_cache/CanvasShaderGLES3/2ff17a6d7765ced7bbb17f1e54c734bf0f842459ae0b6555722f41f2521f23cf/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache b/.godot/shader_cache/CanvasShaderGLES3/2ff17a6d7765ced7bbb17f1e54c734bf0f842459ae0b6555722f41f2521f23cf/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache new file mode 100644 index 0000000..f4e69f6 Binary files /dev/null and b/.godot/shader_cache/CanvasShaderGLES3/2ff17a6d7765ced7bbb17f1e54c734bf0f842459ae0b6555722f41f2521f23cf/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache differ diff --git a/.godot/shader_cache/CopyShaderGLES3/f7265a7986455a8979fa76781bf04f5fbbe4b82dc77276e9ff328795e6b6e353/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache b/.godot/shader_cache/CopyShaderGLES3/f7265a7986455a8979fa76781bf04f5fbbe4b82dc77276e9ff328795e6b6e353/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache new file mode 100644 index 0000000..c9b9621 Binary files /dev/null and b/.godot/shader_cache/CopyShaderGLES3/f7265a7986455a8979fa76781bf04f5fbbe4b82dc77276e9ff328795e6b6e353/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache differ diff --git a/.godot/shader_cache/CubemapFilterShaderGLES3/22cf810d6d81f5068f4780c2613db6d9178be2703441f3e3fe11afd3dd4e1d29/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache b/.godot/shader_cache/CubemapFilterShaderGLES3/22cf810d6d81f5068f4780c2613db6d9178be2703441f3e3fe11afd3dd4e1d29/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache new file mode 100644 index 0000000..f06abdf Binary files /dev/null and b/.godot/shader_cache/CubemapFilterShaderGLES3/22cf810d6d81f5068f4780c2613db6d9178be2703441f3e3fe11afd3dd4e1d29/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache differ diff --git a/.godot/shader_cache/FeedShaderGLES3/beb72044507633304151a0d38f8f31e9afa3b8652e675e2b679defa832b3d329/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache b/.godot/shader_cache/FeedShaderGLES3/beb72044507633304151a0d38f8f31e9afa3b8652e675e2b679defa832b3d329/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache new file mode 100644 index 0000000..3080305 Binary files /dev/null and b/.godot/shader_cache/FeedShaderGLES3/beb72044507633304151a0d38f8f31e9afa3b8652e675e2b679defa832b3d329/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache differ diff --git a/.godot/shader_cache/PostShaderGLES3/40ae3e6478e3f30bf4b8a61c435a2d54e58c994a6b7b7fef0aa2beb87b941b47/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache b/.godot/shader_cache/PostShaderGLES3/40ae3e6478e3f30bf4b8a61c435a2d54e58c994a6b7b7fef0aa2beb87b941b47/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache new file mode 100644 index 0000000..d6f6e3b Binary files /dev/null and b/.godot/shader_cache/PostShaderGLES3/40ae3e6478e3f30bf4b8a61c435a2d54e58c994a6b7b7fef0aa2beb87b941b47/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache differ diff --git a/.godot/shader_cache/SceneShaderGLES3/10ec84b712807e9db631ce882ef6c66a53b6537af699e411166d1c918eec7898/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache b/.godot/shader_cache/SceneShaderGLES3/10ec84b712807e9db631ce882ef6c66a53b6537af699e411166d1c918eec7898/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache new file mode 100644 index 0000000..7c35e31 Binary files /dev/null and b/.godot/shader_cache/SceneShaderGLES3/10ec84b712807e9db631ce882ef6c66a53b6537af699e411166d1c918eec7898/6bb7c9a2fd1c4a8fa77cb96555b9b4a720209981.cache differ diff --git a/.godot/shader_cache/SceneShaderGLES3/10ec84b712807e9db631ce882ef6c66a53b6537af699e411166d1c918eec7898/a38af2d0725c8e99d8492f4c72736f24d6a54cc5.cache b/.godot/shader_cache/SceneShaderGLES3/10ec84b712807e9db631ce882ef6c66a53b6537af699e411166d1c918eec7898/a38af2d0725c8e99d8492f4c72736f24d6a54cc5.cache new file mode 100644 index 0000000..8c527e8 Binary files /dev/null and b/.godot/shader_cache/SceneShaderGLES3/10ec84b712807e9db631ce882ef6c66a53b6537af699e411166d1c918eec7898/a38af2d0725c8e99d8492f4c72736f24d6a54cc5.cache differ diff --git a/.godot/shader_cache/SceneShaderGLES3/10ec84b712807e9db631ce882ef6c66a53b6537af699e411166d1c918eec7898/cafb1506f2db0c3681435e264aa18e216d1a7a40.cache b/.godot/shader_cache/SceneShaderGLES3/10ec84b712807e9db631ce882ef6c66a53b6537af699e411166d1c918eec7898/cafb1506f2db0c3681435e264aa18e216d1a7a40.cache new file mode 100644 index 0000000..db160fb Binary files /dev/null and b/.godot/shader_cache/SceneShaderGLES3/10ec84b712807e9db631ce882ef6c66a53b6537af699e411166d1c918eec7898/cafb1506f2db0c3681435e264aa18e216d1a7a40.cache differ diff --git a/.godot/shader_cache/SkyShaderGLES3/af135a552c9c404303b2fce4c6b48cdf3b9b9162b193dfd8858f1ac3e43fcdf9/2c82eb5fea9b549e20c9f41e308abf9a4fc5d76f.cache b/.godot/shader_cache/SkyShaderGLES3/af135a552c9c404303b2fce4c6b48cdf3b9b9162b193dfd8858f1ac3e43fcdf9/2c82eb5fea9b549e20c9f41e308abf9a4fc5d76f.cache new file mode 100644 index 0000000..58c8dc7 Binary files /dev/null and b/.godot/shader_cache/SkyShaderGLES3/af135a552c9c404303b2fce4c6b48cdf3b9b9162b193dfd8858f1ac3e43fcdf9/2c82eb5fea9b549e20c9f41e308abf9a4fc5d76f.cache differ diff --git a/.godot/uid_cache.bin b/.godot/uid_cache.bin new file mode 100644 index 0000000..752a699 Binary files /dev/null and b/.godot/uid_cache.bin differ diff --git a/check_errors.txt b/check_errors.txt new file mode 100644 index 0000000..e69de29 diff --git a/check_output.txt b/check_output.txt new file mode 100644 index 0000000..cc970a2 --- /dev/null +++ b/check_output.txt @@ -0,0 +1,27 @@ +WorkerThreadPool: 24 threads, 7 max low-priority. +Godot Engine v4.6.3.stable.official.7d41c59c4 - https://godotengine.org +TextServer: Added interface "Dummy" +TextServer: Added interface "ICU / HarfBuzz / Graphite (Built-in)" +Unrecognized output string "misc2" in mapping: +030000008a2e0000dd10000000000000,Hand Held Legend GC Ultimate,a:b0,b:b2,back:b17,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,guide:b18,leftshoulder:b10,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b19,misc2:b24,paddle1:b13,paddle2:b12,rightshoulder:b11,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b1,y:b3,platform:Windows, +Unrecognized output string "misc2" in mapping: +030000000d0f00000202000000000000,Horipad O Nintendo Switch 2 Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,misc2:b14,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +Unrecognized output string "misc2" in mapping: +030000000d0f00009601000000000000,Horipad Steam,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc2:b2,paddle1:b5,paddle2:b15,paddle3:b18,paddle4:b19,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +Unrecognized output string "misc2" in mapping: +030000007e0500006920000000000000,Nintendo Switch 2 Pro Controller,a:b0,b:b1,back:b14,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b12,leftstick:b15,lefttrigger:b13,leftx:a0,lefty:a1~,misc1:b17,misc2:b20,paddle1:b18,paddle2:b19,rightshoulder:b4,rightstick:b7,righttrigger:b5,rightx:a2,righty:a3~,start:b6,x:b2,y:b3,platform:Windows, +Using "default" pen tablet driver... + +TextServer: Primary interface set to: "ICU / HarfBuzz / Graphite (Built-in)". +CORE API HASH: 2475187701 +EDITOR API HASH: 3867286884 +SceneTreeFTI: traversal method DEFAULT +Loading resource: res://src/autoload/config.gd +Loading resource: res://src/autoload/event_bus.gd +Loading resource: res://src/autoload/audio_manager.gd +Loaded system CA certificates +Loading resource: res://src/ui/scenes/main_menu.tscn +Loading resource: res://src/ui/scenes/main_menu.gd +XR: Clearing primary interface +XR: Removed interface "Native mobile" +XR: Removed interface "OpenXR" diff --git a/deck_err.txt b/deck_err.txt new file mode 100644 index 0000000..92a092b --- /dev/null +++ b/deck_err.txt @@ -0,0 +1,24 @@ +SCRIPT ERROR: Parse Error: Could not resolve class "Deck", because of a parser error. + at: GDScript::reload (res://src/game/game_controller.gd:23) + GDScript backtrace (most recent call first): + [0] _initialize (res://tests/test_training_controller.gd:4) +SCRIPT ERROR: Parse Error: Cannot infer the type of "deck" variable because the value doesn't have a set type. + at: GDScript::reload (res://src/game/game_controller.gd:23) + GDScript backtrace (most recent call first): + [0] _initialize (res://tests/test_training_controller.gd:4) +SCRIPT ERROR: Parse Error: Could not resolve external class member "deal_cards". + at: GDScript::reload (res://src/game/game_controller.gd:24) + GDScript backtrace (most recent call first): + [0] _initialize (res://tests/test_training_controller.gd:4) +ERROR: Failed to load script "res://src/game/game_controller.gd" with error "Parse error". + at: load (modules/gdscript/gdscript.cpp:2907) + GDScript backtrace (most recent call first): + [0] _initialize (res://tests/test_training_controller.gd:4) +SCRIPT ERROR: Parse Error: Could not resolve class "GameController". + at: GDScript::reload (res://src/game/training_controller.gd:2) + GDScript backtrace (most recent call first): + [0] _initialize (res://tests/test_training_controller.gd:9) +ERROR: Failed to load script "res://src/game/training_controller.gd" with error "Parse error". + at: load (modules/gdscript/gdscript.cpp:2907) + GDScript backtrace (most recent call first): + [0] _initialize (res://tests/test_training_controller.gd:9) diff --git a/deck_out.txt b/deck_out.txt new file mode 100644 index 0000000..43e5aba --- /dev/null +++ b/deck_out.txt @@ -0,0 +1,4 @@ +Godot Engine v4.6.3.stable.official.7d41c59c4 - https://godotengine.org + +GameController loaded: (res://src/game/game_controller.gd): +TrainingController loaded: (res://src/game/training_controller.gd): diff --git a/run_err.txt b/run_err.txt new file mode 100644 index 0000000..e69de29 diff --git a/run_errors.txt b/run_errors.txt new file mode 100644 index 0000000..e69de29 diff --git a/run_out.txt b/run_out.txt new file mode 100644 index 0000000..cc970a2 --- /dev/null +++ b/run_out.txt @@ -0,0 +1,27 @@ +WorkerThreadPool: 24 threads, 7 max low-priority. +Godot Engine v4.6.3.stable.official.7d41c59c4 - https://godotengine.org +TextServer: Added interface "Dummy" +TextServer: Added interface "ICU / HarfBuzz / Graphite (Built-in)" +Unrecognized output string "misc2" in mapping: +030000008a2e0000dd10000000000000,Hand Held Legend GC Ultimate,a:b0,b:b2,back:b17,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,guide:b18,leftshoulder:b10,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b19,misc2:b24,paddle1:b13,paddle2:b12,rightshoulder:b11,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b1,y:b3,platform:Windows, +Unrecognized output string "misc2" in mapping: +030000000d0f00000202000000000000,Horipad O Nintendo Switch 2 Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,misc2:b14,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +Unrecognized output string "misc2" in mapping: +030000000d0f00009601000000000000,Horipad Steam,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc2:b2,paddle1:b5,paddle2:b15,paddle3:b18,paddle4:b19,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +Unrecognized output string "misc2" in mapping: +030000007e0500006920000000000000,Nintendo Switch 2 Pro Controller,a:b0,b:b1,back:b14,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b12,leftstick:b15,lefttrigger:b13,leftx:a0,lefty:a1~,misc1:b17,misc2:b20,paddle1:b18,paddle2:b19,rightshoulder:b4,rightstick:b7,righttrigger:b5,rightx:a2,righty:a3~,start:b6,x:b2,y:b3,platform:Windows, +Using "default" pen tablet driver... + +TextServer: Primary interface set to: "ICU / HarfBuzz / Graphite (Built-in)". +CORE API HASH: 2475187701 +EDITOR API HASH: 3867286884 +SceneTreeFTI: traversal method DEFAULT +Loading resource: res://src/autoload/config.gd +Loading resource: res://src/autoload/event_bus.gd +Loading resource: res://src/autoload/audio_manager.gd +Loaded system CA certificates +Loading resource: res://src/ui/scenes/main_menu.tscn +Loading resource: res://src/ui/scenes/main_menu.gd +XR: Clearing primary interface +XR: Removed interface "Native mobile" +XR: Removed interface "OpenXR" diff --git a/run_output.txt b/run_output.txt new file mode 100644 index 0000000..cc970a2 --- /dev/null +++ b/run_output.txt @@ -0,0 +1,27 @@ +WorkerThreadPool: 24 threads, 7 max low-priority. +Godot Engine v4.6.3.stable.official.7d41c59c4 - https://godotengine.org +TextServer: Added interface "Dummy" +TextServer: Added interface "ICU / HarfBuzz / Graphite (Built-in)" +Unrecognized output string "misc2" in mapping: +030000008a2e0000dd10000000000000,Hand Held Legend GC Ultimate,a:b0,b:b2,back:b17,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,guide:b18,leftshoulder:b10,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b19,misc2:b24,paddle1:b13,paddle2:b12,rightshoulder:b11,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b1,y:b3,platform:Windows, +Unrecognized output string "misc2" in mapping: +030000000d0f00000202000000000000,Horipad O Nintendo Switch 2 Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,misc2:b14,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +Unrecognized output string "misc2" in mapping: +030000000d0f00009601000000000000,Horipad Steam,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc2:b2,paddle1:b5,paddle2:b15,paddle3:b18,paddle4:b19,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +Unrecognized output string "misc2" in mapping: +030000007e0500006920000000000000,Nintendo Switch 2 Pro Controller,a:b0,b:b1,back:b14,dpdown:b8,dpleft:b10,dpright:b9,dpup:b11,guide:b16,leftshoulder:b12,leftstick:b15,lefttrigger:b13,leftx:a0,lefty:a1~,misc1:b17,misc2:b20,paddle1:b18,paddle2:b19,rightshoulder:b4,rightstick:b7,righttrigger:b5,rightx:a2,righty:a3~,start:b6,x:b2,y:b3,platform:Windows, +Using "default" pen tablet driver... + +TextServer: Primary interface set to: "ICU / HarfBuzz / Graphite (Built-in)". +CORE API HASH: 2475187701 +EDITOR API HASH: 3867286884 +SceneTreeFTI: traversal method DEFAULT +Loading resource: res://src/autoload/config.gd +Loading resource: res://src/autoload/event_bus.gd +Loading resource: res://src/autoload/audio_manager.gd +Loaded system CA certificates +Loading resource: res://src/ui/scenes/main_menu.tscn +Loading resource: res://src/ui/scenes/main_menu.gd +XR: Clearing primary interface +XR: Removed interface "Native mobile" +XR: Removed interface "OpenXR" diff --git a/src/core/deck.gd b/src/core/deck.gd index 2a77cd7..742c7c8 100644 --- a/src/core/deck.gd +++ b/src/core/deck.gd @@ -16,7 +16,7 @@ static func _rank_for(original_id: int) -> int: return 15 if original_id == 53: return 16 - return 2 + (original_id // 4) + return 2 + (original_id / 4) static func create(seed: int = -1) -> Deck: var d := Deck.new() diff --git a/tests/hello.gd.uid b/tests/hello.gd.uid new file mode 100644 index 0000000..e6bd5a4 --- /dev/null +++ b/tests/hello.gd.uid @@ -0,0 +1 @@ +uid://lod5euxb1cwb diff --git a/tests/quick_test.gd.uid b/tests/quick_test.gd.uid new file mode 100644 index 0000000..aef7b51 --- /dev/null +++ b/tests/quick_test.gd.uid @@ -0,0 +1 @@ +uid://dr7imryh5wia8 diff --git a/tests/run_validation.gd.uid b/tests/run_validation.gd.uid new file mode 100644 index 0000000..9ce5b84 --- /dev/null +++ b/tests/run_validation.gd.uid @@ -0,0 +1 @@ +uid://crfk8i35o3o6d diff --git a/tests/test_cards.gd.uid b/tests/test_cards.gd.uid new file mode 100644 index 0000000..3cb0d04 --- /dev/null +++ b/tests/test_cards.gd.uid @@ -0,0 +1 @@ +uid://bprfm0f45hu8e diff --git a/tests/test_deck.gd.uid b/tests/test_deck.gd.uid new file mode 100644 index 0000000..c2698d1 --- /dev/null +++ b/tests/test_deck.gd.uid @@ -0,0 +1 @@ +uid://cisvuuexcmhei diff --git a/tests/test_deck_load.gd b/tests/test_deck_load.gd new file mode 100644 index 0000000..8672017 --- /dev/null +++ b/tests/test_deck_load.gd @@ -0,0 +1,9 @@ +extends SceneTree + +func _initialize(): + var d = load("res://src/core/deck.gd") + if d: + print("Deck loaded: ", d) + else: + print("FAIL: Deck not found") + quit() \ No newline at end of file diff --git a/tests/test_game_state.gd.uid b/tests/test_game_state.gd.uid new file mode 100644 index 0000000..a4be1e9 --- /dev/null +++ b/tests/test_game_state.gd.uid @@ -0,0 +1 @@ +uid://chwtpkp06q4no diff --git a/tests/test_hand_evaluator.gd.uid b/tests/test_hand_evaluator.gd.uid new file mode 100644 index 0000000..e3b4747 --- /dev/null +++ b/tests/test_hand_evaluator.gd.uid @@ -0,0 +1 @@ +uid://cefkmiwlb6dlc diff --git a/tests/test_rule_engine.gd.uid b/tests/test_rule_engine.gd.uid new file mode 100644 index 0000000..78b3f78 --- /dev/null +++ b/tests/test_rule_engine.gd.uid @@ -0,0 +1 @@ +uid://ryaamcy0nefy diff --git a/tests/test_training_controller.gd b/tests/test_training_controller.gd new file mode 100644 index 0000000..adcd9ca --- /dev/null +++ b/tests/test_training_controller.gd @@ -0,0 +1,14 @@ +extends SceneTree + +func _initialize(): + var t = load("res://src/game/game_controller.gd") + if t: + print("GameController loaded: ", t) + else: + print("FAIL: GameController not found") + var tc = load("res://src/game/training_controller.gd") + if tc: + print("TrainingController loaded: ", tc) + else: + print("FAIL: TrainingController not found") + quit() \ No newline at end of file diff --git a/tests/validate_project.gd.uid b/tests/validate_project.gd.uid new file mode 100644 index 0000000..7783861 --- /dev/null +++ b/tests/validate_project.gd.uid @@ -0,0 +1 @@ +uid://bgbmacvuo7rjd