fix(game): track cursor and touch state in dirty flag for immediate visual feedback

Extends dirty_render_system to detect changes in CursorPosition and TouchState resources. This ensures re-renders trigger immediately when clicking to activate drag functionality, when cursor debug visualization updates, and when cursor fade-out occurs after timeout.
This commit is contained in:
Ryan Walters
2025-11-23 00:44:38 -06:00
parent 61a1590289
commit 50c0033f2f

View File

@@ -2,9 +2,10 @@ use crate::error::{GameError, TextureError};
use crate::map::builder::Map;
use crate::systems::{
debug_render_system, BatchedLinesResource, Collider, CursorPosition, DebugState, DebugTextureResource, Position, SystemId,
SystemTimings, TtfAtlasResource,
SystemTimings, TouchState, TtfAtlasResource,
};
use crate::texture::sprite::{AtlasTile, SpriteAtlas};
use bevy_ecs::change_detection::DetectChanges;
use bevy_ecs::component::Component;
use bevy_ecs::entity::Entity;
use bevy_ecs::event::EventWriter;
@@ -92,8 +93,10 @@ pub fn dirty_render_system(
mut dirty: ResMut<RenderDirty>,
changed: Query<(), Or<(Changed<Renderable>, Changed<Position>, Changed<Visibility>)>>,
removed_renderables: RemovedComponents<Renderable>,
cursor: Res<CursorPosition>,
touch_state: Res<TouchState>,
) {
if changed.iter().count() > 0 || !removed_renderables.is_empty() {
if changed.iter().count() > 0 || !removed_renderables.is_empty() || cursor.is_changed() || touch_state.is_changed() {
dirty.0 = true;
}
}