diff --git a/.godot/editor/create_recent.Node b/.godot/editor/create_recent.Node index db27ca42ae9d48cb995917843f81b7914b991193..c6fbc0bd50a51899467b1ea750394b6224892f7c 100644 --- a/.godot/editor/create_recent.Node +++ b/.godot/editor/create_recent.Node @@ -1,14 +1,24 @@ +<<<<<<< HEAD Button Camera2D HBoxContainer Timer Label Node +======= +Rook +Button +Label +ColorRect +TextureRect +HBoxContainer +MarginContainer +VBoxContainer +PanelContainer +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 Node2D +Node Control AnimationPlayer -ColorRect CanvasLayer -VBoxContainer -TextureRect Sprite2D diff --git a/.godot/editor/editor_layout.cfg b/.godot/editor/editor_layout.cfg index 70c105d61b52794b1a774bacabe4c27cd116fa4b..31e24fbf0050d044f1b9186ebcce2d7f15cf5457 100644 --- a/.godot/editor/editor_layout.cfg +++ b/.godot/editor/editor_layout.cfg @@ -6,6 +6,7 @@ dock_5_selected_tab_idx=0 dock_floating={} dock_bottom=[] dock_closed=[] +<<<<<<< HEAD <<<<<<<HEAD<<<<<<<HEADdock_split_2=-1 dock_split_3=0 dock_hsplit_1=0 @@ -13,31 +14,55 @@ dock_hsplit_1=0 dock_hsplit_3=-270 dock_hsplit_2=270 dock_split_2=0 +======= +dock_split_2=0 +dock_split_3=0 +dock_hsplit_1=0 +<<<<<<<HEADdock_hsplit_2=498 +dock_hsplit_3=-406 +dock_hsplit_2=306 +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 dock_hsplit_4=0 dock_filesystem_h_split_offset=240 dock_filesystem_v_split_offset=0 dock_filesystem_display_mode=0 dock_filesystem_file_sort=0 dock_filesystem_file_list_display_mode=1 +<<<<<<< HEAD dock_filesystem_selected_paths=PackedStringArray("res://scenes/screens/select_piece_screen.tscn") dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://", "res://scenes/", "res://scenes/screens/") +======= +dock_filesystem_selected_paths=PackedStringArray("res://scripts/scene_manager.gd") +dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://", "res://scripts/", "res://scenes/ui/") +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 dock_3="Scene,Import" dock_4="FileSystem" dock_5="Inspector,Node,History" [EditorNode] +<<<<<<< HEAD open_scenes=PackedStringArray("res://scenes/game.tscn", "res://main.tscn", "res://scenes/screens/title_screen.tscn", "res://scenes/screens/select_piece_screen.tscn") current_scene="res://main.tscn" center_split_offset=0 +======= +open_scenes=PackedStringArray("res://scenes/game.tscn", "res://main.tscn", "res://scenes/Shop.tscn", "res://scenes/ShopItem.tscn", "res://scenes/Pawn.tscn", "res://scenes/Rook.tscn") +current_scene="res://scenes/Rook.tscn" +center_split_offset=-398 +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 selected_default_debugger_tab_idx=0 selected_main_editor_idx=2 selected_bottom_panel_item=0 [ScriptEditor] +<<<<<<< HEAD open_scripts=["res://scripts/game.gd", "res://scripts/main/main.gd", "res://scripts/run_data/run_data.gd", "res://scripts/screens/select_piece_screen.gd", "res://scripts/screens/title_screen.gd"] selected_script="res://scripts/main/main.gd" +======= +open_scripts=["res://scripts/game.gd", "res://scripts/Pawn.gd", "res://scripts/Queen.gd", "res://README.md", "res://scripts/Rook.gd", "res://scripts/scene_manager.gd", "res://scripts/Shop.gd", "res://scenes/shop_item.gd"] +selected_script="res://scripts/Pawn.gd" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 open_help=[] script_split_offset=70 list_split_offset=0 diff --git a/.godot/editor/filesystem_cache8 b/.godot/editor/filesystem_cache8 index d1c6b3068e6ed530bead6339ad7bc0ece0c1cc51..8572821653ad590961ddd6346f903a585b927125 100644 --- a/.godot/editor/filesystem_cache8 +++ b/.godot/editor/filesystem_cache8 @@ -1,4 +1,5 @@ ea4bc82a6ad023ab7ee23ee620429895 +<<<<<<< HEAD ::res://::1739131418 icon.svg::CompressedTexture2D::6378281210119878262::1738795350::1739075821::1::::<><>:: main.tscn::PackedScene::5692118487183161714::1739131418::0::1::::<><>::uid://cu7lkx15lmfww::::res://scenes/scene_manager.tscn<>res://scripts/main/main.gd @@ -127,3 +128,121 @@ select_piece_screen.gd::GDScript::-1::1739131352::0::1::::SelectPieceScreen<>Con title_screen.gd::GDScript::-1::1738864872::0::1::::TitleScreen<>Control<>:: ::res://scripts/ui/::1738804415 pop_up_label.gd::GDScript::-1::1738804415::0::1::::<>Label<>:: +======= +::res://::1739123350 +export_presets.cfg::TextFile::-1::1738780181::0::1::::<><>:: +icon.svg::CompressedTexture2D::6378281210119878262::1737912187::1738338716::1::::<><>:: +main.tscn::PackedScene::5692118487183161714::1739063296::0::1::::<><>::uid://cu7lkx15lmfww::::res://scenes/scene_manager.tscn +README.md::TextFile::-1::1737912187::0::1::::<><>:: +::res://assets/::1738358720 +::res://assets/noise/::1739053832 +noise2.tres::NoiseTexture2D::5054739835828921764::1739053832::0::1::::<><>:: +noise3.tres::NoiseTexture2D::906885015046579772::1739053832::0::1::::<><>:: +noise.tres::NoiseTexture2D::1693764769519573005::1739053832::0::1::::<><>:: +::res://assets/Original size Chess pieces/::1738707284 +Black king piece 2.png::CompressedTexture2D::7820367427145083060::1738358720::1738707284::1::::<><>:: +Black knight piece.png::CompressedTexture2D::4196515762256027844::1738358720::1738707284::1::::<><>:: +Black Pawn Piece 2.png::CompressedTexture2D::2167440687080906934::1738358720::1738707284::1::::<><>:: +Black Queen Piece 2.png::CompressedTexture2D::6638986330393441989::1738358720::1738707284::1::::<><>:: +Black rook piece.png::CompressedTexture2D::1872655759582013005::1738358720::1738707284::1::::<><>:: +White king piece 2.png::CompressedTexture2D::7139286146806283259::1738358720::1738707284::1::::<><>:: +White knight piece.png::CompressedTexture2D::8293368904171920332::1738358720::1738707284::1::::<><>:: +White Pawn Piece 2.png::CompressedTexture2D::8915038826611091975::1738358720::1738707284::1::::<><>:: +White Queen Piece 2.png::CompressedTexture2D::339041922548181320::1738358720::1738707284::1::::<><>:: +White rook piece.png::CompressedTexture2D::6272641373813891014::1738358720::1738707284::1::::<><>:: +::res://assets/Resized Chess Piece Assets/::1738707285 +Black_Assassin.png::CompressedTexture2D::5410645216483506242::1738707261::1738707284::1::::<><>:: +Black_Bishop.png::CompressedTexture2D::5646954560332560266::1738707261::1738707284::1::::<><>:: +Black_king.png::CompressedTexture2D::3691390456247856410::1738358720::1738707284::1::::<><>:: +Black_knight.png::CompressedTexture2D::3569790831830215405::1738358720::1738707284::1::::<><>:: +Black_mage.png::CompressedTexture2D::3300084723678353650::1738707261::1738707284::1::::<><>:: +Black_Pawn.png::CompressedTexture2D::4947090234957464596::1738358720::1738707284::1::::<><>:: +Black_Queen.png::CompressedTexture2D::9042903626319350434::1738358720::1738707284::1::::<><>:: +Black_rook.png::CompressedTexture2D::5637903285567075872::1738358720::1738707284::1::::<><>:: +Black_wizard.png::CompressedTexture2D::1278573577066895682::1738707261::1738707284::1::::<><>:: +White_Assassin.png::CompressedTexture2D::700262813566466932::1738707261::1738707284::1::::<><>:: +White_Bishop.png::CompressedTexture2D::3819780629635422360::1738707261::1738707284::1::::<><>:: +White_king.png::CompressedTexture2D::5012688985517926395::1738358720::1738707284::1::::<><>:: +White_knight.png::CompressedTexture2D::854350289879594279::1738358720::1738707284::1::::<><>:: +White_mage.png::CompressedTexture2D::7265615115782563194::1738707261::1738707284::1::::<><>:: +White_Pawn.png::CompressedTexture2D::919180529085242722::1738358720::1738707285::1::::<><>:: +White_Queen.png::CompressedTexture2D::4902137832695542513::1738358720::1738707285::1::::<><>:: +White_rook.png::CompressedTexture2D::4194129281780453908::1738358720::1738707285::1::::<><>:: +White_wizard.png::CompressedTexture2D::8734158881343267537::1738707261::1738707285::1::::<><>:: +::res://assets/shaders/::1739053832 +3d_effect.gdshader::Shader::-1::1738707261::0::1::::<><>:: +bg.gdshader::Shader::-1::1739053832::0::1::::<><>:: +color.gdshader::Shader::-1::1738378229::0::1::::<><>:: +shadow.gdshader::Shader::-1::1738378229::0::1::::<><>:: +::res://assets/sprites/::1738707284 +bishop.png::CompressedTexture2D::4631301773944929250::1738358798::1738707284::1::::<><>:: +knight.png::CompressedTexture2D::3545640967717948854::1738358798::1738707284::1::::<><>:: +pawn.png::CompressedTexture2D::1338760335342038528::1738358798::1738707284::1::::<><>:: +rook.png::CompressedTexture2D::6790909281007670776::1738358798::1738707284::1::::<><>:: +tile.png::CompressedTexture2D::8704336058451696509::1738358570::1738707284::1::::<><>:: +::res://assets/temp_assets/::1738707284 +assassin.png::CompressedTexture2D::2309680507621369322::1738360966::1738361001::1::::<><>:: +black_bishop.png::CompressedTexture2D::7509881182472568151::1738358720::1738707284::1::::<><>:: +black_king.png::CompressedTexture2D::3646032776351028361::1738358720::1738707284::1::::<><>:: +black_knight.png::CompressedTexture2D::4591257172048987833::1738358720::1738707284::1::::<><>:: +black_pawn.png::CompressedTexture2D::3912668014183198267::1738358720::1738707284::1::::<><>:: +black_queen.png::CompressedTexture2D::7989886812523566234::1738358720::1738707284::1::::<><>:: +black_rook.png::CompressedTexture2D::8767708966549765967::1738358720::1738707284::1::::<><>:: +mage.png::CompressedTexture2D::4650471376600460963::1738367395::1738367411::1::::<><>:: +Piece_move.png::CompressedTexture2D::260618725614842917::1738358720::1738707284::1::::<><>:: +temp_chess_board.png::CompressedTexture2D::4173558678901569366::1738358720::1738707284::1::::<><>:: +turn-black.png::CompressedTexture2D::7112033964315790810::1738358720::1738707284::1::::<><>:: +turn-white.png::CompressedTexture2D::7344907768700758025::1738358720::1738707284::1::::<><>:: +white_bishop.png::CompressedTexture2D::8093744356261485644::1738358720::1738707284::1::::<><>:: +white_king.png::CompressedTexture2D::5901183203660598461::1738358720::1738707284::1::::<><>:: +white_knight.png::CompressedTexture2D::7533630084821562912::1738358720::1738707284::1::::<><>:: +white_pawn.png::CompressedTexture2D::8196778834906249875::1738358720::1738707284::1::::<><>:: +white_queen.png::CompressedTexture2D::1957958042777204643::1738358720::1738707284::1::::<><>:: +white_rook.png::CompressedTexture2D::3317152307554436932::1738358720::1738707284::1::::<><>:: +wizard.png::CompressedTexture2D::2759604866355024615::1738373264::1738373374::1::::<><>:: +::res://assets/ui/::1738707285 +Go_Save_The_King_Menu.jpg::CompressedTexture2D::7252735845995868232::1738358720::1738707285::1::::<><>:: +Mockup Gameplay Design.jpg::CompressedTexture2D::4859609684236806088::1738358720::1738707285::1::::<><>:: +Mockup Shop Design.jpg::CompressedTexture2D::8043055154093708922::1738358720::1738707285::1::::<><>:: +::res://assets/ui/title_screen/::1738707284 +play_button.png::CompressedTexture2D::5896995890187459238::1738707261::1738707284::1::::<><>:: +quit_button.png::CompressedTexture2D::5172428563227279585::1738707261::1738707284::1::::<><>:: +rules_button.png::CompressedTexture2D::8060955005205795067::1738707261::1738707284::1::::<><>:: +::res://scenes/::1739063296 +Assassin.tscn::PackedScene::1241611789899982875::1738377694::0::1::::<><>::res://scripts/Assassin.gd<>uid://753dogr1moxe::::res://assets/temp_assets/assassin.png +Bishop.tscn::PackedScene::2789588702038144760::1738377693::0::1::::<><>::res://scripts/Bishop.gd<>uid://b68o4mj7wcwvq::::res://assets/sprites/bishop.png +explosion.tscn::PackedScene::69466253159940830::1738377693::0::1::::<><>:: +game.tscn::PackedScene::8577524005707705072::1739063296::0::1::::<><>::res://scripts/game.gd<>res://assets/shaders/bg.gdshader<>uid://yeqb8ndri7xp::::res://assets/noise/noise.tres<>uid://ceas3dsjeq4ge::::res://assets/noise/noise2.tres<>uid://m6ki73qfbp2s::::res://assets/noise/noise3.tres +King.tscn::PackedScene::8277830396459966414::1738377693::0::1::::<><>::res://scripts/King.gd<>uid://cdogixbq8ay3t::::res://assets/Resized Chess Piece Assets/White_king.png +Knight.tscn::PackedScene::5270730075267457303::1738377694::0::1::::<><>::res://scripts/Knight.gd<>uid://mf4a3jclbwih::::res://assets/Resized Chess Piece Assets/White_knight.png +Mage.tscn::PackedScene::10334063134713649::1738377694::0::1::::<><>::res://scripts/Mage.gd<>uid://b7iyt4iwjbtd0::::res://assets/temp_assets/mage.png +Pawn.tscn::PackedScene::3675784333675896641::1739063296::0::1::::<><>::res://scripts/Pawn.gd<>uid://ndi1e8thkonq::::res://assets/Resized Chess Piece Assets/White_Pawn.png +Queen.tscn::PackedScene::7495869360053814603::1738377693::0::1::::<><>::res://scripts/Queen.gd<>uid://cb3vq168iyomb::::res://assets/Resized Chess Piece Assets/White_Queen.png +Rook.tscn::PackedScene::9162401199636684468::1739063296::0::1::::<><>::res://scripts/Rook.gd<>uid://b00wxxfjk04ke::::res://assets/Resized Chess Piece Assets/White_rook.png +scene_manager.tscn::PackedScene::6243365322716451430::1738707261::0::1::::<><>::res://scripts/scene_manager.gd +Shop.tscn::PackedScene::6176556733226555776::1739063296::0::1::::<><>::res://scripts/Shop.gd +ShopItem.tscn::PackedScene::5426615772503019706::1739063296::0::1::::<><>::res://scenes/shop_item.gd +shop_item.gd::GDScript::-1::1739035004::0::1::::<>PanelContainer<>:: +texture_holder.tscn::PackedScene::594714386286134588::1738358720::0::1::::<><>:: +title_screen.tscn::PackedScene::8154710134031658440::1738707261::0::1::::<><>::res://scripts/title_screen/title_screen.gd<>uid://bm8sv1itwm467::::res://scenes/ui/menu_button.tscn +Wizard.tscn::PackedScene::6352212773395470747::1738377694::0::1::::<><>::res://scripts/Wizard.gd<>uid://bfk1j3brcknkp::::res://assets/temp_assets/wizard.png +::res://scenes/ui/::1738707261 +menu_button.tscn::PackedScene::3297943059633979218::1738707261::0::1::::<><>::res://assets/shaders/3d_effect.gdshader<>res://scripts/title_screen/menu_button.gd +::res://scripts/::1739061871 +Assassin.gd::GDScript::-1::1739051721::0::1::::Assassin<>Piece<>:: +Bishop.gd::GDScript::-1::1739051721::0::1::::Bishop<>Piece<>:: +game.gd::GDScript::-1::1739063315::0::1::::game<>Node<>:: +King.gd::GDScript::-1::1739051721::0::1::::King<>Piece<>:: +Knight.gd::GDScript::-1::1739051721::0::1::::Knight<>Piece<>:: +Mage.gd::GDScript::-1::1739051721::0::1::::Mage<>Piece<>:: +Pawn.gd::GDScript::-1::1739057192::0::1::::Pawn<>Piece<>:: +Piece.gd::GDScript::-1::1739051735::0::1::::Piece<>Node2D<>:: +Queen.gd::GDScript::-1::1739051721::0::1::::Queen<>Piece<>:: +Rook.gd::GDScript::-1::1739051721::0::1::::Rook<>Piece<>:: +scene_manager.gd::GDScript::-1::1738707261::0::1::::<>Node<>:: +Shop.gd::GDScript::-1::1739063460::0::1::::<>Node2D<>:: +Wizard.gd::GDScript::-1::1739051721::0::1::::Wizard<>Piece<>:: +::res://scripts/title_screen/::1738707261 +menu_button.gd::GDScript::-1::1738707261::0::1::::TitleButton<>Button<>:: +title_screen.gd::GDScript::-1::1738707261::0::1::::TitleScreen<>Control<>:: +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 diff --git a/.godot/editor/filesystem_update4 b/.godot/editor/filesystem_update4 index 5d459476d739d18a2001e5ea7f40946e688e67a8..b147ad721715c6832253802169cb639c235e9bc9 100644 --- a/.godot/editor/filesystem_update4 +++ b/.godot/editor/filesystem_update4 @@ -1,9 +1,33 @@ +<<<<<<< HEAD +======= +res://scripts/Shop.gd +res://scripts/Pawn.gd +res://scripts/Rook.gd +res://scripts/Assassin.gd +res://scripts/Bishop.gd +res://scripts/King.gd +res://scripts/Knight.gd +res://scripts/Mage.gd +res://scripts/Queen.gd +res://scripts/Wizard.gd +res://scripts/game.gd +res://scripts/Piece.gd +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 res://scenes/game.tscn res://assets/shaders/bg.gdshader res://assets/noise/noise.tres res://assets/noise/noise2.tres res://assets/noise/noise3.tres +<<<<<<< HEAD res://scripts/screens/select_piece_screen.gd res://main.tscn res://scenes/screens/title_screen.tscn res://scenes/screens/select_piece_screen.tscn +======= +res://main.tscn +res://scenes/Shop.tscn +res://scenes/ShopItem.tscn +res://scenes/Pawn.tscn +res://scenes/Rook.tscn +res://scripts/Upgrade.gd +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 diff --git a/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg b/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg index 17d58d5b59c20b6d688dbb9cf1e54058bec0b710..801403a45fec410c14edce6cb84864524a5d912a 100644 --- a/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg +++ b/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg @@ -8,7 +8,11 @@ Anim={ "grid_snap_active": false, "grid_step": Vector2(8, 8), "grid_visibility": 1, +<<<<<<< HEAD "ofs": Vector2(-154.44, -536.043), +======= +"ofs": Vector2(-390.56, -393.586), +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 "primary_grid_step": Vector2i(8, 8), "show_group_gizmos": true, "show_guides": true, @@ -34,7 +38,7 @@ Anim={ "snap_rotation_step": 0.261799, "snap_scale": false, "snap_scale_step": 0.1, -"zoom": 0.471937 +"zoom": 0.629961 } 3D={ "fov": 70.01, @@ -175,4 +179,8 @@ Anim={ "zfar": 4000.01, "znear": 0.05 } +<<<<<<< HEAD selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16886/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9272/@VSplitContainer@9094/@HSplitContainer@9096/@HSplitContainer@9098/@Control@9099/@SubViewportContainer@9100/@SubViewport@9101/Main")]) +======= +selected_nodes=Array[NodePath]([]) +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 diff --git a/.godot/editor/game.tscn-folding-c2a7af834e91ff64325daddf58e45dc0.cfg b/.godot/editor/game.tscn-folding-c2a7af834e91ff64325daddf58e45dc0.cfg index 07cfab693d5e7f555cd205d58148529c48f55cdc..c74d2ef9258cb8399318e8de190e9e8918470cc1 100644 --- a/.godot/editor/game.tscn-folding-c2a7af834e91ff64325daddf58e45dc0.cfg +++ b/.godot/editor/game.tscn-folding-c2a7af834e91ff64325daddf58e45dc0.cfg @@ -1,5 +1,5 @@ [folding] -node_unfolds=[NodePath("."), PackedStringArray("opponent_shader", "Editor Description"), NodePath("ShadowContainer"), PackedStringArray("Ordering"), NodePath("TileContainer"), PackedStringArray("Transform", "Ordering"), NodePath("PieceContainer"), PackedStringArray("Ordering", "Process", "Texture"), NodePath("Background"), PackedStringArray("Layout", "material", "Ordering", "Layout/Transform", "Layout/Grow Direction", "Layout/Container Sizing", "Layout/Anchor Points", "Layout/Anchor Offsets", "Texture"), NodePath("Explosion"), PackedStringArray("Ordering", "Transform", "Scale", "Time"), NodePath("PlayerPieces"), PackedStringArray("Transform"), NodePath("OpponentPieces"), PackedStringArray("Visibility", "Transform")] +node_unfolds=[NodePath("."), PackedStringArray("opponent_shader", "Editor Description"), NodePath("ShadowContainer"), PackedStringArray("Ordering"), NodePath("TileContainer"), PackedStringArray("Transform", "Ordering"), NodePath("PieceContainer"), PackedStringArray("Ordering", "Process", "Texture"), NodePath("Background"), PackedStringArray("Layout", "material", "Ordering", "Layout/Transform", "Layout/Grow Direction", "Layout/Container Sizing", "Layout/Anchor Points", "Layout/Anchor Offsets", "Texture"), NodePath("Explosion"), PackedStringArray("Ordering", "Transform", "Scale", "Time"), NodePath("PlayerPieces"), PackedStringArray("Transform"), NodePath("OpponentPieces"), PackedStringArray("Visibility", "Transform"), NodePath("GoldDisplay"), PackedStringArray("Theme Overrides", "Theme Overrides/fonts", "Theme Overrides/font_sizes")] resource_unfolds=["res://scenes/game.tscn::ShaderMaterial_gdbwp", PackedStringArray("Shader Parameters", "Resource")] nodes_folded=[] diff --git a/.godot/editor/main.tscn-editstate-3070c538c03ee49b7677ff960a3f5195.cfg b/.godot/editor/main.tscn-editstate-3070c538c03ee49b7677ff960a3f5195.cfg index 2afe81466a47b13d5f8bbf89b7ad6036505f7474..fc5eec61ffc881fb32bff37def19bdaf093fb1b3 100644 --- a/.godot/editor/main.tscn-editstate-3070c538c03ee49b7677ff960a3f5195.cfg +++ b/.godot/editor/main.tscn-editstate-3070c538c03ee49b7677ff960a3f5195.cfg @@ -175,4 +175,8 @@ Anim={ "zfar": 4000.01, "znear": 0.05 } +<<<<<<< HEAD selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16886/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9272/@VSplitContainer@9094/@HSplitContainer@9096/@HSplitContainer@9098/@Control@9099/@SubViewportContainer@9100/@SubViewport@9101/Main")]) +======= +selected_nodes=Array[NodePath]([]) +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 diff --git a/.godot/editor/project_metadata.cfg b/.godot/editor/project_metadata.cfg index 592403fb9bc4da2fa9e548aed3e467aa8ad9f28b..f594b9b40c6215feb070286ccb951fae87372d8f 100644 --- a/.godot/editor/project_metadata.cfg +++ b/.godot/editor/project_metadata.cfg @@ -1,11 +1,16 @@ [editor_metadata] +<<<<<<< HEAD executable_path="D:/SteamLibrary/steamapps/common/Godot Engine/godot.windows.opt.tools.64.exe" +======= +executable_path="c:/Users/Alan/Downloads/Godot_v4.3-stable_win64.exe/Godot_v4.3-stable_win64.exe" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 use_advanced_connections=false [dialog_bounds] <<<<<<<HEADcreate_new_node=Rect2(2145, 197, 900, 700) +<<<<<<< HEAD <<<<<<<HEAD<<<<<<<HEADproject_settings=Rect2(1290, 76, 1590, 867) create_new_node=Rect2(2379, 158, 1118, 721) project_settings=Rect2(2280, 190, 1200, 700) @@ -14,6 +19,15 @@ project_settings=Rect2(2280, 190, 1200, 700) scenes=["res://scenes/screens/select_piece_screen.tscn", "res://scenes/screens/title_screen.tscn", "res://main.tscn", "res://scenes/game.tscn", "res://scenes/Wizard.tscn", "res://scenes/Rook.tscn", "res://scenes/Queen.tscn", "res://scenes/Pawn.tscn", "res://scenes/Mage.tscn", "res://scenes/Knight.tscn"] scripts=["res://scripts/run_data/run_data.gd", "res://scripts/screens/select_piece_screen.gd", "res://scripts/screens/title_screen.gd", "res://scripts/main/main.gd", "res://scripts/game.gd", "res://scripts/Wizard.gd", "res://scripts/Queen.gd", "res://scripts/Pawn.gd", "res://scripts/Mage.gd", "res://scripts/Knight.gd"] +======= +project_settings=Rect2(2022, 76, 1590, 867) +create_new_node=Rect2(2430, 190, 900, 700) + +[recent_files] + +scenes=["res://scenes/Rook.tscn", "res://scenes/Pawn.tscn", "res://scenes/ShopItem.tscn", "res://scenes/Shop.tscn", "res://main.tscn", "res://scenes/game.tscn", "res://scenes/Queen.tscn", "res://Shop.tscn"] +scripts=["res://scripts/Rook.gd", "res://scripts/Pawn.gd", "res://scripts/Queen.gd", "res://scenes/shop_item.gd", "res://scripts/scene_manager.gd", "res://scripts/game.gd", "res://Shop.gd", "res://README.md"] +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 [script_setup] @@ -22,5 +36,9 @@ last_selected_language="GDScript" [color_picker] picker_shape=3 +<<<<<<< HEAD recent_presets=PackedColorArray(1, 1, 1, 1, 1.01, 1, 1, 1, 0.5, 1, 1, 1, 0.5, 0.5, 1, 1, 0.5, 0.5, 0.5, 1) color_mode=2 +======= +recent_presets=PackedColorArray(0, 1, 0, 0.156863, 1, 1, 0, 0.156863, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0.027451, 0, 0, 0, 0.686275) +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 diff --git a/.godot/editor/recent_dirs b/.godot/editor/recent_dirs index 88ff89ed7906d94f3ca0d1cef43c1859ee842e61..489f2a757d473316d4afc5e8381e45eb1ccbe9a1 100644 --- a/.godot/editor/recent_dirs +++ b/.godot/editor/recent_dirs @@ -9,7 +9,7 @@ res://scripts/ui res://scenes/ui res://scripts res://scenes +res:// res://assets/sprites res://assets/ui/title_screen res://assets/shaders -res:// diff --git a/.godot/editor/script_editor_cache.cfg b/.godot/editor/script_editor_cache.cfg index 0c10956f198ca13dd6a16e64e602b0b2e3796ee5..1c7a50da103c9020fa9cc7532cc024ae8ac3f8d8 100644 --- a/.godot/editor/script_editor_cache.cfg +++ b/.godot/editor/script_editor_cache.cfg @@ -1,18 +1,44 @@ +[res://README.md] + +state={ +"bookmarks": PackedInt32Array(), +"breakpoints": PackedInt32Array(), +"column": 74, +"folded_lines": Array[int]([]), +"h_scroll_position": 0, +"row": 12, +"scroll_position": 0.0, +"selection": false, +"syntax_highlighter": "Plain Text" +} + [res://scripts/game.gd] state={ "bookmarks": PackedInt32Array(), "breakpoints": PackedInt32Array(), +<<<<<<< HEAD "column": 0, "folded_lines": Array[int]([]), "h_scroll_position": 0, "row": 0, "scroll_position": 0.0, +======= +"column": 20, +"folded_lines": Array[int]([]), +"h_scroll_position": 0, +"row": 428, +"scroll_position": 421.0, +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 "selection": false, "syntax_highlighter": "GDScript" } +<<<<<<< HEAD [res://scripts/main/main.gd] +======= +[res://scripts/Shop.gd] +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 state={ "bookmarks": PackedInt32Array(), @@ -20,13 +46,21 @@ state={ "column": 0, "folded_lines": Array[int]([]), "h_scroll_position": 0, +<<<<<<< HEAD "row": 8, "scroll_position": 0.0, +======= +"row": 108, +"scroll_position": 105.0, +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 "selection": false, "syntax_highlighter": "GDScript" } +<<<<<<< HEAD [res://scripts/screens/title_screen.gd] +======= +[res://scripts/scene_manager.gd] state={ "bookmarks": PackedInt32Array(), @@ -34,36 +68,89 @@ state={ "column": 0, "folded_lines": Array[int]([]), "h_scroll_position": 0, -"row": 0, +"row": 24, +"scroll_position": 2.0, +"selection": false, +"syntax_highlighter": "GDScript" +} + +[res://scenes/shop_item.gd] + +state={ +"bookmarks": PackedInt32Array(), +"breakpoints": PackedInt32Array(), +"column": 31, +"folded_lines": Array[int]([]), +"h_scroll_position": 0, +"row": 3, +"scroll_position": 3.0, +"selection": false, +"syntax_highlighter": "GDScript" +} + +[res://scripts/Queen.gd] +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 + +state={ +"bookmarks": PackedInt32Array(), +"breakpoints": PackedInt32Array(), +"column": 0, +"folded_lines": Array[int]([]), +"h_scroll_position": 0, +"row": 13, "scroll_position": 0.0, "selection": false, "syntax_highlighter": "GDScript" } +<<<<<<< HEAD [res://scripts/screens/select_piece_screen.gd] +======= +[res://scripts/Pawn.gd] +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 state={ "bookmarks": PackedInt32Array(), "breakpoints": PackedInt32Array(), +<<<<<<< HEAD "column": 1, "folded_lines": Array[int]([]), "h_scroll_position": 0, "row": 27, "scroll_position": 9.0, +======= +"column": 23, +"folded_lines": Array[int]([]), +"h_scroll_position": 0, +"row": 50, +"scroll_position": 38.0, +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 "selection": false, "syntax_highlighter": "GDScript" } +<<<<<<< HEAD [res://scripts/run_data/run_data.gd] +======= +[res://scripts/Rook.gd] +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 state={ "bookmarks": PackedInt32Array(), "breakpoints": PackedInt32Array(), +<<<<<<< HEAD "column": 1, "folded_lines": Array[int]([]), "h_scroll_position": 0, "row": 28, "scroll_position": 10.0, +======= +"column": 3, +"folded_lines": Array[int]([]), +"h_scroll_position": 0, +"row": 66, +"scroll_position": 56.0, +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 "selection": false, "syntax_highlighter": "GDScript" } diff --git a/.godot/global_script_class_cache.cfg b/.godot/global_script_class_cache.cfg index 0baf76cfef5ad0015e277b24efb239104fb0d7a1..0bbe3f173b32134694e7a1486ff7d628306d4446 100644 --- a/.godot/global_script_class_cache.cfg +++ b/.godot/global_script_class_cache.cfg @@ -53,12 +53,15 @@ list=Array[Dictionary]([{ "language": &"GDScript", "path": "res://scripts/Rook.gd" }, { +<<<<<<< HEAD "base": &"Control", "class": &"SelectPieceScreen", "icon": "", "language": &"GDScript", "path": "res://scripts/screens/select_piece_screen.gd" }, { +======= +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 "base": &"Button", "class": &"TitleButton", "icon": "", @@ -69,7 +72,11 @@ list=Array[Dictionary]([{ "class": &"TitleScreen", "icon": "", "language": &"GDScript", +<<<<<<< HEAD "path": "res://scripts/screens/title_screen.gd" +======= +"path": "res://scripts/title_screen/title_screen.gd" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 }, { "base": &"Piece", "class": &"Wizard", diff --git a/Assets/Resized Chess Piece Assets/Black_Assassin.png.import b/Assets/Resized Chess Piece Assets/Black_Assassin.png.import index 4c3f528e94df5be4f5123acd4d281b70fbfdeff8..48e61efc471d45edb9fce7cdb7aeb3aba5f377a5 100644 --- a/Assets/Resized Chess Piece Assets/Black_Assassin.png.import +++ b/Assets/Resized Chess Piece Assets/Black_Assassin.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://b5eea22pnojum" +======= +uid="uid://cjc7sh4hfoqt3" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/Black_Assassin.png-9779f11d14d3617e840d68f6a9ebb5d0.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/Black_Bishop.png.import b/Assets/Resized Chess Piece Assets/Black_Bishop.png.import index 73ff9384d04324c20f479383566f2cf00f8628c9..682aecfc5b90b1e6bb60c3eb71a1e58ee41afd8c 100644 --- a/Assets/Resized Chess Piece Assets/Black_Bishop.png.import +++ b/Assets/Resized Chess Piece Assets/Black_Bishop.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://qvgrpspkfjkx" +======= +uid="uid://cmportfufw0sc" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/Black_Bishop.png-31156db37595e69ca512c38698f9a239.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/Black_Pawn.png.import b/Assets/Resized Chess Piece Assets/Black_Pawn.png.import index 34cd348dea9b30b52c888148e7536c9d194bfcd8..12a5e18183958ffa21b47de54728f4423ccc2305 100644 --- a/Assets/Resized Chess Piece Assets/Black_Pawn.png.import +++ b/Assets/Resized Chess Piece Assets/Black_Pawn.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://du3qov0piv4ty" +======= +uid="uid://ccqn4arw41esa" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/Black_Pawn.png-c1035123434d941739e8a31659fe845d.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/Black_Queen.png.import b/Assets/Resized Chess Piece Assets/Black_Queen.png.import index 4ca688a0f5eed1cb2e524025771bde356eb950a8..c66f4702a2af820b5bc7d7cc0d54949241ac2849 100644 --- a/Assets/Resized Chess Piece Assets/Black_Queen.png.import +++ b/Assets/Resized Chess Piece Assets/Black_Queen.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://dm3h3v1vqyt2i" +======= +uid="uid://d13pkit0yx8w1" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/Black_Queen.png-91c924908a298cebe9bc2bdd61cd1aab.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/Black_king.png.import b/Assets/Resized Chess Piece Assets/Black_king.png.import index 11b20fa0afc4b6e3cc5caf446b4fb09e705e8050..2db03b144d4f7544c0cd21a93deb3d90dd443b48 100644 --- a/Assets/Resized Chess Piece Assets/Black_king.png.import +++ b/Assets/Resized Chess Piece Assets/Black_king.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://bc5lqjmu1vqn5" +======= +uid="uid://bsuewqxoi3kxe" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/Black_king.png-64de782c258a02d199067831bbfebfe0.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/Black_knight.png.import b/Assets/Resized Chess Piece Assets/Black_knight.png.import index 38abdd04a0ab5f1938d445e1c578272e14c2d310..2351e3091fde393508527fcf1d60c83427e26b9f 100644 --- a/Assets/Resized Chess Piece Assets/Black_knight.png.import +++ b/Assets/Resized Chess Piece Assets/Black_knight.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://br7gb46qwq8o8" +======= +uid="uid://bq4h60chg048p" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/Black_knight.png-846a36a9b55a92a0bd2e4692a89d9222.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/Black_mage.png.import b/Assets/Resized Chess Piece Assets/Black_mage.png.import index d949db9cfddc761c767aac244bbf81088447698c..040410b8002a9204a97ccecfec8c3a61409c305f 100644 --- a/Assets/Resized Chess Piece Assets/Black_mage.png.import +++ b/Assets/Resized Chess Piece Assets/Black_mage.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://bftun7ggycvxx" +======= +uid="uid://bnat6bynu44je" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/Black_mage.png-7a41e4577f14b778296718d2c9942c5c.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/Black_rook.png.import b/Assets/Resized Chess Piece Assets/Black_rook.png.import index cc7f0288510d2d09f2d66c2abf28340b01d913b8..525e758bec3fff59c36b94c35639eb2f2fa09c30 100644 --- a/Assets/Resized Chess Piece Assets/Black_rook.png.import +++ b/Assets/Resized Chess Piece Assets/Black_rook.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://6y2voelhmjp3" +======= +uid="uid://cmlbpctuqkr3u" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/Black_rook.png-70e1d5eb566b78612ae78261e7f5d5a6.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/Black_wizard.png.import b/Assets/Resized Chess Piece Assets/Black_wizard.png.import index a028e3da8b43e3380ed6808de9fd27050a92b6eb..c2cc68d85b07736298a5c0a55c1cd3e74ad0b8e1 100644 --- a/Assets/Resized Chess Piece Assets/Black_wizard.png.import +++ b/Assets/Resized Chess Piece Assets/Black_wizard.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://co02l1ad5m6m3" +======= +uid="uid://shl6jsfvn0ta" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/Black_wizard.png-cb555143bb3a98fb848f99dcfe765549.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/White_Assassin.png.import b/Assets/Resized Chess Piece Assets/White_Assassin.png.import index 61493962930e621957077094a9c7e954d1364928..1a7be15370c8f940bcc433a2d4bd8454d46c9036 100644 --- a/Assets/Resized Chess Piece Assets/White_Assassin.png.import +++ b/Assets/Resized Chess Piece Assets/White_Assassin.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://ey700p2jk0cp" +======= +uid="uid://j8hhxry8f0ii" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/White_Assassin.png-07ca33a1945b47ebea515fea105e20ee.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/White_Bishop.png.import b/Assets/Resized Chess Piece Assets/White_Bishop.png.import index 56843c8bace7bfc0c30b517ba6ce77273796c6d4..01634250e5a54d893513d69a97e7f160530e3bac 100644 --- a/Assets/Resized Chess Piece Assets/White_Bishop.png.import +++ b/Assets/Resized Chess Piece Assets/White_Bishop.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://c0dh7cb0fl2vj" +======= +uid="uid://buolh1uof3bbc" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/White_Bishop.png-955d7c5de349d5f940adee703d5f794f.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/White_Pawn.png.import b/Assets/Resized Chess Piece Assets/White_Pawn.png.import index 30de98ec9cd4bb2db6f5ae6cdd2a3c46fe7985af..a27db3dc9a8b18dbcde3877c6cedf07a2730dc54 100644 --- a/Assets/Resized Chess Piece Assets/White_Pawn.png.import +++ b/Assets/Resized Chess Piece Assets/White_Pawn.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://bddktir7e8ma0" +======= +uid="uid://ndi1e8thkonq" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/White_Pawn.png-a927ba07461adabe83c8ff13a8982486.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/White_Queen.png.import b/Assets/Resized Chess Piece Assets/White_Queen.png.import index b1fbff2f7cd64c302f8e94e6864ee7b4b36a50c9..513c8caa79202a846ef75bdfeed9f972d2034ac7 100644 --- a/Assets/Resized Chess Piece Assets/White_Queen.png.import +++ b/Assets/Resized Chess Piece Assets/White_Queen.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://blvoao6ufiaa0" +======= +uid="uid://cb3vq168iyomb" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/White_Queen.png-a669898b0c5a31bf072c0c8c1df1616f.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/White_king.png.import b/Assets/Resized Chess Piece Assets/White_king.png.import index 1c6541e98d28b1729af86a8aa2ca88d8536f6edd..c9ea3bf4ca3a889fdd6068d564d57bfcde8e5a14 100644 --- a/Assets/Resized Chess Piece Assets/White_king.png.import +++ b/Assets/Resized Chess Piece Assets/White_king.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://cccyhkvxdy7fr" +======= +uid="uid://cdogixbq8ay3t" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/White_king.png-0d53fbc8f540b7f9892862e16f4557f5.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/White_knight.png.import b/Assets/Resized Chess Piece Assets/White_knight.png.import index 3e6b729608e857dab01df0021345052a4ed66f47..03de5b6ef1933c03d6774692dc0a9b815829f295 100644 --- a/Assets/Resized Chess Piece Assets/White_knight.png.import +++ b/Assets/Resized Chess Piece Assets/White_knight.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://dp7u64gmitb2q" +======= +uid="uid://mf4a3jclbwih" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/White_knight.png-af5b60f24c1f66b5bac879aef8e75467.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/White_mage.png.import b/Assets/Resized Chess Piece Assets/White_mage.png.import index dcf3e037a6a11924ffc31cdfb2f72705ecfe8fbb..00f6044f421356e82d98231bea5fe628a3ffa2f3 100644 --- a/Assets/Resized Chess Piece Assets/White_mage.png.import +++ b/Assets/Resized Chess Piece Assets/White_mage.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://u4byh7mw2s04" +======= +uid="uid://dbrrvccmlyblq" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/White_mage.png-13bf07fba853ef5731085aacccb3bab2.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/White_rook.png.import b/Assets/Resized Chess Piece Assets/White_rook.png.import index 8a5e4b89b064f0f75a734ba9b0c9fc8c6eb22c43..dc1d3cb89ab7402072323f6db9097ea84200924b 100644 --- a/Assets/Resized Chess Piece Assets/White_rook.png.import +++ b/Assets/Resized Chess Piece Assets/White_rook.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://cmndtavkx0ln6" +======= +uid="uid://b00wxxfjk04ke" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/White_rook.png-e5e1a20ca93a0594be5d3fb1267367d2.ctex" metadata={ "vram_texture": false diff --git a/Assets/Resized Chess Piece Assets/White_wizard.png.import b/Assets/Resized Chess Piece Assets/White_wizard.png.import index 6a1016e178cef669addc1bdb988ed05794e6ecf2..5b4916b67fe5c3adefc881f144a421d5a572931c 100644 --- a/Assets/Resized Chess Piece Assets/White_wizard.png.import +++ b/Assets/Resized Chess Piece Assets/White_wizard.png.import @@ -2,7 +2,11 @@ importer="texture" type="CompressedTexture2D" +<<<<<<< HEAD uid="uid://cob1bhgcs0ltp" +======= +uid="uid://dwo5k5y02pe46" +>>>>>>> 18f4858a48174eab79d786f74b3431490630d117 path="res://.godot/imported/White_wizard.png-c84194d9805542fd48d5428ec5a721ef.ctex" metadata={ "vram_texture": false diff --git a/project.godot b/project.godot index 139b70bab2d6e15e69f7578cca1953a642d21f84..9bd124c4793c3f9998e99070492f8644acb0a2bb 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="Go Save The King" -run/main_scene="res://scenes/game.tscn" +run/main_scene="res://main.tscn" config/features=PackedStringArray("4.3", "GL Compatibility") config/icon="res://icon.svg" @@ -25,6 +25,10 @@ window/size/viewport_width=1280 window/size/viewport_height=675 window/stretch/mode="viewport" +[gui] + +theme/default_font_multichannel_signed_distance_field=true + [rendering] textures/canvas_textures/default_texture_filter=0 diff --git a/scenes/Pawn.tscn b/scenes/Pawn.tscn index daad364979720b220eacc25c05f471a44237d5e8..3269894e512b0820fd89c45f99bd730743804e0e 100644 --- a/scenes/Pawn.tscn +++ b/scenes/Pawn.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" path="res://scripts/Pawn.gd" id="1_7blqs"] [ext_resource type="Texture2D" uid="uid://w04xn5hy44qq" path="res://Assets/Resized Chess Piece Assets/White_Pawn.png" id="2_sw0f1"] -[node name="Node2D" type="Node2D"] +[node name="Pawn" type="Node2D"] script = ExtResource("1_7blqs") [node name="Sprite2D" type="Sprite2D" parent="."] diff --git a/scenes/Rook.tscn b/scenes/Rook.tscn index 76dade3797c0f42946974cade8a3ea9d8722e0f4..8e73929433d3d4cfaab41b78a3f1cdd00fd27ae2 100644 --- a/scenes/Rook.tscn +++ b/scenes/Rook.tscn @@ -1,8 +1,10 @@ -[gd_scene load_steps=2 format=3 uid="uid://d3sln563mnusy"] +[gd_scene load_steps=3 format=3 uid="uid://d3sln563mnusy"] +[ext_resource type="Script" path="res://scripts/Rook.gd" id="1_monmv"] [ext_resource type="Texture2D" uid="uid://b00wxxfjk04ke" path="res://assets/Resized Chess Piece Assets/White_rook.png" id="1_tvbmm"] [node name="Node2D" type="Node2D"] +script = ExtResource("1_monmv") [node name="Sprite2D" type="Sprite2D" parent="."] texture = ExtResource("1_tvbmm") diff --git a/scenes/Shop.tscn b/scenes/Shop.tscn new file mode 100644 index 0000000000000000000000000000000000000000..a1edae36b13581eaccda4932a397fb5bb8541332 --- /dev/null +++ b/scenes/Shop.tscn @@ -0,0 +1,58 @@ +[gd_scene load_steps=2 format=3 uid="uid://ct878s7wjsq77"] + +[ext_resource type="Script" path="res://scripts/Shop.gd" id="1_8nmap"] + +[node name="Shop" type="Node2D"] +script = ExtResource("1_8nmap") + +[node name="MainContainer" type="MarginContainer" parent="."] +offset_right = 180.0 +offset_bottom = 246.0 +theme_override_constants/margin_left = 0 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 0 +theme_override_constants/margin_bottom = 20 + +[node name="Background" type="ColorRect" parent="MainContainer"] +layout_mode = 2 +color = Color(1, 1, 0, 0.156863) + +[node name="RowsContainer" type="VBoxContainer" parent="MainContainer"] +layout_mode = 2 +theme_override_constants/separation = 30 + +[node name="Title" type="Label" parent="MainContainer/RowsContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 32 +text = "Shop" +horizontal_alignment = 1 + +[node name="PiecesRow" type="HBoxContainer" parent="MainContainer/RowsContainer"] +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="UpgradesRow" type="HBoxContainer" parent="MainContainer/RowsContainer"] +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="BottomSection" type="MarginContainer" parent="MainContainer/RowsContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="ResetShopButton" type="Button" parent="MainContainer/RowsContainer/BottomSection"] +layout_mode = 2 +size_flags_horizontal = 0 +text = "Reset Shop +" + +[node name="NextRoundButton" type="Button" parent="MainContainer/RowsContainer/BottomSection"] +layout_mode = 2 +size_flags_horizontal = 8 +text = "Next Round +" + +[connection signal="pressed" from="MainContainer/RowsContainer/BottomSection/ResetShopButton" to="." method="_on_reset_shop_button_pressed"] +[connection signal="pressed" from="MainContainer/RowsContainer/BottomSection/NextRoundButton" to="." method="_on_next_round_button_pressed"] diff --git a/scenes/ShopItem.tscn b/scenes/ShopItem.tscn new file mode 100644 index 0000000000000000000000000000000000000000..7b15a77373ad37e2cf85d13e842af31c3c9f7ac2 --- /dev/null +++ b/scenes/ShopItem.tscn @@ -0,0 +1,58 @@ +[gd_scene load_steps=3 format=3 uid="uid://cjkxtlxn3rgo5"] + +[ext_resource type="Script" path="res://scenes/shop_item.gd" id="1_gxhtm"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yun3n"] +bg_color = Color(0.408717, 0.672092, 0.458479, 1) + +[node name="ShopItem" type="PanelContainer"] +custom_minimum_size = Vector2(150, 220) +offset_right = 8.0 +offset_bottom = 66.0 +theme_override_styles/panel = SubResource("StyleBoxFlat_yun3n") +script = ExtResource("1_gxhtm") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="ItemSprite" type="TextureRect" parent="MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(64, 64) +layout_mode = 2 +size_flags_horizontal = 4 + +[node name="ItemName" type="Label" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +horizontal_alignment = 1 + +[node name="ItemPrice" type="Label" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +horizontal_alignment = 1 + +[node name="BuyButton" type="Button" parent="MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(100, 40) +layout_mode = 2 +text = "BUY" + +[node name="Overlay" type="ColorRect" parent="."] +visible = false +layout_mode = 2 +color = Color(0, 0, 0, 0.686275) + +[node name="SoldOutLabel" type="Label" parent="Overlay"] +modulate = Color(1, 0, 0, 1) +layout_mode = 2 +offset_left = 10.0 +offset_top = 176.0 +offset_right = 140.0 +offset_bottom = 210.0 +theme_override_font_sizes/font_size = 24 +text = "SOLD OUT" +horizontal_alignment = 1 +vertical_alignment = 1 diff --git a/scenes/game.tscn b/scenes/game.tscn index 5f027e294f8c6e5918dfdcfe49bfded4bf491463..6c13944f871c1f19453f9da8ba1cdac1f997085a 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -63,3 +63,28 @@ position = Vector2(100, 400) [node name="OpponentPieces" type="Node2D" parent="."] position = Vector2(100, 100) + +[node name="ShopButton" type="Button" parent="."] +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -25.0 +offset_bottom = 20.0 +grow_horizontal = 0 +size_flags_horizontal = 8 +size_flags_vertical = 0 +text = "Shop Toggle +" + +[node name="GoldDisplay" type="Label" parent="."] +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -125.0 +offset_top = 36.0 +offset_right = -2.0 +offset_bottom = 103.0 +grow_horizontal = 0 +theme_override_font_sizes/font_size = 26 + +[connection signal="pressed" from="ShopButton" to="." method="_on_shop_button_pressed"] diff --git a/scenes/shop_item.gd b/scenes/shop_item.gd new file mode 100644 index 0000000000000000000000000000000000000000..7048426a93ae9028742880801e5efdc45207eb68 --- /dev/null +++ b/scenes/shop_item.gd @@ -0,0 +1,26 @@ +extends PanelContainer + +func set_tier_style(tier: String): + var style = StyleBoxFlat.new() + + # Define tier colors + var tier_colors = { + "bronze": Color("#A56B2B"), + "silver": Color("#c0c0c0"), + "gold": Color("#D7B000") + } + + # Style configuration + style.bg_color = tier_colors[tier] + style.corner_radius_top_left = 8 + style.corner_radius_top_right = 8 + style.corner_radius_bottom_right = 8 + style.corner_radius_bottom_left = 8 + style.border_width_bottom = 2 + style.border_width_top = 2 + style.border_width_left = 2 + style.border_width_right = 2 + style.border_color = Color(0, 0, 0, 0.3) + + # Apply the style to THIS PanelContainer + self.add_theme_stylebox_override("panel", style) diff --git a/scripts/Assassin.gd b/scripts/Assassin.gd index cb26d07c133c03fdaff763dd483780a6f697ed38..96125cd28415ae8c4c847d545b45409dd945afd9 100644 --- a/scripts/Assassin.gd +++ b/scripts/Assassin.gd @@ -2,14 +2,17 @@ extends Piece class_name Assassin -enum Upgrade { - # Add any specific upgrades for Assassin here -} + +var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade var board_state: Array -func _init(is_white_param: bool, position_param: Vector2): - super._init(is_white_param, position_param) +func _my_init(is_white_param: bool, position_param: Vector2): + super._my_init(is_white_param, position_param) + + +func _ready(): + capture_gold_value = 5 # Capturing is handled in main game.gd func get_valid_moves(board: Array, pos: Vector2) -> Array[Vector2]: diff --git a/scripts/Bishop.gd b/scripts/Bishop.gd index 301f92b43cbfae39443e8838608fd6d3196d2c24..becb9b17f73b8df58afb930b5c2bbbbc04d5ad39 100644 --- a/scripts/Bishop.gd +++ b/scripts/Bishop.gd @@ -2,12 +2,15 @@ extends Piece class_name Bishop -enum Upgrade { - MOVE_CARDINAL_ONE, -} -func _init(is_white_param: bool, position_param: Vector2): - super._init(is_white_param, position_param) +var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade + + +func _ready(): + capture_gold_value = 3 + +func _my_init(is_white_param: bool, position_param: Vector2): + super._my_init(is_white_param, position_param) # Testing upgrades upgrades.append(Upgrade.MOVE_CARDINAL_ONE) diff --git a/scripts/King.gd b/scripts/King.gd index ff0f176d0eb3631d26092a2d7035ba491cd4c066..8e8b5c3069e924ab1acbbaefbf9034f8cba178a7 100644 --- a/scripts/King.gd +++ b/scripts/King.gd @@ -2,12 +2,15 @@ extends Piece class_name King -enum Upgrade { - # Add any specific upgrades for King here -} -func _init(is_white_param: bool, position_param: Vector2): - super._init(is_white_param, position_param) +var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade + + +func _ready(): + capture_gold_value = 10 + +func _my_init(is_white_param: bool, position_param: Vector2): + super._my_init(is_white_param, position_param) func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]: var valid_moves: Array[Vector2] = [] diff --git a/scripts/Knight.gd b/scripts/Knight.gd index 173a6e0f442a9ecca190c9a0667a4774985e2f63..d80b69511a0b3644b4158d1cd61418cd7a447070 100644 --- a/scripts/Knight.gd +++ b/scripts/Knight.gd @@ -2,12 +2,14 @@ extends Piece class_name Knight -enum Upgrade { - LONGER_L_MOVE, -} -func _init(is_white_param: bool, position_param: Vector2): - super._init(is_white_param, position_param) +var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade + +func _ready(): + capture_gold_value = 3 + +func _my_init(is_white_param: bool, position_param: Vector2): + super._my_init(is_white_param, position_param) # Testing upgrades #upgrades.append(Upgrade.LONGER_L_MOVE) diff --git a/scripts/Mage.gd b/scripts/Mage.gd index c862e97df6f663df745aac59548e64a7c36e9d15..a43d8cc01a034c0efdc1687da100f6fcaa1b435c 100644 --- a/scripts/Mage.gd +++ b/scripts/Mage.gd @@ -2,14 +2,17 @@ extends Piece class_name Mage -enum Upgrade { - # Add any specific upgrades for Mage here -} + +var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade + + +func _ready(): + capture_gold_value = 6 @onready var game_node = get_tree().root.get_node("Game") -func _init(is_white_param: bool, position_param: Vector2): - super._init(is_white_param, position_param) +func _my_init(is_white_param: bool, position_param: Vector2): + super._my_init(is_white_param, position_param) func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]: var valid_moves: Array[Vector2] = [] diff --git a/scripts/Pawn.gd b/scripts/Pawn.gd index 8a6e6b0354aa40938e6b4f227f4bd1462ca396f3..91c6b7115544dcd37805618a195fada8c5edd2b9 100644 --- a/scripts/Pawn.gd +++ b/scripts/Pawn.gd @@ -4,16 +4,20 @@ class_name Pawn var Game = preload("res://scripts/game.gd") -enum Upgrade { DOUBLE_MOVE, DIAGONAL_MOVE } +var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade var tile_size = 64 # Make this global?... @onready var opponent_shader = load("res://shaders/BlackShader.shader") -func _init(is_white_param: bool, position_param: Vector2): - super._init(is_white_param, position_param) + +func _ready(): + capture_gold_value = 1 + +func _my_init(is_white_param: bool, position_param: Vector2): + super._my_init(is_white_param, position_param) # Testing upgrades - upgrades.append(Upgrade.DOUBLE_MOVE) - upgrades.append(Upgrade.DIAGONAL_MOVE) + #upgrades.append(Upgrade.DOUBLE_MOVE) + #upgrades.append(Upgrade.DIAGONAL_MOVE) func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]: @@ -21,7 +25,6 @@ func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]: var x = pos.x var y = pos.y - # TODO: Add En passant move if is_white: # Check if the pawn is at the starting position @@ -46,8 +49,8 @@ func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]: valid_moves.append(Vector2(x + 1, y - 1)) # Check for promotion - if y == 0: - board_state[x][y] = Queen.new(is_white, Vector2(x, y)) + # if y == 0: + # board_state[x][y] = Queen.new(is_white, Vector2(x, y)) diff --git a/scripts/Piece.gd b/scripts/Piece.gd index 2b6d30da53aaf666aad6e14b659068f77d8d4815..ebf50cc1295820e8c9f72155581435456fa76f91 100644 --- a/scripts/Piece.gd +++ b/scripts/Piece.gd @@ -3,15 +3,15 @@ extends Node2D class_name Piece # Properties -var piece_position: Vector2 -var is_white: bool +var piece_position: Vector2 = Vector2.ZERO +var is_white: bool = true # Array for upgrades var upgrades: Array = [] - +var capture_gold_value: int = 0 # initialization method -func _init(is_white_param: bool, piece_position_param: Vector2) -> void: +func _my_init(is_white_param: bool, piece_position_param: Vector2) -> void: self.is_white = is_white_param self.piece_position = piece_position_param diff --git a/scripts/Queen.gd b/scripts/Queen.gd index 0fce2fe3477b8b0e7fa88607ea9725e0011f0b0c..77b31f90ecefc68e5723f01b68bdba4ea9c93536 100644 --- a/scripts/Queen.gd +++ b/scripts/Queen.gd @@ -2,12 +2,15 @@ extends Piece class_name Queen -enum Upgrade { - # Add any specific upgrades for Queen here -} -func _init(is_white_param: bool, position_param: Vector2): - super._init(is_white_param, position_param) +var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade + + +func _ready(): + capture_gold_value = 9 + +func _my_init(is_white_param: bool, position_param: Vector2): + super._my_init(is_white_param, position_param) func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]: var valid_moves: Array[Vector2] = [] diff --git a/scripts/Rook.gd b/scripts/Rook.gd index d90b32fd28a8601f3ac629d7b82b10c363da2d1e..bdeb58f8eb13dda137a8f4499f32122a444a0160 100644 --- a/scripts/Rook.gd +++ b/scripts/Rook.gd @@ -2,12 +2,14 @@ extends Piece class_name Rook -enum Upgrade { - DIAGONAL_MOVE_ONE, -} -func _init(is_white_param: bool, position_param: Vector2): - super._init(is_white_param, position_param) +var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade + +func _ready(): + capture_gold_value = 5 + +func _my_init(is_white_param: bool, position_param: Vector2): + super._my_init(is_white_param, position_param) # Testing upgrades # upgrades.append(Upgrade.DIAGONAL_MOVE_ONE) diff --git a/scripts/Shop.gd b/scripts/Shop.gd new file mode 100644 index 0000000000000000000000000000000000000000..4b2acf1021a9f0f7d014988128d809fdf5a64b98 --- /dev/null +++ b/scripts/Shop.gd @@ -0,0 +1,175 @@ +# Shop.gd +extends Node2D + +signal purchase_attempted(item_data: Dictionary, shop_item: Node) +signal next_round_requested + + +var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade + +@onready var shop_item_scene = preload("res://scenes/ShopItem.tscn") + + +var shop_items = { + "pieces": [ + {"name": "Pawn", "price": 1, "tier": "bronze", "texture": "res://assets/Resized Chess Piece Assets/White_Pawn.png", "purchased": false}, + {"name": "Rook", "price": 3, "tier": "silver", "texture": "res://assets/Resized Chess Piece Assets/White_Rook.png", "purchased": false}, + {"name": "Bishop", "price": 3, "tier": "silver", "texture": "res://assets/Resized Chess Piece Assets/White_Bishop.png", "purchased": false}, + {"name": "Knight", "price": 3, "tier": "silver", "texture": "res://assets/Resized Chess Piece Assets/White_Knight.png", "purchased": false}, + {"name": "Queen", "price": 5, "tier": "gold", "texture": "res://assets/Resized Chess Piece Assets/White_Queen.png", "purchased": false} + ], + "upgrades": [ + {"name": "Double Move", "price": 3, "tier": "bronze", "texture": "res://assets/Resized Chess Piece Assets/Black_Pawn.png", "purchased": false, "piece_type": "Pawn", "upgrade_enum": Upgrade.DOUBLE_MOVE}, + {"name": "Diagonal Move", "price": 3, "tier": "bronze", "texture": "res://assets/Resized Chess Piece Assets/Black_Rook.png", "purchased": false, "piece_type": "Rook", "upgrade_enum": Upgrade.DIAGONAL_MOVE_ONE}, + {"name": "Vert/Hor Move", "price": 3, "tier": "bronze", "texture": "res://assets/Resized Chess Piece Assets/Black_Bishop.png", "purchased": false, "piece_type": "Bishop", "upgrade_enum": Upgrade.MOVE_CARDINAL_ONE}, + {"name": "Diagonal Move", "price": 5, "tier": "silver", "texture": "res://assets/Resized Chess Piece Assets/Black_Pawn.png", "purchased": false, "piece_type": "Pawn", "upgrade_enum": Upgrade.DIAGONAL_MOVE}, + {"name": "Longer L Move", "price": 5, "tier": "silver", "texture": "res://assets/Resized Chess Piece Assets/Black_Knight.png", "purchased": false, "piece_type": "Knight", "upgrade_enum": Upgrade.LONGER_L_MOVE}, + ] +} + +var tier_weights = { + "bronze": 5, + "silver": 3, + "gold": 1 +} + +func _ready(): + self.visible = false # Start hidden + # Connect the reset button + var reset_button = $MainContainer/RowsContainer/BottomSection/ResetShopButton # Adjust the path to your button + reset_button.connect("pressed", Callable(self, "_on_reset_button_pressed")) + populate_rows() # Populate the shop rows + # self.custom_minimum_size = get_viewport_rect().size # Fill the screen + +func set_visibility(visible: bool): + self.visible = visible + +func _on_back_button_pressed(): + get_tree().change_scene_to_file("res://Game.tscn") # Return to game + +func populate_rows(): + clear_row($MainContainer/RowsContainer/PiecesRow) + clear_row($MainContainer/RowsContainer/UpgradesRow) + + # Track selected upgrade types for this shop session + var selected_upgrade_types = [] + + # Add 3 random pieces + for i in 3: + var piece = select_random_item("pieces") + add_item_to_row(piece, $MainContainer/RowsContainer/PiecesRow) + + + # Add 3 random upgrades (no duplicates) + for i in 3: + var upgrade = select_random_upgrade(selected_upgrade_types) + if !upgrade.is_empty(): + selected_upgrade_types.append(upgrade["upgrade_enum"]) + add_item_to_row(upgrade, $MainContainer/RowsContainer/UpgradesRow) + + +func _on_reset_button_pressed(): + # Clear existing items + clear_row($MainContainer/RowsContainer/PiecesRow) + clear_row($MainContainer/RowsContainer/UpgradesRow) + + # Repopulate the shop + populate_rows() + +func clear_row(row: HBoxContainer): + for child in row.get_children(): + child.queue_free() + + +func select_random_item(category: String) -> Dictionary: + var items = shop_items[category] + var total_weight = 0 + + # Calculate total weight + for item in items: + total_weight += tier_weights[item["tier"]] + + # Select random item + var random_value = randf() * total_weight + var cumulative = 0.0 + + for item in items: + cumulative += tier_weights[item["tier"]] + if random_value < cumulative: + return item.duplicate() # Return a copy to avoid modifying original + + return items[0].duplicate() # Fallback + + +func select_random_upgrade(existing_selections: Array = []) -> Dictionary: + var game = get_tree().root.get_node("Main/Game") # Access the game node + var items = shop_items["upgrades"] + + # Create filtered list excluding purchased and already selected upgrades + var filtered_items = [] + for item in items: + # Check if upgrade is already purchased + var is_purchased = false + for purchased in game.purchased_upgrades: + if purchased["upgrade_enum"] == item["upgrade_enum"]: + is_purchased = true + break + + # Check if already selected in current shop session + var in_current_selection = item["upgrade_enum"] in existing_selections + + if is_purchased || in_current_selection: + continue + + filtered_items.append(item) + + # Calculate weights for remaining items + var total_weight = 0 + for item in filtered_items: + total_weight += tier_weights[item["tier"]] + + if total_weight == 0: + return {} # Return empty if no valid items + + # Select random item from filtered list + var random_value = randf() * total_weight + var cumulative = 0.0 + + for item in filtered_items: + cumulative += tier_weights[item["tier"]] + if random_value < cumulative: + return item.duplicate() + + return filtered_items[0].duplicate() if !filtered_items.is_empty() else {} + + +func add_item_to_row(item_data: Dictionary, row: HBoxContainer): + var shop_item = shop_item_scene.instantiate() + + # Set the tier style FIRST + shop_item.set_tier_style(item_data["tier"]) + + shop_item.get_node("MarginContainer/VBoxContainer/ItemName").text = item_data["name"] + shop_item.get_node("MarginContainer/VBoxContainer/ItemPrice").text = "%dg" % item_data["price"] + shop_item.get_node("MarginContainer/VBoxContainer/ItemSprite").texture = load(item_data["texture"]) + + # Connect the BuyButton + var buy_button = shop_item.get_node("MarginContainer/VBoxContainer/BuyButton") + buy_button.connect("pressed", Callable(self, "_on_buy_button_pressed").bind(item_data, shop_item)) + + row.add_child(shop_item) + +func _on_buy_button_pressed(item_data: Dictionary, shop_item: Node): + if !item_data["purchased"]: + # print("Attempting to Purchase: ", item_data["name"]) + # Emit signals to let Game.gd handle the purchase + emit_signal("purchase_attempted", item_data, shop_item) # Emit the full item data + # TODO: Add a sound effect / Animation for purchasing items + else: + print("Item already purchased!") + + +func _on_next_round_button_pressed(): + # print("Next Round button pressed!") + visible = false # Hide the shop + emit_signal("next_round_requested") # Notify the main game script diff --git a/scripts/Upgrade.gd b/scripts/Upgrade.gd new file mode 100644 index 0000000000000000000000000000000000000000..346052a2783ccfd0385b5e5470cae78ce8a3625a --- /dev/null +++ b/scripts/Upgrade.gd @@ -0,0 +1,9 @@ +extends Node + +enum Upgrade { + DOUBLE_MOVE, + DIAGONAL_MOVE, + DIAGONAL_MOVE_ONE, + MOVE_CARDINAL_ONE, + LONGER_L_MOVE +} \ No newline at end of file diff --git a/scripts/Wizard.gd b/scripts/Wizard.gd index 24e694faebaf93eaebd6b888759fecbcc0a9ae0f..75f9a04bb7da718216e888a05c9a7f6ad501a67a 100644 --- a/scripts/Wizard.gd +++ b/scripts/Wizard.gd @@ -2,14 +2,17 @@ extends Piece class_name Wizard -enum Upgrade { - # Add any specific upgrades for Wizard here -} + +var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade + + +func _ready(): + capture_gold_value = 6 @onready var game_node = get_tree().root.get_node("Game") -func _init(is_white_param: bool, position_param: Vector2): - super._init(is_white_param, position_param) +func _my_init(is_white_param: bool, position_param: Vector2): + super._my_init(is_white_param, position_param) func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]: var valid_moves: Array[Vector2] = [] diff --git a/scripts/game.gd b/scripts/game.gd index 681fbf1d78a4e9b7064dec88783da3a5b2d4ac99..3b49e69178ce6c609a947efe53b69f817c6a13d7 100644 --- a/scripts/game.gd +++ b/scripts/game.gd @@ -1,6 +1,12 @@ extends Node class_name game +var player_gold: int = 10 +var shop_scene = preload("res://scenes/Shop.tscn") +var shop: Node2D +var purchased_pieces: Array = [] +var purchased_upgrades: Array = [] + @export var tile_size = 64 @export var dark = Color(0,0,0,1) @export var light =Color(1,1,1,1) @@ -22,6 +28,7 @@ class_name game @onready var player_piece_count = 0 @onready var opponent_pieces = $OpponentPieces @onready var opponent_piece_count = 0 +@onready var gold_display: Label = $GoldDisplay var selected_piece var selected_piece_value @@ -41,6 +48,20 @@ var player_turn : bool = true func _ready() -> void: + shop = shop_scene.instantiate() + add_child(shop) + var viewport_size = get_viewport().get_visible_rect().size + + shop.position = (viewport_size / 2) - Vector2(570, 650) / 2 # pretty much centered, not sure on the exact values / how to scale it to screen size better + shop.visible = false # Start hidden + update_gold_display() # Initialize gold display + set_gold_display_position() # Set the anchors and margins for the gold display + shop.purchase_attempted.connect(_on_purchase_attempted) + shop.next_round_requested.connect(_on_next_round_requested) + + # Connect the resize signal + get_viewport().connect("size_changed", Callable(self, "_on_viewport_size_changed")) + DisplayServer.window_set_min_size(Vector2(1152, 648)) # Set minimum window size #creates 2D array for board, with empty (null) spaces @@ -51,25 +72,44 @@ func _ready() -> void: #hard-coded setup of pieces - board[0][7] = Rook.new(true, Vector2(0, 7)) - board[1][6] = Wizard.new(true, Vector2(0, 7)) - board[1][7] = Bishop.new(true, Vector2(1, 7)) - board[2][7] = King.new(true, Vector2(2, 7)) - board[3][6] = Queen.new(true, Vector2(3, 6)) - board[4][2] = Pawn.new(true, Vector2(4, 7)) - board[5][7] = Knight.new(true, Vector2(5, 7)) - board[6][7] = Assassin.new(true, Vector2(6, 7)) - board[7][6] = Mage.new(true, Vector2(7, 6)) - board[7][7] = Rook.new(true, Vector2(7, 7)) - - board[0][4] = Rook.new(false, Vector2(0, 4)) - board[1][5] = Bishop.new(false, Vector2(1, 5)) - board[3][2] = Queen.new(false, Vector2(3, 2)) - board[3][5] = Pawn.new(false, Vector2(3, 5)) - board[4][4] = Assassin.new(false, Vector2(4, 4)) - board[3][4] = Pawn.new(false, Vector2(3, 4)) - board[4][3] = Mage.new(false, Vector2(4, 3)) - board[7][5] = Rook.new(false, Vector2(7, 5)) + board[0][7] = preload("res://scenes/Rook.tscn").instantiate() + board[0][7]._my_init(true, Vector2(0, 7)) + + board[1][6] = preload("res://scenes/Wizard.tscn").instantiate() + board[1][6]._my_init(true, Vector2(1, 6)) + board[1][7] = preload("res://scenes/Bishop.tscn").instantiate() + board[1][7]._my_init(true, Vector2(1, 7)) + board[2][7] = preload("res://scenes/King.tscn").instantiate() + board[2][7]._my_init(true, Vector2(2, 7)) + board[3][6] = preload("res://scenes/Queen.tscn").instantiate() + board[3][6]._my_init(true, Vector2(3, 6)) + board[4][2] = preload("res://scenes/Pawn.tscn").instantiate() + board[4][2]._my_init(true, Vector2(4, 2)) + board[7][2] = preload("res://scenes/Pawn.tscn").instantiate() + board[7][2]._my_init(true, Vector2(7, 2)) + board[5][7] = preload("res://scenes/Knight.tscn").instantiate() + board[5][7]._my_init(true, Vector2(5, 7)) + board[6][7] = preload("res://scenes/Assassin.tscn").instantiate() + board[6][7]._my_init(true, Vector2(6, 7)) + board[7][6] = preload("res://scenes/Mage.tscn").instantiate() + board[7][6]._my_init(true, Vector2(7, 6)) + board[7][7] = preload("res://scenes/Rook.tscn").instantiate() + board[7][7]._my_init(true, Vector2(7, 7)) + + board[0][4] = preload("res://scenes/Rook.tscn").instantiate() + board[0][4]._my_init(false, Vector2(0, 4)) + board[1][5] = preload("res://scenes/Bishop.tscn").instantiate() + board[1][5]._my_init(false, Vector2(1, 5)) + board[3][2] = preload("res://scenes/Queen.tscn").instantiate() + board[3][2]._my_init(false, Vector2(3, 2)) + board[4][4] = preload("res://scenes/Assassin.tscn").instantiate() + board[4][4]._my_init(false, Vector2(4, 4)) + board[3][4] = preload("res://scenes/Pawn.tscn").instantiate() + board[3][4]._my_init(false, Vector2(3, 4)) + board[4][3] = preload("res://scenes/Mage.tscn").instantiate() + board[4][3]._my_init(false, Vector2(4, 3)) + board[7][5] = preload("res://scenes/Rook.tscn").instantiate() + board[7][5]._my_init(false, Vector2(7, 5)) #potential 'holes', not quite working yet #board[3][3] = '/' @@ -115,25 +155,24 @@ func _process(delta: float) -> void: moving = false unselect_piece() + # Pawn to Queen Promotion Logic if selected_piece != null: # If the selected piece is a pawn and it reaches the end of the board, promote it to a queen if selected_piece_position.y == 0: if selected_piece_value is Pawn: - if selected_piece_value.is_white: - # draw_pieces() - selected_piece.queue_free() - board[selected_piece_position.x][selected_piece_position.y] = Queen.new(true, selected_piece_position) - var piece_scene = preload("res://scenes/Queen.tscn") - var piece_instance = piece_scene.instantiate() - piece_instance.position = Vector2((selected_piece_position.x * tile_size) + tile_size/2.0, (selected_piece_position.y * tile_size) + tile_size/2.0) - piece_instance.z_index = 3 - piece_instance.scale = Vector2(1.25, 1.25) # Scale other pieces by 25% - piece_container.add_child(piece_instance) - explosion_effect.position = piece_instance.position + translate() - explosion_effect.restart() - - # remove_piece(selected_piece_position.x, selected_piece_position.y) + if selected_piece_value.is_white: + # TODO: Add a check for any queen upgrades that have been purchased and apply them to the new piece. + selected_piece.queue_free() + board[selected_piece_position.x][selected_piece_position.y] = preload("res://scenes/Queen.tscn").instantiate() + var piece_instance = board[selected_piece_position.x][selected_piece_position.y] + piece_instance.position = Vector2((selected_piece_position.x * tile_size) + tile_size/2.0, (selected_piece_position.y * tile_size) + tile_size/2.0) + piece_instance.z_index = 3 + piece_instance.scale = Vector2(1.25, 1.25) # Scale other pieces by 25% + piece_container.add_child(piece_instance) + explosion_effect.position = piece_instance.position + translate() + explosion_effect.restart() + # remove_piece(selected_piece_position.x, selected_piece_position.y) func draw_pieces(): #iterate through all tiles, if tile has a piece, @@ -141,44 +180,21 @@ func draw_pieces(): for x in range(board_width): for y in range(board_height): if !is_empty(x, y): - var piece_scene - if board[x][y] is Pawn: - piece_scene = preload("res://scenes/Pawn.tscn") - elif board[x][y] is Rook: - piece_scene = preload("res://scenes/Rook.tscn") - elif board[x][y] is Bishop: - piece_scene = preload("res://scenes/Bishop.tscn") - elif board[x][y] is Queen: - piece_scene = preload("res://scenes/Queen.tscn") - elif board[x][y] is King: - piece_scene = preload("res://scenes/King.tscn") - elif board[x][y] is Knight: - piece_scene = preload("res://scenes/Knight.tscn") - elif board[x][y] is Assassin: - piece_scene = preload("res://scenes/Assassin.tscn") - elif board[x][y] is Mage: - piece_scene = preload("res://scenes/Mage.tscn") - elif board[x][y] is Wizard: - piece_scene = preload("res://scenes/Wizard.tscn") - - if piece_scene: - var piece_instance = piece_scene.instantiate() - piece_instance.position = Vector2((x * tile_size) + tile_size/2.0, (y * tile_size) + tile_size/2.0) - piece_instance.z_index = 3 + board[x][y].position = Vector2((x * tile_size) + tile_size/2.0, (y * tile_size) + tile_size/2.0) + board[x][y].z_index = 3 - # Scale the sprite by 25% for all pieces except the king - if board[x][y] is King: - piece_instance.scale = Vector2(2.0, 2.0) # Scale the king by 50% - else: - piece_instance.scale = Vector2(1.25, 1.25) # Scale other pieces by 25% + # Scale the sprite by 25% for all pieces except the king + if board[x][y] is King: + board[x][y].scale = Vector2(2.0, 2.0) # Scale the king by 50% + else: + board[x][y].scale = Vector2(1.25, 1.25) # Scale other pieces by 25% - # If piece is opponent, add a black shader to piece - if board[x][y].is_white == false: - var piece_sprite = piece_instance.get_node("Sprite2D") as Sprite2D - if piece_sprite: - piece_sprite.material = opponent_shader - - piece_container.add_child(piece_instance) + # If piece is opponent, add a black shader to piece + if board[x][y].is_white == false: + var piece_sprite = board[x][y].get_node("Sprite2D") as Sprite2D + if piece_sprite: + piece_sprite.material = opponent_shader + piece_container.add_child(board[x][y]) #translates 'home' coordinates ((0,0)) to screen location @@ -341,7 +357,6 @@ func is_empty(x, y): func remove_piece(x,y): #iterate through the pieces in piece_container, if that piece is at location x,y, remove it - # TODO: Fix bug with promoted Queen, when capturing other pieces, they are not visually removed. for child in piece_container.get_children(): #translate x,y index values to screen coordinates if child.position == Vector2(x*tile_size + 32, y*tile_size + 32): @@ -354,6 +369,9 @@ func remove_piece(x,y): var piece = child.duplicate() if is_opponent(x, y): + player_gold += child.capture_gold_value + update_gold_display() + opponent_piece_count += 1 if opponent_piece_count <= 4: piece.position = Vector2(opponent_piece_count - 1, 0) * tile_size @@ -489,3 +507,96 @@ func shoot_projectile(x: int, y: int): explosion_effect.restart() # player_turn = !player_turn + + +# Shop Stuff +func _on_shop_button_pressed(): + shop.visible = !shop.visible + update_gold_display() # Pass current gold to shop + piece_container.visible = !piece_container.visible + shadow_container.visible = !shadow_container.visible + tile_container.visible = !tile_container.visible + +func _on_purchase_attempted(item_data: Dictionary, shop_item: Node): + # Check gold here where we have access to the real value + if player_gold >= item_data["price"]: + # Deduct gold and mark the item as purchased + player_gold -= item_data["price"] + item_data["purchased"] = true + + + # Show "Sold Out" overlay and disable button + shop_item.get_node("Overlay/SoldOutLabel").visible = true + shop_item.get_node("Overlay").visible = true + shop_item.get_node("MarginContainer/VBoxContainer/BuyButton").disabled = true + + # Creates an array of piece / upgrade names. + var piece_names = shop.shop_items["pieces"].map(func(item): return item["name"]) + var upgrade_names = shop.shop_items["upgrades"].map(func(item): return item["name"]) + + # checks if the purchased item’s name exists in the list of pieces or upgrades. + if item_data["name"] in piece_names: + # print("Purchased piece: ", item_data["name"]) + purchased_pieces.append(item_data) + elif item_data["name"] in upgrade_names: + # print("Purchased upgrade: ", item_data["name"]) + purchased_upgrades.append(item_data) + apply_upgrade_to_pieces(item_data) + + # Update UI and print debug info + update_gold_display() + else: + # TODO: Play sound / animation for not enough gold + print("Not enough gold!") + +# New function to apply upgrades +func apply_upgrade_to_pieces(upgrade_data: Dictionary): + var piece_type = upgrade_data["piece_type"] + + # Iterate through all pieces on the board + for x in range(board_width): + for y in range(board_height): + var piece = board[x][y] + if piece != null && piece.is_white: + # Check if piece matches type and doesn't already have upgrade + if piece is Rook && piece_type == "Rook": + piece.upgrades.append(upgrade_data["upgrade_enum"]) + elif piece is Pawn && piece_type == "Pawn": + piece.upgrades.append(upgrade_data["upgrade_enum"]) + elif piece is Knight && piece_type == "Knight": + piece.upgrades.append(upgrade_data["upgrade_enum"]) + elif piece is Bishop && piece_type == "Bishop": + piece.upgrades.append(upgrade_data["upgrade_enum"]) + elif piece is Queen && piece_type == "Queen": + piece.upgrades.append(upgrade_data["upgrade_enum"]) + elif piece is King && piece_type == "King": + piece.upgrades.append(upgrade_data["upgrade_enum"]) + elif piece is Mage && piece_type == "Mage": + piece.upgrades.append(upgrade_data["upgrade_enum"]) + elif piece is Wizard && piece_type == "Wizard": + piece.upgrades.append(upgrade_data["upgrade_enum"]) + elif piece is Assassin && piece_type == "Assassin": + piece.upgrades.append(upgrade_data["upgrade_enum"]) + +func update_gold_display(): + gold_display.text = "Gold: %d" % player_gold + +func _on_next_round_requested(): + shop.visible = false # Hide the shop + piece_container.visible = true # Show the board + shadow_container.visible = true + tile_container.visible = true + # print("Player items in purchased_pieces: ", purchased_pieces) + # print("Player upgrades in purchased_upgrades: ", purchased_upgrades) + +func set_gold_display_position(): + # Set anchors to a percentage of the parent container's size + gold_display.anchor_left = 0.2 + gold_display.anchor_top = 0.0 + gold_display.anchor_right = 1.0 + gold_display.anchor_bottom = 0.1 + +func _on_viewport_size_changed(): + if shop: + var viewport_size = get_viewport().get_visible_rect().size + shop.position = viewport_size / 2