diff --git a/.godot/editor/editor_layout.cfg b/.godot/editor/editor_layout.cfg index ed7016a32cf77c89216303bbdf5ae8e5879feb61..d618a04b2904d72f5a5cea68804667cf5cc72e83 100644 --- a/.godot/editor/editor_layout.cfg +++ b/.godot/editor/editor_layout.cfg @@ -25,17 +25,17 @@ dock_5="Inspector,Node,History" [EditorNode] -open_scenes=PackedStringArray("res://scenes/game.tscn", "res://scenes/explosion.tscn", "res://scenes/Pawn.tscn", "res://scenes/Rook.tscn", "res://scenes/Bishop.tscn", "res://scenes/Queen.tscn", "res://scenes/King.tscn", "res://scenes/Knight.tscn") +open_scenes=PackedStringArray("res://scenes/game.tscn", "res://scenes/explosion.tscn", "res://scenes/Pawn.tscn", "res://scenes/Rook.tscn", "res://scenes/Bishop.tscn", "res://scenes/Queen.tscn", "res://scenes/King.tscn", "res://scenes/Knight.tscn", "res://scenes/Assassin.tscn") current_scene="res://scenes/Pawn.tscn" -center_split_offset=-313 +center_split_offset=-343 selected_default_debugger_tab_idx=0 -selected_main_editor_idx=0 -selected_bottom_panel_item=0 +selected_main_editor_idx=2 +selected_bottom_panel_item=1 [ScriptEditor] -open_scripts=["res://scripts/Bishop.gd", "res://scripts/game.gd", "res://scripts/King.gd", "res://scripts/Knight.gd", "res://scripts/Pawn.gd", "res://scripts/Piece.gd", "res://scripts/Queen.gd", "res://scripts/Rook.gd"] -selected_script="res://scripts/King.gd" +open_scripts=["res://scripts/Assassin.gd", "res://scripts/Bishop.gd", "res://scripts/game.gd", "res://scripts/King.gd", "res://scripts/Knight.gd", "res://scripts/Pawn.gd", "res://scripts/Piece.gd", "res://scripts/Queen.gd", "res://scripts/Rook.gd"] +selected_script="res://scripts/Pawn.gd" open_help=[] script_split_offset=70 list_split_offset=0 diff --git a/.godot/editor/filesystem_cache8 b/.godot/editor/filesystem_cache8 index 40c2b500ab6c26f4499803ed8c945f2631fc7792..ecfb357725db28bbabdec960ad2108c2168460df 100644 --- a/.godot/editor/filesystem_cache8 +++ b/.godot/editor/filesystem_cache8 @@ -1,83 +1,85 @@ ea4bc82a6ad023ab7ee23ee620429895 -::res://::1738358084 -game.tscn::PackedScene::5692118487183161714::1738337608::0::1::::<><>::uid://cfao716v0t1jw::::res://scenes/board.tscn +::res://::1738360214 +game.tscn::PackedScene::5692118487183161714::1738358720::0::1::::<><>::uid://cfao716v0t1jw::::res://scenes/board.tscn icon.svg::CompressedTexture2D::6378281210119878262::1737912187::1738338716::1::::<><>:: README.md::TextFile::-1::1737912187::0::1::::<><>:: -::res://assets/::1738337658 -::res://assets/noise/::1738340898 -noise2.tres::NoiseTexture2D::5054739835828921764::1738340898::0::1::::<><>:: -noise3.tres::NoiseTexture2D::906885015046579772::1738340898::0::1::::<><>:: -noise.tres::NoiseTexture2D::1693764769519573005::1738340898::0::1::::<><>:: -::res://assets/Original size Chess pieces/::1738338716 -Black king piece 2.png::CompressedTexture2D::7820367427145083060::1738337658::1738338716::1::::<><>:: -Black knight piece.png::CompressedTexture2D::4196515762256027844::1738337658::1738338716::1::::<><>:: -Black Pawn Piece 2.png::CompressedTexture2D::2167440687080906934::1738337658::1738338716::1::::<><>:: -Black Queen Piece 2.png::CompressedTexture2D::6638986330393441989::1738337658::1738338716::1::::<><>:: -Black rook piece.png::CompressedTexture2D::1872655759582013005::1738337658::1738338716::1::::<><>:: -White king piece 2.png::CompressedTexture2D::7139286146806283259::1738337658::1738338716::1::::<><>:: -White knight piece.png::CompressedTexture2D::8293368904171920332::1738337658::1738338716::1::::<><>:: -White Pawn Piece 2.png::CompressedTexture2D::8915038826611091975::1738337658::1738338716::1::::<><>:: -White Queen Piece 2.png::CompressedTexture2D::339041922548181320::1738337658::1738338716::1::::<><>:: -White rook piece.png::CompressedTexture2D::6272641373813891014::1738337658::1738338716::1::::<><>:: -::res://assets/Resized Chess Piece Assets/::1738358077 -Black_king.png::CompressedTexture2D::3691390456247856410::1738337658::1738338716::1::::<><>:: -Black_knight.png::CompressedTexture2D::3569790831830215405::1738337658::1738338716::1::::<><>:: -Black_Pawn.png::CompressedTexture2D::4947090234957464596::1738337658::1738338716::1::::<><>:: -Black_Queen.png::CompressedTexture2D::9042903626319350434::1738337658::1738338716::1::::<><>:: -Black_rook.png::CompressedTexture2D::5637903285567075872::1738337658::1738338716::1::::<><>:: -White_king.png::CompressedTexture2D::5012688985517926395::1738358013::1738358077::1::::<><>:: -White_knight.png::CompressedTexture2D::854350289879594279::1738337658::1738338716::1::::<><>:: -White_Pawn.png::CompressedTexture2D::919180529085242722::1738337658::1738338716::1::::<><>:: -White_Queen.png::CompressedTexture2D::4902137832695542513::1738337658::1738338716::1::::<><>:: -White_rook.png::CompressedTexture2D::4194129281780453908::1738337658::1738338716::1::::<><>:: -::res://assets/shaders/::1738358080 -bg.gdshader::Shader::-1::1738358080::0::1::::<><>:: -color.gdshader::Shader::-1::1738358080::0::1::::<><>:: -shadow.gdshader::Shader::-1::1738358080::0::1::::<><>:: -::res://assets/sprites/::1738338716 -bishop.png::CompressedTexture2D::4631301773944929250::1738337658::1738338716::1::::<><>:: -knight.png::CompressedTexture2D::3545640967717948854::1738337658::1738338716::1::::<><>:: -pawn.png::CompressedTexture2D::1338760335342038528::1738337658::1738338716::1::::<><>:: -rook.png::CompressedTexture2D::6790909281007670776::1738337658::1738338715::1::::<><>:: -tile.png::CompressedTexture2D::8704336058451696509::1738337658::1738338715::1::::<><>:: -::res://assets/temp_assets/::1738338716 -black_bishop.png::CompressedTexture2D::7509881182472568151::1738103868::1738338715::1::::<><>:: -black_king.png::CompressedTexture2D::3646032776351028361::1738103868::1738338715::1::::<><>:: -black_knight.png::CompressedTexture2D::4591257172048987833::1738103868::1738338715::1::::<><>:: -black_pawn.png::CompressedTexture2D::3912668014183198267::1738103868::1738338715::1::::<><>:: -black_queen.png::CompressedTexture2D::7989886812523566234::1738103868::1738338715::1::::<><>:: -black_rook.png::CompressedTexture2D::8767708966549765967::1738103868::1738338715::1::::<><>:: -Piece_move.png::CompressedTexture2D::260618725614842917::1738103868::1738338715::1::::<><>:: -temp_chess_board.png::CompressedTexture2D::4173558678901569366::1738337608::1738338715::1::::<><>:: -turn-black.png::CompressedTexture2D::7112033964315790810::1738103868::1738338715::1::::<><>:: -turn-white.png::CompressedTexture2D::7344907768700758025::1738103868::1738338715::1::::<><>:: -white_bishop.png::CompressedTexture2D::8093744356261485644::1738103868::1738338715::1::::<><>:: -white_king.png::CompressedTexture2D::5901183203660598461::1738103868::1738338716::1::::<><>:: -white_knight.png::CompressedTexture2D::7533630084821562912::1738103868::1738338716::1::::<><>:: -white_pawn.png::CompressedTexture2D::8196778834906249875::1738103868::1738338716::1::::<><>:: -white_queen.png::CompressedTexture2D::1957958042777204643::1738103868::1738338716::1::::<><>:: -white_rook.png::CompressedTexture2D::3317152307554436932::1738103868::1738338716::1::::<><>:: -::res://assets/ui/::1738338716 -Go_Save_The_King_Menu.jpg::CompressedTexture2D::7252735845995868232::1738337658::1738338716::1::::<><>:: -Mockup Gameplay Design.jpg::CompressedTexture2D::4859609684236806088::1738337658::1738338716::1::::<><>:: -Mockup Shop Design.jpg::CompressedTexture2D::8043055154093708922::1738337658::1738338716::1::::<><>:: -::res://scenes/::1738356720 -Bishop.tscn::PackedScene::2789588702038144760::1738356720::0::1::::<><>::res://scripts/Bishop.gd<>uid://b68o4mj7wcwvq::::res://assets/sprites/bishop.png -board.tscn::PackedScene::5124694183364421304::1738103868::0::1::::<><>::uid://b0px5wlrm0mb3::::res://assets/temp_assets/temp_chess_board.png<>res://scripts/board.gd -explosion.tscn::PackedScene::69466253159940830::1738356720::0::1::::<><>:: -game.tscn::PackedScene::8577524005707705072::1738356720::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::1738356720::0::1::::<><>::res://scripts/King.gd<>uid://cdogixbq8ay3t::::res://assets/Resized Chess Piece Assets/White_king.png -Knight.tscn::PackedScene::5270730075267457303::1738356720::0::1::::<><>::res://scripts/Knight.gd<>uid://mf4a3jclbwih::::res://assets/Resized Chess Piece Assets/White_knight.png -Pawn.tscn::PackedScene::3675784333675896641::1738356720::0::1::::<><>::res://scripts/Pawn.gd<>uid://ndi1e8thkonq::::res://assets/Resized Chess Piece Assets/White_Pawn.png -Queen.tscn::PackedScene::7495869360053814603::1738356720::0::1::::<><>::res://scripts/Queen.gd<>uid://cb3vq168iyomb::::res://assets/Resized Chess Piece Assets/White_Queen.png -Rook.tscn::PackedScene::9162401199636684468::1738356720::0::1::::<><>::uid://b00wxxfjk04ke::::res://assets/Resized Chess Piece Assets/White_rook.png -texture_holder.tscn::PackedScene::594714386286134588::1738103868::0::1::::<><>:: -::res://scripts/::1738356268 -Bishop.gd::GDScript::-1::1738352962::0::1::::Bishop<>Piece<>:: -game.gd::GDScript::-1::1738356456::0::1::::game<>Node<>:: -King.gd::GDScript::-1::1738353811::0::1::::King<>Piece<>:: -Knight.gd::GDScript::-1::1738356268::0::1::::Knight<>Piece<>:: -Pawn.gd::GDScript::-1::1738356769::0::1::::Pawn<>Piece<>:: -Piece.gd::GDScript::-1::1738355601::0::1::::Piece<>Node2D<>:: -Queen.gd::GDScript::-1::1738353504::0::1::::Queen<>Piece<>:: -Rook.gd::GDScript::-1::1738352122::0::1::::Rook<>Piece<>:: +::res://assets/::1738358720 +::res://assets/noise/::1738360218 +noise2.tres::NoiseTexture2D::5054739835828921764::1738360218::0::1::::<><>:: +noise3.tres::NoiseTexture2D::906885015046579772::1738360218::0::1::::<><>:: +noise.tres::NoiseTexture2D::1693764769519573005::1738360218::0::1::::<><>:: +::res://assets/Original size Chess pieces/::1738360196 +Black king piece 2.png::CompressedTexture2D::7820367427145083060::1738358720::1738360196::1::::<><>:: +Black knight piece.png::CompressedTexture2D::4196515762256027844::1738358720::1738360196::1::::<><>:: +Black Pawn Piece 2.png::CompressedTexture2D::2167440687080906934::1738358720::1738360196::1::::<><>:: +Black Queen Piece 2.png::CompressedTexture2D::6638986330393441989::1738358720::1738360196::1::::<><>:: +Black rook piece.png::CompressedTexture2D::1872655759582013005::1738358720::1738360196::1::::<><>:: +White king piece 2.png::CompressedTexture2D::7139286146806283259::1738358720::1738360196::1::::<><>:: +White knight piece.png::CompressedTexture2D::8293368904171920332::1738358720::1738360196::1::::<><>:: +White Pawn Piece 2.png::CompressedTexture2D::8915038826611091975::1738358720::1738360196::1::::<><>:: +White Queen Piece 2.png::CompressedTexture2D::339041922548181320::1738358720::1738360196::1::::<><>:: +White rook piece.png::CompressedTexture2D::6272641373813891014::1738358720::1738360196::1::::<><>:: +::res://assets/Resized Chess Piece Assets/::1738360196 +Black_king.png::CompressedTexture2D::3691390456247856410::1738358720::1738360196::1::::<><>:: +Black_knight.png::CompressedTexture2D::3569790831830215405::1738358720::1738360196::1::::<><>:: +Black_Pawn.png::CompressedTexture2D::4947090234957464596::1738358720::1738360196::1::::<><>:: +Black_Queen.png::CompressedTexture2D::9042903626319350434::1738358720::1738360196::1::::<><>:: +Black_rook.png::CompressedTexture2D::5637903285567075872::1738358720::1738360196::1::::<><>:: +White_king.png::CompressedTexture2D::5012688985517926395::1738358720::1738360196::1::::<><>:: +White_knight.png::CompressedTexture2D::854350289879594279::1738358720::1738360196::1::::<><>:: +White_Pawn.png::CompressedTexture2D::919180529085242722::1738358720::1738360196::1::::<><>:: +White_Queen.png::CompressedTexture2D::4902137832695542513::1738358720::1738360196::1::::<><>:: +White_rook.png::CompressedTexture2D::4194129281780453908::1738358720::1738360196::1::::<><>:: +::res://assets/shaders/::1738360772 +bg.gdshader::Shader::-1::1738360772::0::1::::<><>:: +color.gdshader::Shader::-1::1738360772::0::1::::<><>:: +shadow.gdshader::Shader::-1::1738360772::0::1::::<><>:: +::res://assets/sprites/::1738360196 +bishop.png::CompressedTexture2D::4631301773944929250::1738358798::1738360196::1::::<><>:: +knight.png::CompressedTexture2D::3545640967717948854::1738358798::1738360196::1::::<><>:: +pawn.png::CompressedTexture2D::1338760335342038528::1738358798::1738360195::1::::<><>:: +rook.png::CompressedTexture2D::6790909281007670776::1738358798::1738360195::1::::<><>:: +tile.png::CompressedTexture2D::8704336058451696509::1738358570::1738360195::1::::<><>:: +::res://assets/temp_assets/::1738360998 +assassin.png::CompressedTexture2D::2309680507621369322::1738360966::1738361001::1::::<><>:: +black_bishop.png::CompressedTexture2D::7509881182472568151::1738358720::1738360195::1::::<><>:: +black_king.png::CompressedTexture2D::3646032776351028361::1738358720::1738360195::1::::<><>:: +black_knight.png::CompressedTexture2D::4591257172048987833::1738358720::1738360195::1::::<><>:: +black_pawn.png::CompressedTexture2D::3912668014183198267::1738358720::1738360195::1::::<><>:: +black_queen.png::CompressedTexture2D::7989886812523566234::1738358720::1738360195::1::::<><>:: +black_rook.png::CompressedTexture2D::8767708966549765967::1738358720::1738360195::1::::<><>:: +Piece_move.png::CompressedTexture2D::260618725614842917::1738358720::1738360195::1::::<><>:: +temp_chess_board.png::CompressedTexture2D::4173558678901569366::1738358720::1738360195::1::::<><>:: +turn-black.png::CompressedTexture2D::7112033964315790810::1738358720::1738360195::1::::<><>:: +turn-white.png::CompressedTexture2D::7344907768700758025::1738358720::1738360196::1::::<><>:: +white_bishop.png::CompressedTexture2D::8093744356261485644::1738358720::1738360196::1::::<><>:: +white_king.png::CompressedTexture2D::5901183203660598461::1738358720::1738360196::1::::<><>:: +white_knight.png::CompressedTexture2D::7533630084821562912::1738358720::1738360196::1::::<><>:: +white_pawn.png::CompressedTexture2D::8196778834906249875::1738358720::1738360196::1::::<><>:: +white_queen.png::CompressedTexture2D::1957958042777204643::1738358720::1738360196::1::::<><>:: +white_rook.png::CompressedTexture2D::3317152307554436932::1738358720::1738360196::1::::<><>:: +::res://assets/ui/::1738360196 +Go_Save_The_King_Menu.jpg::CompressedTexture2D::7252735845995868232::1738358720::1738360196::1::::<><>:: +Mockup Gameplay Design.jpg::CompressedTexture2D::4859609684236806088::1738358720::1738360196::1::::<><>:: +Mockup Shop Design.jpg::CompressedTexture2D::8043055154093708922::1738358720::1738360196::1::::<><>:: +::res://scenes/::1738360772 +Bishop.tscn::PackedScene::2789588702038144760::1738360361::0::1::::<><>::res://scripts/Bishop.gd<>uid://b68o4mj7wcwvq::::res://assets/sprites/bishop.png +board.tscn::PackedScene::5124694183364421304::1738358720::0::1::::<><>::uid://b0px5wlrm0mb3::::res://assets/temp_assets/temp_chess_board.png<>res://scripts/board.gd +explosion.tscn::PackedScene::69466253159940830::1738360361::0::1::::<><>:: +game.tscn::PackedScene::8577524005707705072::1738360772::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::1738360361::0::1::::<><>::res://scripts/King.gd<>uid://cdogixbq8ay3t::::res://assets/Resized Chess Piece Assets/White_king.png +Knight.tscn::PackedScene::5270730075267457303::1738360361::0::1::::<><>::res://scripts/Knight.gd<>uid://mf4a3jclbwih::::res://assets/Resized Chess Piece Assets/White_knight.png +Pawn.tscn::PackedScene::3675784333675896641::1738360361::0::1::::<><>::res://scripts/Pawn.gd<>uid://ndi1e8thkonq::::res://assets/Resized Chess Piece Assets/White_Pawn.png +Queen.tscn::PackedScene::7495869360053814603::1738360361::0::1::::<><>::res://scripts/Queen.gd<>uid://cb3vq168iyomb::::res://assets/Resized Chess Piece Assets/White_Queen.png +Rook.tscn::PackedScene::9162401199636684468::1738360361::0::1::::<><>::uid://b00wxxfjk04ke::::res://assets/Resized Chess Piece Assets/White_rook.png +texture_holder.tscn::PackedScene::594714386286134588::1738358720::0::1::::<><>:: +::res://scripts/::1738360772 +Bishop.gd::GDScript::-1::1738358720::0::1::::Bishop<>Piece<>:: +game.gd::GDScript::-1::1738360892::0::1::::game<>Node<>:: +King.gd::GDScript::-1::1738358720::0::1::::King<>Piece<>:: +Knight.gd::GDScript::-1::1738358802::0::1::::Knight<>Piece<>:: +Pawn.gd::GDScript::-1::1738358802::0::1::::Pawn<>Piece<>:: +Piece.gd::GDScript::-1::1738358720::0::1::::Piece<>Node2D<>:: +Queen.gd::GDScript::-1::1738358720::0::1::::Queen<>Piece<>:: +Assassin.gd::GDScript::-1::1738360861::0::1::::Assassin<>Piece<>:: +Rook.gd::GDScript::-1::1738358720::0::1::::Rook<>Piece<>:: diff --git a/.godot/editor/filesystem_update4 b/.godot/editor/filesystem_update4 index 145afe9d7526c7bc85ad40bcd12d3f420ddfa6cd..1dd8b09fafff4aa5682b4becb970ed84bdea4c5d 100644 --- a/.godot/editor/filesystem_update4 +++ b/.godot/editor/filesystem_update4 @@ -12,3 +12,9 @@ res://scenes/Bishop.tscn res://scenes/Queen.tscn res://scenes/King.tscn res://scenes/Knight.tscn +res://scripts/Rook.gd +res://scripts/Bishop.gd +res://scripts/Assassin.gd +res://scripts/game.gd +res://scenes/Assassin.tscn +res://scripts/Pawn.gd diff --git a/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg b/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg index beea37665ebfb99b06ab1fd4b1dda18e6ed5bd9d..2309a88eddae135936e94a0ccf9bfa78af6d2d41 100644 --- a/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg +++ b/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg @@ -8,7 +8,7 @@ Anim={ "grid_snap_active": false, "grid_step": Vector2(8, 8), "grid_visibility": 1, -"ofs": Vector2(-1180.52, -464.792), +"ofs": Vector2(-1092.7, -448.319), "primary_grid_step": Vector2i(8, 8), "show_group_gizmos": true, "show_guides": true, @@ -34,7 +34,7 @@ Anim={ "snap_rotation_step": 0.261799, "snap_scale": false, "snap_scale_step": 0.1, -"zoom": 0.529732 +"zoom": 0.471937 } 3D={ "fov": 70.01, @@ -175,4 +175,4 @@ Anim={ "zfar": 4000.01, "znear": 0.05 } -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/Node2D")]) +selected_nodes=Array[NodePath]([]) diff --git a/.godot/editor/game.tscn-folding-c2a7af834e91ff64325daddf58e45dc0.cfg b/.godot/editor/game.tscn-folding-c2a7af834e91ff64325daddf58e45dc0.cfg index 892d185386b625ec13ffd804bc68044c71b139b5..07cfab693d5e7f555cd205d58148529c48f55cdc 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")] +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")] resource_unfolds=["res://scenes/game.tscn::ShaderMaterial_gdbwp", PackedStringArray("Shader Parameters", "Resource")] nodes_folded=[] diff --git a/.godot/editor/project_metadata.cfg b/.godot/editor/project_metadata.cfg index 234bcac911cf37eb96e5d3516495e085a2f30199..0d8854a1e7c7680a5277c1227429904ba753558a 100644 --- a/.godot/editor/project_metadata.cfg +++ b/.godot/editor/project_metadata.cfg @@ -4,7 +4,7 @@ executable_path="c:/Users/Alan/Downloads/Godot_v4.3-stable_win64.exe/Godot_v4.3- [dialog_bounds] -create_new_node=Rect2(510, 190, 900, 700) +create_new_node=Rect2(2371, 126, 900, 700) project_settings=Rect2(360, 190, 1200, 700) [script_setup] @@ -13,8 +13,8 @@ last_selected_language="GDScript" [recent_files] -scripts=["res://scripts/Knight.gd", "res://scripts/King.gd", "res://scripts/Queen.gd", "res://scripts/Bishop.gd", "res://scripts/Rook.gd", "res://scripts/Pawn.gd", "res://scripts/Piece.gd", "@GDScript", "int", "res://background.gd"] -scenes=["res://scenes/Knight.tscn", "res://scenes/King.tscn", "res://scenes/Queen.tscn", "res://scenes/Bishop.tscn", "res://scenes/Rook.tscn", "res://scenes/Pawn.tscn", "res://scenes/explosion.tscn", "res://scenes/game.tscn", "res://scenes/chess_board.tscn", "res://chess_board.tscn"] +scripts=["res://scripts/Assassin.gd", "res://scripts/Knight.gd", "res://scripts/King.gd", "res://scripts/Queen.gd", "res://scripts/Bishop.gd", "res://scripts/Rook.gd", "res://scripts/Pawn.gd", "res://scripts/Piece.gd", "@GDScript", "int"] +scenes=["res://scenes/Assassin.tscn", "res://scenes/Knight.tscn", "res://scenes/King.tscn", "res://scenes/Queen.tscn", "res://scenes/Bishop.tscn", "res://scenes/Rook.tscn", "res://scenes/Pawn.tscn", "res://scenes/explosion.tscn", "res://scenes/game.tscn", "res://scenes/chess_board.tscn"] [color_picker] diff --git a/.godot/editor/script_editor_cache.cfg b/.godot/editor/script_editor_cache.cfg index fc83f202cd7f36610a7a6734c25f09474b84f879..95fc3288cdc5fdb8153d80dd8dbd41935497f810 100644 --- a/.godot/editor/script_editor_cache.cfg +++ b/.godot/editor/script_editor_cache.cfg @@ -3,11 +3,11 @@ state={ "bookmarks": PackedInt32Array(), "breakpoints": PackedInt32Array(), -"column": 20, +"column": 53, "folded_lines": Array[int]([]), "h_scroll_position": 0, -"row": 121, -"scroll_position": 111.0, +"row": 294, +"scroll_position": 284.0, "selection": false, "syntax_highlighter": "GDScript" } @@ -31,11 +31,11 @@ state={ state={ "bookmarks": PackedInt32Array(), "breakpoints": PackedInt32Array(), -"column": 0, +"column": 13, "folded_lines": Array[int]([]), "h_scroll_position": 0, -"row": 17, -"scroll_position": 0.0, +"row": 89, +"scroll_position": 70.0, "selection": false, "syntax_highlighter": "GDScript" } @@ -109,3 +109,17 @@ state={ "selection": false, "syntax_highlighter": "GDScript" } + +[res://scripts/Assassin.gd] + +state={ +"bookmarks": PackedInt32Array(), +"breakpoints": PackedInt32Array(), +"column": 0, +"folded_lines": Array[int]([]), +"h_scroll_position": 0, +"row": 49, +"scroll_position": 26.0, +"selection": false, +"syntax_highlighter": "GDScript" +} diff --git a/.godot/global_script_class_cache.cfg b/.godot/global_script_class_cache.cfg index 8a3d5335d028cfc25f4b6abc36c53678465d21dc..b12ce8f131666913a94b8d7d5d9221df97e9b4c8 100644 --- a/.godot/global_script_class_cache.cfg +++ b/.godot/global_script_class_cache.cfg @@ -1,5 +1,11 @@ list=Array[Dictionary]([{ "base": &"Piece", +"class": &"Assassin", +"icon": "", +"language": &"GDScript", +"path": "res://scripts/Assassin.gd" +}, { +"base": &"Piece", "class": &"Bishop", "icon": "", "language": &"GDScript", diff --git a/.godot/uid_cache.bin b/.godot/uid_cache.bin index 1159a1950906399ec3f6bdebdd47a1113b0cfd5c..6e170e6b50b7f284327ca43d87a9f1cb4100c68a 100644 Binary files a/.godot/uid_cache.bin and b/.godot/uid_cache.bin differ diff --git a/Assets/temp_assets/assassin.png b/Assets/temp_assets/assassin.png new file mode 100644 index 0000000000000000000000000000000000000000..3423cee0877ee9bae0d5426aef0ee9d8328caa14 Binary files /dev/null and b/Assets/temp_assets/assassin.png differ diff --git a/Assets/temp_assets/assassin.png.import b/Assets/temp_assets/assassin.png.import new file mode 100644 index 0000000000000000000000000000000000000000..2153ed5946f1bedf35cf3560acae179535950d6a --- /dev/null +++ b/Assets/temp_assets/assassin.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://753dogr1moxe" +path="res://.godot/imported/assassin.png-7bbbc406e2629bde9613c01b865eff89.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/temp_assets/assassin.png" +dest_files=["res://.godot/imported/assassin.png-7bbbc406e2629bde9613c01b865eff89.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/Assassin.tscn b/scenes/Assassin.tscn new file mode 100644 index 0000000000000000000000000000000000000000..078f6c50f42683e536c7962efc5eb5d57b7be660 --- /dev/null +++ b/scenes/Assassin.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://rxpfuqov0sdv"] + +[ext_resource type="Script" path="res://scripts/Assassin.gd" id="1_g33mq"] +[ext_resource type="Texture2D" uid="uid://753dogr1moxe" path="res://assets/temp_assets/assassin.png" id="2_wrp2r"] + +[node name="Node2D" type="Node2D"] +script = ExtResource("1_g33mq") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2_wrp2r") diff --git a/scenes/game.tscn b/scenes/game.tscn index 50acfb4c32bee12cafb0b5bf5e88b92fd70731d3..e590e426ac17090c8e3c46fc8133a62264051b5c 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -59,3 +59,9 @@ radial_accel_max = 70.25 scale_amount_min = 2.0 scale_amount_max = 3.0 color = Color(0, 0, 0, 1) + +[node name="PlayerPieces" type="Node2D" parent="."] +position = Vector2(100, 400) + +[node name="OpponentPieces" type="Node2D" parent="."] +position = Vector2(100, 100) diff --git a/scripts/Assassin.gd b/scripts/Assassin.gd new file mode 100644 index 0000000000000000000000000000000000000000..4217b3fb035abf577cc528245510a5469326885d --- /dev/null +++ b/scripts/Assassin.gd @@ -0,0 +1,58 @@ +extends Piece + +class_name Assassin + +enum Upgrade { + # Add any specific upgrades for Assassin here +} + +var board_state: Array + +func _init(is_white: bool, position: Vector2): + super._init(is_white, position) + +# Capturing is handled in main game.gd +func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]: + var valid_moves: Array[Vector2] = [] + var sel_x = pos.x + var sel_y = pos.y + + # Add moves based on the provided logic + for x in range(board_state.size()): + for y in range(board_state.size()): + if int((x + y)) % 2 == int((sel_x + sel_y)) % 2 and is_empty(board_state, x, y): + valid_moves.append(Vector2(x, y)) + + if is_opponent(board_state, sel_x, sel_y): + if sel_y - 1 >= 0: + if is_opposite(board_state, sel_x, sel_y - 1): + valid_moves.append(Vector2(sel_x, sel_y - 1)) + if sel_x + 1 < board_state.size(): + if is_opposite(board_state, sel_x + 1, sel_y - 1): + valid_moves.append(Vector2(sel_x + 1, sel_y - 1)) + if sel_x - 1 >= 0: + if is_opposite(board_state, sel_x - 1, sel_y - 1): + valid_moves.append(Vector2(sel_x - 1, sel_y - 1)) + else: + if sel_y + 1 < board_state.size(): + if is_opposite(board_state, sel_x, sel_y + 1): + valid_moves.append(Vector2(sel_x, sel_y + 1)) + if sel_x + 1 < board_state.size(): + if is_opposite(board_state, sel_x + 1, sel_y + 1): + valid_moves.append(Vector2(sel_x + 1, sel_y + 1)) + if sel_x - 1 >= 0: + if is_opposite(board_state, sel_x - 1, sel_y + 1): + valid_moves.append(Vector2(sel_x - 1, sel_y + 1)) + + return valid_moves + + + +func is_empty(board_state: Array, x: int, y: int) -> bool: + return board_state[x][y] == null + +func is_opponent(board_state: Array, x: int, y: int) -> bool: + return board_state[x][y] != null and board_state[x][y].is_white != is_white + +func is_opposite(board_state: Array, x: int, y: int) -> bool: + return board_state[x][y] != null and board_state[x][y].is_white == is_white diff --git a/scripts/Pawn.gd b/scripts/Pawn.gd index 7d8a05394a3d2a9f04eda614561df035a0c1d061..3b1346f79241a24a5b5abb535b1204bad7cb04a3 100644 --- a/scripts/Pawn.gd +++ b/scripts/Pawn.gd @@ -2,8 +2,13 @@ extends Piece class_name Pawn +var Game = preload("res://scripts/game.gd") + enum Upgrade { DOUBLE_MOVE, DIAGONAL_MOVE } +var tile_size = 64 # Make this global?... +@onready var opponent_shader = load("res://shaders/BlackShader.shader") + func _init(is_white: bool, position: Vector2): super._init(is_white, position) # Testing upgrades @@ -40,6 +45,12 @@ func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]: if x < 7 and y > 0 and board_state[x + 1][y - 1] == null: 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)) + + + else: if y < 1 and board_state[x][y + 1] == null: valid_moves.append(Vector2(x, y + 1)) @@ -53,4 +64,8 @@ func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]: if x < 7 and y < 7 and board_state[x + 1][y + 1] != null and board_state[x + 1][y + 1].is_white: valid_moves.append(Vector2(x + 1, y + 1)) + # Check for promotion + # if y == 7: + # board_state[x][y] = Queen.new(is_white, Vector2(x, y)) + return valid_moves diff --git a/scripts/game.gd b/scripts/game.gd index 06aa3a7768d64075927d2d0b6904458f981ddac9..a8f091220bb6cbaee18cae409891c55f50ff3896 100644 --- a/scripts/game.gd +++ b/scripts/game.gd @@ -18,6 +18,10 @@ class_name game @onready var piece_container = $PieceContainer @onready var board = [] +@onready var player_pieces = $PlayerPieces +@onready var player_piece_count = 0 +@onready var opponent_pieces = $OpponentPieces +@onready var opponent_piece_count = 0 var selected_piece var selected_piece_value @@ -29,6 +33,8 @@ var target_position var moving: bool var sprite: Sprite2D +var player_turn : bool = true + @onready var explosion_effect = $Explosion @@ -47,16 +53,16 @@ func _ready() -> void: 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][7] = Pawn.new(true, Vector2(4, 7)) + board[4][2] = Pawn.new(true, Vector2(4, 7)) board[5][7] = Knight.new(true, Vector2(5, 7)) - board[6][7] = Pawn.new(true, Vector2(6, 7)) + board[6][7] = Assassin.new(true, Vector2(6, 7)) 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] = Pawn.new(false, Vector2(4, 4)) + board[4][4] = Assassin.new(false, Vector2(4, 4)) board[3][4] = Pawn.new(false, Vector2(3, 4)) board[4][3] = Pawn.new(false, Vector2(4, 3)) board[7][5] = Rook.new(false, Vector2(7, 5)) @@ -104,6 +110,13 @@ func _process(delta: float) -> void: else: moving = false unselect_piece() + 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() + remove_piece(selected_piece_position.x, selected_piece_position.y) func draw_pieces(): @@ -125,6 +138,8 @@ func draw_pieces(): 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") if piece_scene: var piece_instance = piece_scene.instantiate() @@ -248,20 +263,34 @@ func _input(event): #if mouse click is a left click, proceed if event.button_index == MOUSE_BUTTON_LEFT: - #if the tile is a player's piece, select or deselect it - if !is_empty(x,y) && !(is_opponent(x,y)): - #if there is a currently selected piece that is on the selected tile, deselect that piece - if selected_piece != null: - if board[x][y] == selected_piece_value: - unselect_piece() + if player_turn: + #if the tile is a player's piece, select or deselect it + if !is_empty(x,y) && !(is_opponent(x,y)): + #if there is a currently selected piece that is on the selected tile, deselect that piece + if selected_piece != null: + if board[x][y] == selected_piece_value: + unselect_piece() + else: + select_piece(x,y) + #otherwise, select the piece else: select_piece(x,y) - #otherwise, select the piece + #if the tile is empty or an opponents piece, move the selected piece to that tile else: - select_piece(x,y) - #if the tile is empty or an opponents piece, move the selected piece to that tile + move_selected_piece(x,y) else: - move_selected_piece(x,y) + print("It's not your turn!") + if !is_empty(x,y) && is_opponent(x,y): + if selected_piece!=null: + if board[x][y] == selected_piece_value: + unselect_piece() + else: + select_piece(x,y) + else: + select_piece(x,y) + else: + move_selected_piece(x,y) + func is_opponent(x,y): @@ -274,6 +303,14 @@ func is_opponent(x,y): else: return !board[x][y].is_white +func is_opposite(x,y): + if board[x][y] == null: + return false + else: + if selected_piece != null: + return board[x][y].is_white == selected_piece_value.is_white + else: + return board[x][y].is_white func is_empty(x, y): @@ -291,6 +328,7 @@ 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): @@ -351,16 +389,26 @@ func move_selected_piece(x,y): if Vector2(x,y) in valid_moves: #if tile has opponent piece, remove piece if is_opponent(x,y): - print("Capturing opponent piece") remove_piece(x,y) - + + # check for if assassin is moving behind the opponent's pieces + if selected_piece_value is Assassin: + if selected_piece_value.is_white: + if is_opponent(x, y + 1): + remove_piece(x, y + 1) + else: + if is_opponent(x, y - 1): + remove_piece(x, y - 1) + + #clear the selected_piece's previous position board[selected_piece_position.x][selected_piece_position.y] = null + board[x][y] = selected_piece_value + + #update selected_piece's screen coordinate position selected_piece_position = Vector2((x*tile_size)+ tile_size/2, (y*tile_size) + tile_size/2) - - board[x][y] = selected_piece_value target_position = selected_piece_position moving = true