|
|
|
|
@ -21,31 +21,33 @@ impl Plugin for SetupPlugin {
|
|
|
|
|
/// Setup drawing our cards on the screen
|
|
|
|
|
pub(crate) fn setup_cards(mut commands: Commands, deck: Res<Deck>) {
|
|
|
|
|
let size = 75.0;
|
|
|
|
|
Deck::shuffled().enumerate().for_each(|(i, this_card)| {
|
|
|
|
|
let this = deck
|
|
|
|
|
.cards
|
|
|
|
|
.get(&this_card)
|
|
|
|
|
.unwrap_or_else(|| panic!("fech card sprite {:?}", this_card))
|
|
|
|
|
.clone();
|
|
|
|
|
let new_this = Sprite {
|
|
|
|
|
custom_size: Some(Vec2::new(40.0, 64.0)),
|
|
|
|
|
..this
|
|
|
|
|
};
|
|
|
|
|
// for a 9x9 grid we want x to wrap every 9 and y to increment every 9
|
|
|
|
|
// TODO: Determine based on screen size what this offset and scaling should be
|
|
|
|
|
let x = i % 9;
|
|
|
|
|
let y = i / 9;
|
|
|
|
|
let l = size;
|
|
|
|
|
let x_off = -(size / 2.0) * 9.0;
|
|
|
|
|
let y_off = -(size / 2.0) * 8.0;
|
|
|
|
|
let t = Transform::from_xyz(l * (x as f32) + x_off, l * (y as f32) + y_off, 0.0);
|
|
|
|
|
commands
|
|
|
|
|
.spawn((new_this, this_card, t))
|
|
|
|
|
.observe(debug::set_debug_card)
|
|
|
|
|
.observe(debug::hide_debug_card)
|
|
|
|
|
.observe(play::reset_rotation)
|
|
|
|
|
.observe(play::toggle_selected);
|
|
|
|
|
});
|
|
|
|
|
Deck::iter_shuffled()
|
|
|
|
|
.enumerate()
|
|
|
|
|
.for_each(|(i, this_card)| {
|
|
|
|
|
let this = deck
|
|
|
|
|
.cards
|
|
|
|
|
.get(&this_card)
|
|
|
|
|
.unwrap_or_else(|| panic!("fech card sprite {:?}", this_card))
|
|
|
|
|
.clone();
|
|
|
|
|
let new_this = Sprite {
|
|
|
|
|
custom_size: Some(Vec2::new(40.0, 64.0)),
|
|
|
|
|
..this
|
|
|
|
|
};
|
|
|
|
|
// for a 9x9 grid we want x to wrap every 9 and y to increment every 9
|
|
|
|
|
// TODO: Determine based on screen size what this offset and scaling should be
|
|
|
|
|
let x = i % 9;
|
|
|
|
|
let y = i / 9;
|
|
|
|
|
let l = size;
|
|
|
|
|
let x_off = -(size / 2.0) * 9.0;
|
|
|
|
|
let y_off = -(size / 2.0) * 8.0;
|
|
|
|
|
let t = Transform::from_xyz(l * (x as f32) + x_off, l * (y as f32) + y_off, 0.0);
|
|
|
|
|
commands
|
|
|
|
|
.spawn((new_this, this_card, t))
|
|
|
|
|
.observe(debug::set_debug_card)
|
|
|
|
|
.observe(debug::hide_debug_card)
|
|
|
|
|
.observe(play::reset_rotation)
|
|
|
|
|
.observe(play::toggle_selected);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Setup our camera to view cardson the screen
|
|
|
|
|
|