feat: Introduce core player movement manager with grid-based movement, player pushing mechanics, and initial bot control and strategic planning.
This commit is contained in:
@@ -40,15 +40,7 @@ func _process(delta):
|
||||
player.auto_put_item()
|
||||
|
||||
if move_vec != Vector2i.ZERO:
|
||||
# Calculate target relative to intent (future position) to prevent zigzagging
|
||||
var reference_pos = player.current_position
|
||||
if movement_manager.is_moving:
|
||||
if not movement_manager.movement_queue.is_empty():
|
||||
reference_pos = movement_manager.movement_queue[-1]
|
||||
elif player.target_position != Vector2i(-1, -1):
|
||||
reference_pos = player.target_position
|
||||
|
||||
var target_position = reference_pos + move_vec
|
||||
var target_position = player.current_position + move_vec
|
||||
movement_manager.simple_move_to(target_position)
|
||||
|
||||
|
||||
|
||||
@@ -50,17 +50,7 @@ func _can_rpc() -> bool:
|
||||
|
||||
func simple_move_to(grid_position: Vector2i) -> bool:
|
||||
if is_moving:
|
||||
# Check if we are already moving to this position or if it's already queued
|
||||
var current_target = player.target_position
|
||||
if movement_queue.is_empty():
|
||||
if current_target == grid_position:
|
||||
return false
|
||||
elif movement_queue[-1] == grid_position:
|
||||
return false
|
||||
|
||||
if movement_queue.size() < 1: # Buffer at most 1 future move
|
||||
movement_queue.append(grid_position)
|
||||
return true
|
||||
return false
|
||||
|
||||
if not player.is_multiplayer_authority():
|
||||
print("[Move] Failed: Not authority for %s (Authority: %d, My Peer: %d)" % [player.name, player.get_multiplayer_authority(), player.multiplayer.get_unique_id()])
|
||||
|
||||
@@ -444,11 +444,11 @@ func spawn_powerups_around(center: Vector2i, force_powerups: bool = true, only_c
|
||||
# Spawn ONLY common tiles (7-10) for Stop n Go or if forced
|
||||
item_id = rng.randi_range(7, 10)
|
||||
else:
|
||||
# Free mode: 60% Chance for Common Tile (7-10), 40% for PowerUp
|
||||
if rng.randf() < 0.6:
|
||||
# Free mode: 80% Chance for Common Tile (7-10), 20% for PowerUp
|
||||
if rng.randf() < 0.8:
|
||||
item_id = rng.randi_range(7, 10)
|
||||
else:
|
||||
# 40% Chance for PowerUp
|
||||
# 20% Chance for PowerUp
|
||||
var is_restricted = GameMode.is_restricted(mode)
|
||||
if is_restricted:
|
||||
item_id = [11, 14].pick_random()
|
||||
|
||||
Reference in New Issue
Block a user