fix
This commit is contained in:
@@ -29,7 +29,7 @@ impl Dorf {
|
|||||||
let run_speed = 6.;
|
let run_speed = 6.;
|
||||||
let normal_sprite = asset_server.load("dorf.png");
|
let normal_sprite = asset_server.load("dorf.png");
|
||||||
let carry_sprite = asset_server.load("dorf.png");
|
let carry_sprite = asset_server.load("dorf.png");
|
||||||
let origin = (position / TILE_SIZE).as_ivec3();
|
let origin = position.as_ivec3();
|
||||||
|
|
||||||
Dorf {
|
Dorf {
|
||||||
ambulatory: Ambulatory {
|
ambulatory: Ambulatory {
|
||||||
|
|||||||
@@ -313,10 +313,15 @@ pub fn prepare_paths(
|
|||||||
tilemap: Res<TileMap>,
|
tilemap: Res<TileMap>,
|
||||||
chunk_map: Res<ChunkMap>,
|
chunk_map: Res<ChunkMap>,
|
||||||
) {
|
) {
|
||||||
|
let mut paths_needed = 0;
|
||||||
|
let mut paths_computed = 0;
|
||||||
|
|
||||||
for (entity, mut ambulatory, transform) in query.iter_mut() {
|
for (entity, mut ambulatory, transform) in query.iter_mut() {
|
||||||
if ambulatory.current_path.is_some() || ambulatory.target.is_none() {
|
if ambulatory.current_path.is_some() || ambulatory.target.is_none() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
paths_needed += 1;
|
||||||
|
|
||||||
let Some(target) = ambulatory.target else {
|
let Some(target) = ambulatory.target else {
|
||||||
continue;
|
continue;
|
||||||
};
|
};
|
||||||
@@ -332,6 +337,7 @@ pub fn prepare_paths(
|
|||||||
let path = calculate_path_benchmarked(&tilemap, start, goal);
|
let path = calculate_path_benchmarked(&tilemap, start, goal);
|
||||||
ambulatory.current_path = Some(path);
|
ambulatory.current_path = Some(path);
|
||||||
ambulatory.path_index = 0;
|
ambulatory.path_index = 0;
|
||||||
|
paths_computed += 1;
|
||||||
} else if chunk_distance > PATHFINDER_HIERARCHICAL_THRESHOLD_CHUNKS {
|
} else if chunk_distance > PATHFINDER_HIERARCHICAL_THRESHOLD_CHUNKS {
|
||||||
let chunk_path = calculate_chunk_path(&chunk_map, start_chunk, goal_chunk);
|
let chunk_path = calculate_chunk_path(&chunk_map, start_chunk, goal_chunk);
|
||||||
let provisional_goal = goal;
|
let provisional_goal = goal;
|
||||||
|
|||||||
@@ -34,23 +34,14 @@ pub fn task_executor_system(
|
|||||||
mut completed_writer: MessageWriter<TaskCompleted>,
|
mut completed_writer: MessageWriter<TaskCompleted>,
|
||||||
mut failed_writer: MessageWriter<TaskFailed>,
|
mut failed_writer: MessageWriter<TaskFailed>,
|
||||||
) {
|
) {
|
||||||
eprintln!("[TASK_EXEC] Running");
|
|
||||||
|
|
||||||
use std::collections::hash_map::DefaultHasher;
|
use std::collections::hash_map::DefaultHasher;
|
||||||
use std::hash::{Hash, Hasher};
|
use std::hash::{Hash, Hasher};
|
||||||
let mut hasher = DefaultHasher::new();
|
let mut hasher = DefaultHasher::new();
|
||||||
crate::constants::SEED.hash(&mut hasher);
|
crate::constants::SEED.hash(&mut hasher);
|
||||||
time.elapsed_secs().to_bits().hash(&mut hasher);
|
time.elapsed_secs().to_bits().hash(&mut hasher);
|
||||||
let seed = hasher.finish();
|
let seed = hasher.finish();
|
||||||
eprintln!("[TASK_EXEC] RNG seed: {}", seed);
|
|
||||||
let mut rng = WyRand::seed_from_u64(seed);
|
let mut rng = WyRand::seed_from_u64(seed);
|
||||||
|
|
||||||
let count = query.iter().count();
|
|
||||||
eprintln!("[TASK_EXEC] Query returned {} entities", count);
|
|
||||||
if count == 0 {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (entity, mut queue, mut state, mut ambulatory, transform) in query.iter_mut() {
|
for (entity, mut queue, mut state, mut ambulatory, transform) in query.iter_mut() {
|
||||||
// If queue empty, assign default Idle task
|
// If queue empty, assign default Idle task
|
||||||
if queue.is_empty() {
|
if queue.is_empty() {
|
||||||
@@ -86,7 +77,6 @@ pub fn task_executor_system(
|
|||||||
&tilemap,
|
&tilemap,
|
||||||
&mut rng,
|
&mut rng,
|
||||||
);
|
);
|
||||||
// Idle never completes - it cycles forever
|
|
||||||
}
|
}
|
||||||
Task::GoTo {
|
Task::GoTo {
|
||||||
target,
|
target,
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ pub(super) fn execute_idle(
|
|||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
let entity_pos = (transform.translation / ITILE_SIZE as f32).as_ivec3();
|
let entity_pos = transform.translation.as_ivec3();
|
||||||
|
|
||||||
// Track if target actually changed this tick
|
// Track if target actually changed this tick
|
||||||
let mut target_changed = false;
|
let mut target_changed = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user