@@ -13,7 +13,7 @@ use crate::ui::prelude::*;
13
13
use crate :: util:: prelude:: * ;
14
14
15
15
pub ( super ) fn plugin ( app : & mut App ) {
16
- app. configure :: < ( Deck , DeckDisplay ) > ( ) ;
16
+ app. configure :: < ( Deck , IsDeckDisplay ) > ( ) ;
17
17
}
18
18
19
19
#[ derive( Component , Reflect , Serialize , Deserialize , Default , Clone ) ]
@@ -95,11 +95,11 @@ fn advance_deck(
95
95
96
96
#[ derive( Component , Reflect ) ]
97
97
#[ reflect( Component ) ]
98
- struct DeckDisplay {
98
+ struct IsDeckDisplay {
99
99
target : Entity ,
100
100
}
101
101
102
- impl Configure for DeckDisplay {
102
+ impl Configure for IsDeckDisplay {
103
103
fn configure ( app : & mut App ) {
104
104
app. register_type :: < Self > ( ) ;
105
105
app. add_systems (
@@ -112,48 +112,43 @@ impl Configure for DeckDisplay {
112
112
}
113
113
}
114
114
115
- impl Default for DeckDisplay {
115
+ impl Default for IsDeckDisplay {
116
116
fn default ( ) -> Self {
117
117
Self {
118
118
target : Entity :: PLACEHOLDER ,
119
119
}
120
120
}
121
121
}
122
122
123
- // Clear deck display if its target or its target's deck has changed .
123
+ /// Clear deck display on any change .
124
124
fn clear_deck_display (
125
125
mut commands : Commands ,
126
- deck_display_query : Query < ( Entity , & DeckDisplay ) > ,
127
- target_changed_query : Query < ( ) , Changed < DeckDisplay > > ,
126
+ deck_display_query : Query < ( Entity , & Selection ) , With < IsDeckDisplay > > ,
127
+ target_changed_query : Query < ( ) , Changed < Selection > > ,
128
128
deck_changed_query : Query < ( ) , Changed < Deck > > ,
129
129
) {
130
- // Clear display if target entity has not changed, but its deck has.
131
- for ( entity, deck_display) in & deck_display_query {
132
- if !target_changed_query. contains ( entity)
133
- && !deck_changed_query. contains ( deck_display. target )
134
- {
130
+ for ( entity, selection) in & deck_display_query {
131
+ if !target_changed_query. contains ( entity) && !deck_changed_query. contains ( selection. 0 ) {
135
132
continue ;
136
133
}
137
134
138
135
commands. entity ( entity) . despawn_descendants ( ) ;
139
136
}
140
137
}
141
138
142
- // Populate deck display if its target or its target's deck has changed .
139
+ /// Populate deck display on any change .
143
140
fn populate_deck_display (
144
141
mut commands : Commands ,
145
- deck_display_query : Query < ( Entity , & DeckDisplay ) > ,
142
+ deck_display_query : Query < ( Entity , & Selection ) , With < IsDeckDisplay > > ,
146
143
deck_query : Query < & Deck > ,
147
- target_changed_query : Query < ( ) , Changed < DeckDisplay > > ,
144
+ target_changed_query : Query < ( ) , Changed < IsDeckDisplay > > ,
148
145
deck_changed_query : Query < ( ) , Changed < Deck > > ,
149
146
) {
150
- for ( entity, deck_display) in & deck_display_query {
151
- if !target_changed_query. contains ( entity)
152
- && !deck_changed_query. contains ( deck_display. target )
153
- {
147
+ for ( entity, selection) in & deck_display_query {
148
+ if !target_changed_query. contains ( entity) && !deck_changed_query. contains ( selection. 0 ) {
154
149
continue ;
155
150
}
156
- let deck = deck_query. get ( deck_display . target ) . unwrap ( ) ;
151
+ let deck = deck_query. get ( selection . 0 ) . unwrap ( ) ;
157
152
158
153
commands. entity ( entity) . with_children ( |children| {
159
154
for ( i, card_key) in deck. card_keys . iter ( ) . enumerate ( ) {
@@ -176,7 +171,7 @@ pub fn deck_display(player: Entity) -> impl EntityCommand {
176
171
} ,
177
172
..default ( )
178
173
} ,
179
- DeckDisplay { target : player } ,
174
+ IsDeckDisplay { target : player } ,
180
175
) ) ;
181
176
}
182
177
}
0 commit comments