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:
+12
-5
@@ -1271,13 +1271,18 @@ func _find_random_spawn_position() -> Vector2i:
|
||||
var available_positions = []
|
||||
|
||||
# Scan the grid for valid walkable floor tiles that are not occupied
|
||||
for x in range(enhanced_gridmap.columns):
|
||||
for z in range(enhanced_gridmap.rows):
|
||||
var cols = enhanced_gridmap.columns if "columns" in enhanced_gridmap else 14
|
||||
var rs = enhanced_gridmap.rows if "rows" in enhanced_gridmap else 14
|
||||
|
||||
for x in range(cols):
|
||||
for z in range(rs):
|
||||
var pos = Vector2i(x, z)
|
||||
|
||||
# Check Floor 0 for walkable ground (Item 0)
|
||||
# Check Floor 0 for walkable ground (Not a wall/obstacle)
|
||||
var ground_item = enhanced_gridmap.get_cell_item(Vector3i(x, 0, z))
|
||||
if ground_item == 0: # Assuming 0 is walkable ground
|
||||
var is_walkable = ground_item != -1 and not ground_item in enhanced_gridmap.non_walkable_items
|
||||
|
||||
if is_walkable:
|
||||
# Check if position is occupied by another player
|
||||
if not is_position_occupied(pos):
|
||||
available_positions.append(pos)
|
||||
@@ -1287,7 +1292,9 @@ func _find_random_spawn_position() -> Vector2i:
|
||||
rng.randomize()
|
||||
return available_positions[rng.randi() % available_positions.size()]
|
||||
|
||||
return Vector2i.ZERO
|
||||
# Better fallback center instead of 0,0 which is often a wall/border
|
||||
print("[Player] Warning: No available spawn positions found! Using fallback.")
|
||||
return Vector2i(cols / 2, rs / 2)
|
||||
|
||||
func find_random_valid_position_in_range() -> Vector2i:
|
||||
var rng = RandomNumberGenerator.new()
|
||||
|
||||
Reference in New Issue
Block a user