From 8f672dfb495af063a9b625ab4d42f2f30cf37293 Mon Sep 17 00:00:00 2001 From: adtpdn Date: Tue, 9 Dec 2025 17:46:43 +0800 Subject: [PATCH] feat: Add player movement manager, main scene, and backflip animation asset. --- assets/characters/animations/backflip_1.res | Bin 34499 -> 22992 bytes scenes/main.tscn | 3 ++ scripts/managers/player_movement_manager.gd | 30 +++++++++++++------- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/assets/characters/animations/backflip_1.res b/assets/characters/animations/backflip_1.res index 1f3c01c3726938578222c8854dbd4ef95493d2cc..83838617e0edfca225132b3f6b6625abc32099fc 100644 GIT binary patch literal 22992 zcmX`SV{k4$w7y-pyL@Wfwr$(CZFkqUZQE{lZQHhOyuWk)XWo^$Ct3ND51Gka>rSGi zEG!HH^j`pgfF?tMfKI@GfUIDEfKdOF(SOqXPaOZrSn{us)u`;?DrHlndH6bq=K_AxTldPJe;FU_j5^ zpnRNv^B#XeLB1gA_kW3j1nckLe<9)Retu8A$q_gP9YKk55$=8=eqtb-zqU+aN$DY= zeFfWeGpDa@Qn{~Noj#q-nYT|na;8J4e%lI+^RH%TCL3ucYcD%%FDw5itTIb2GfOEV z3n?OVPd#%_|4S@0%`{U@HB+0N%2WWKpv{uN!>MUou{4t1s*x{gstw zdPJ^{)rtmUq@kJeH5hTq%K)hJD%8}{(QjUkqs86AwFEE;yvU7eW7I66>3CFF({zpV z9Exgc$QDpgW>hz35OjGcwib`P1A|9A8B!><_k9stlawJP{Pq8A&V$qojAMk5x zaWJtlg*)+ZTWKkw72St#5*i)ptK??}+@~t4m@vOH_1j7S87=~X9jl}TaYSz}#khr+ zmX=%=p>$$T{I+7nN7-qnY>lh_Kr%hJN>`S@`}BHG_}w@gADx&~k&C9S^0t&fyhf;Y zklIqZb#3Q>!a}&;sqCW(k4mMLxXy+HjReV+H#imu+pwxbj4QO%AKKgw~ z9+3WFXx&O8E-+cvost}wC1Aj&M@kwuVRwW^%iY1S>7XISBJka!vHQ9!$gsptd zqmIA~O%k45+Gdm-f257btsjyR{Vv&33z$*X;DW; zAXn|?0ZXv5BSriS8q^>H;cC@1Z-k6#>53%xYnY^{t_US)h^#m^PTx0CTekwEwGV{CI7 zjyi-Fh&M<8NSRBG7x_6!9K%=8$3A<7nXaDF{c|OZBrqSCq}NGu`!j{=)%E?mSBmTr zPDB-nf_mX}AJjm1)2O&<@q!3RP*IJlZQ0Nw@W_24k{r&cq+>Th>>-qdBMy4_;Tu`3 zF%)B_ie^+RioKb=t(_yz?~r3Q^5{L{k8;5LA}^wYdmK5+DF2)=wtf=QwvcdQpp-24 z0bv1T)WW*lZvQN4if1_5!fb)6WzCU$+yN2X^WMwuEZJ@W$ol$W(KB?rX9qR;`}k(L zoEDZXGT~tlbfyXDNH*4<)A<6cxDQSqT81p33!8+5p2ck18$bPwog2&MkmE%rl;-Po zcGDfGW@T%4lA#+fny?DpAhWP^^I1#RBbN>#DjK}$COSD8vdQ7ZJegDAgj$7`mi3tk z$>Yh*B7cJvG(1L8=gBx(=O?y#CY0JATt+Js0jAEAhu*azu>Ik6!>mg0jg1(+ofh}ygHcn1+7Z{+4!rSMqz~YEa7@1*xn!NT;8n-1YkjbX{%PRX>vC_zW z@hYH&*N18GdZ%>jHP59{Ws@uO;+cnt^jTPiW!775?M9Mp=7h%}@Qil!+>rJzLF zm5D7ibK$S3fHtX@@%KrbjH2T_sIB1IPOws^ye1~0rRC4%%z&FyGj-XYQ3esA2hb@% zs|?@tSf=clmrvk_uwwRglCsQtL<%hh#~D84p)Cpz{)6F6AdbGiUzqyY%Gd=gr&Smv zwptbbW&ZYu=enUxpSV2w=nlP!5XC#K1PQy`=I-?H&1G0^^Vf0={^!C(PYp$`S7}#W z*+9PyuABaA3Qc+5#K)7I@q-P%G}EnolgjO3zDFT7B)bA?HGbRsPEZMPPNt!EP`S)E zSGuwfW|}Ep#sfx=|m!)UTiG?Ei1l}eouF@;_)5IH~G4(7F%7@McFWjRbRCQX=z z1<5{@7QO0Ji$^EgBwH(y;#wW1g=EHSOsJG3Rm~kWs5w&kH@z1Atve^_f4ARs6&?<$ zHK^Z43Bw3$0cnQ&gSU))l2)RGrt}zdW-oig^Sh26c(CLyx8a5hKlky|y19NAU3FbH zvZ<{~GL}C-7I)irtE)w;-1G?w-XiADN$^S^9Yd_IdIm_g+o*}%;uLdbB_*D>vTlO{ z!i#tf-(%BceRn2#`FwO!XVa+GQ>AV|4{QL2uhrGG*Moe=±0F~y`)^8!8kFxM7r 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 N6%THPoz literal 34499 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 diff --git a/scenes/main.tscn b/scenes/main.tscn index 6f32bf9..f18fad1 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -964,6 +964,7 @@ grow_horizontal = 0 grow_vertical = 0 [node name="ActionButtonContainer" type="VBoxContainer" parent="ActionMenu"] +visible = false layout_mode = 0 offset_right = 40.0 offset_bottom = 40.0 @@ -974,11 +975,13 @@ layout_mode = 2 text = "Move" [node name="GrabButton" type="Button" parent="ActionMenu/ActionButtonContainer"] +visible = false custom_minimum_size = Vector2(100, 100) layout_mode = 2 text = "Grab" [node name="PutButton" type="Button" parent="ActionMenu/ActionButtonContainer"] +visible = false custom_minimum_size = Vector2(100, 100) layout_mode = 2 text = "Put" diff --git a/scripts/managers/player_movement_manager.gd b/scripts/managers/player_movement_manager.gd index d50f450..97be5e7 100644 --- a/scripts/managers/player_movement_manager.gd +++ b/scripts/managers/player_movement_manager.gd @@ -47,13 +47,17 @@ func simple_move_to(grid_position: Vector2i) -> bool: if distance != 1: return false # Only single-step moves allowed + # Check if target position is within grid bounds + if not enhanced_gridmap.is_position_valid(grid_position): + return false + # Check for finish line logic (delegated back to player or race manager) if player.has_method("can_move_to_finish") and not player.can_move_to_finish(grid_position): return false # Check walkability and obstacles var cell_item = enhanced_gridmap.get_cell_item(Vector3i(grid_position.x, 0, grid_position.y)) - if cell_item in enhanced_gridmap.non_walkable_items or player.is_position_occupied(grid_position): + if cell_item == -1 or cell_item in enhanced_gridmap.non_walkable_items or player.is_position_occupied(grid_position): return false if enhanced_gridmap.is_blocked_by_obstacle(player.current_position, grid_position, 3): @@ -75,6 +79,10 @@ func move_to_clicked_position(grid_position: Vector2i) -> bool: if not player.is_multiplayer_authority() or is_moving or player.action_points <= 0: return false + # Validate grid position is within bounds + if not enhanced_gridmap.is_position_valid(grid_position): + return false + # Check finish line logic if player.has_method("can_move_to_finish") and not player.can_move_to_finish(grid_position): return false @@ -122,9 +130,9 @@ func highlight_movement_range(): blocked_cells.append_array(enhanced_gridmap.get_cells_blocked_by_obstacle(cell_pos, orientation, 3)) # Now highlight all cells within movement range that aren't blocked - for x in range(max(0, player.current_position.x - movement_range), + for x in range(max(0, player.current_position.x - movement_range), min(enhanced_gridmap.columns, player.current_position.x + movement_range + 1)): - for z in range(max(0, player.current_position.y - movement_range), + for z in range(max(0, player.current_position.y - movement_range), min(enhanced_gridmap.rows, player.current_position.y + movement_range + 1)): var test_pos = Vector2i(x, z) @@ -171,18 +179,18 @@ func can_reach_cell(target_pos: Vector2i, blocked_cells: Array) -> bool: # Try all adjacent cells var directions = [ - Vector2i(0, -1), # North - Vector2i(1, 0), # East - Vector2i(0, 1), # South - Vector2i(-1, 0), # West + Vector2i(0, -1), # North + Vector2i(1, 0), # East + Vector2i(0, 1), # South + Vector2i(-1, 0), # West ] # Add diagonal directions if enabled if enhanced_gridmap.diagonal_movement: - directions.append(Vector2i(-1, -1)) # Northwest - directions.append(Vector2i(1, -1)) # Northeast - directions.append(Vector2i(-1, 1)) # Southwest - directions.append(Vector2i(1, 1)) # Southeast + directions.append(Vector2i(-1, -1)) # Northwest + directions.append(Vector2i(1, -1)) # Northeast + directions.append(Vector2i(-1, 1)) # Southwest + directions.append(Vector2i(1, 1)) # Southeast for dir in directions: var next_pos = current + dir