From b45c2e88c8937b151eb27948a4108949e4fcb023 Mon Sep 17 00:00:00 2001 From: Rendo Date: Mon, 26 Jan 2026 04:01:27 +0500 Subject: [PATCH] grid system basics --- assets/sprites/field.png | Bin 7934 -> 20081 bytes assets/sprites/field.png~ | Bin 0 -> 7934 bytes src/grid.rs | 67 ++++++++++++++++++++++++++++++++++++++ src/main.rs | 1 + 4 files changed, 68 insertions(+) create mode 100644 assets/sprites/field.png~ diff --git a/assets/sprites/field.png b/assets/sprites/field.png index 87a4c099b19f13b9943c9ddc395c4ad30b304e15..1eb0d6f18adb6247d06252bb1c3801fac265f7fd 100644 GIT binary patch literal 20081 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 DPcaZ+ literal 7934 zcmeHMdpML^`+jCjV-(wf>422CN@O@H5;&z@mgWO7htXi`J?$>Hr@}wNw-*Lvfj6{wPsgz za7|l*2M(=WP4M(T44!CL^F&t5-Q6cMfn!kWxNpDRzH*xgk;7^SH63H6~xu zr-}0d_m6p}NDF&pDAKSkfq@O>MCXz&LkVcua0S33-2w)WG_2`B$A+g(W0P*k=&PeJ zjfTW%=8Uq$C?oz)gd-^;XrM7sG9VA&z6u5EcSRZvl2Rw5bR}D~O97RK!j$y8PluFKh~znZw=I|V)=Tj3H-)Dk1?tr z(?`$p-B^1!$IM@R6 z?nd$Zw&xFsUvEALu%?kiL9x(CKRn34rSN@KPQYEOw{e4fA5NyBpK03G4gj$N>Nm5v zafZjMp3J<#IE&m9iG3f`xoM7dYn_1`k1JW5h>~tIZzb4xR|QGj4gDrJ&Iw2a&{YIl zlFn0Q-NFfBZT|VT;`VOQy&nL+;f&N%-v)16krofTsC@P3OO^HZs_xkwnH@& z^1Gp`V$i%_3KX$Au&xLtjztLAR-t)^aW_sI z@Ht+8uX^H^=wa#8ITh%3c3)GR$b26j~h* z3@Wnpn);ic(VTfWe1Vf9yU)|nLzo$jCaBVwR3t;{*}dr1U+9pbLt}xZdH7Ao)UqNK zI_QopT7KlK(jZWbXprJftMcLs(V$!b&ivw$vDW~7*eA#0yvj!0F(tK<6x@B;) z?P}<{nM&z5QcqtqHmf)?#R#->2tG+sKI#_Ds%MI%L2wQ;*`3GZVTdP9Bq@q^R3r|R zGqB-*sFq@bZ%TlFPT%4iS<(omC7Kj-%WTQ+AAq`wIpG8^-^U*| zxy|Q3$?37(lW)}b)&8?IaDz33(9T{Z)QXto(QF|*`Evf7FMF%%yFQ6>$2v!N=xyzp zRnu}U-x!1m#F=W3!)t9k6KkKYWvsIOvh)o5dQeoS|EmC5CI|?tsGXA=SGO!`Ab;O@ zz3#f}3fo;z=W*&n(@t3Y(b`fbNcQ&=GQsYiH2SxDu7T?6>fFBCoW7g6eK|h0`MUyA z2l)3IyVCAIiBI0E2WkWUuaa)p9`WL@d2pgnsWk8KKjVws116_+ulnfWP@#0C3t*50 z()v!VCp)E{*Y2-uvnj8V{L~k5RaYs{txI-JRbB6kk`MOcl6b9q8_jK3O*e_5?|W7B zzO8PPH3Jlhvm>J$3a(nO)3^88KPA0P zvXzcrn;EghqTtf|V9mD2-8F&NZhGFx+i)b8?^+Zd1CT~CX6^HXY(kr;DeGnrGX~zkinMYS8NrNkq3t%vnPxCN|tdNE%d4}Hz-%RJ&nFBOikO*EGEwAs~ z6T9$1trR3L8+tOm%rbMpB?^N~5u>TTz%o-!DUn815R>DDA-UVnjWCDq?%-1XuHGGW zal|~b3iTqoAvlY->H#LeS7Z#~_|RDZS!Vbj69I!!rU^VbOhUX!LOZdevqD;wAc;w$ ze3qPawDP($hOVtZxsjMXzh-`Ms6t(vddgA|&LX+%63N<}1CTmoi5Jd7*igs~HAP#= z9C(ot<@o4#M0LIj2r(#sLYyYFlHzrdE2I$^VKAO%Bt_E z_Lu}t%WxrCCmH<)`uCUPEIlHEwxuXt-0~7YgIJa^ZHLS_?WcFfg0==Reba@4t6u3* zL8e@Dz6^STj0rxG-eg2+OZLfv_7oh%9 zP9Wp{iCQ`g(*myryQh7BOB=*6Tk{khgiDBp%c{}7w!fWqm<=p#0Ix+jg^FEt_bHC( zM=VXKrHDuIvz+uyxr1(|>fH(eCo#*Dg4dL|N(_UW1S{~g|0hzFyRc&mqBz7Kib{N z2gWNl(WprThT@VAlc(c;ZSznbar2YV<6RE|rG_^abv9mAXWO#X<_aD)K`(9j3g8q- z)?BB*WNKFN8@<6@lEOUi06Kg{SYSq^f5U0yMB!Q75rn3iPMI+r3@ZAOvs=WE1^lu& zaq08?oQI{?FFwLZ?RcmNLgiE8(@qtyOKr}SNM70=p8!ddiNC&$-~0%}Gg;jFIA@E< zrk~#>Hj6%lwTQL`a)A@iwAA1fxAW2r?`@uKF_VJy_ZxiMn5{Rmt79L}8=o04+N~Ry zu(0-Pe32-+$nPh1(fx!LdGMWy(>FVR=n?PusP-bhQK}Ecs31=Hl4A^ z@`?2^Ps<$O`fI=0yEz*2-hX=JR9X4f(X-apZk?+=0gB2IP3$)r7E zk^L9HmZ|kQi3=SL)a{doV}vaitkzD-qGn#uS8wuphgjD*c&9#%d+~39_h*7%j!+HNmciD%Fizch+ol>yw9} z(y7=k^?6Q48h?DqU9qaAU1G+{#Bxldi^vW2>a~U|T;7W-D^>bKjR8(%p(JXb<AO?M^F`=66Rjr$K#-I1=<3`pYs;D_#tn& zum0-^{)Y$xb^d@C@{vC|1cg1CjeN8a=fLYfeAv@A5L= zh@-mHI^O!x!Rs6bTU_eR<&68UD-q^>X!ZBWbl!O2^rVztf0sksUw21ThL|iy-%?CQ zib!x_1chYF`w06`Nw2eJ$T;LFDqp$v*)5H?s0?HY*&LNQ_5sH57C zPqDQvrAE}nV1=oH?x8UNO^8`Lw_y@i^(0H=j_Mq+{bFPm723l0VIUNw=12-&d!e#W ziK-IMr5o|*;Y!hD%FZ9=Y8ANk8a|qZRlXR>j~Ae^IwiH^^E-aFVyRJXLecfwCIsd( zLhPR8Gj&#knQe6W>+zCx^gk<#rtg-+J(4)^5;fH6)wTw?_DbBGON=;o#~uthbq6sd z-+0cijESrbxa8gE=M%;=83%BKl>e*+l>rT<;>JPD?&1W@5%=cLC6)Fk2d%F3U`!d3 zxSTXCu%_3DVF;j1PUca!&kibmz!)G$5joZ#?M31=2DpAu=b~II%CDq{Ji`NY2aSqH zkAfHPES6XwP;g~k;&oOAtkdr7oLPVG^+*ZL^|-{Q#c$6Ky#B#a(#dgf1ECE931{~= z9WQV7NHzIwAY(#sn+?mmb0Vy$N4?h$4{&F51l!VT2P*6G2EVDeaqeeGKB+L^1fjyP z*Q!gr7t9ZuchvcPZs`|6+jSOe_%Qh-IwY)pQJGsr5uP@^F-E-8&3N+a%A&o$-d{K~ z*UCR|xYjIwo@1vz_O89#jn;b$H^=mIXwajJIOr=Sr~KGG26(ISUD+7{l@{q86*V26 z;@`~}!}@-3ejx`t31v5yKWa%a~LoKk14|XyT=<>%2peBF;;eC(%PdR1<&4v zYYwh$co%zZj0;e`1J0NOb}7d_d$Z*N8?Yv<#zEkyh{>iy02%$tKXL*@Bnk*L|4L-o z{SU;4PYKCjGx}r5fBE(?3KJqQ`uo`E&xoTe@&8%kvvEgKH1E>traVj$uvl)j?1rgR G$o~Pq6RI5m diff --git a/assets/sprites/field.png~ b/assets/sprites/field.png~ new file mode 100644 index 0000000000000000000000000000000000000000..87a4c099b19f13b9943c9ddc395c4ad30b304e15 GIT binary patch literal 7934 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 G$o~Pq6RI5m literal 0 HcmV?d00001 diff --git a/src/grid.rs b/src/grid.rs index b44db40..dbd5e8c 100644 --- a/src/grid.rs +++ b/src/grid.rs @@ -1,3 +1,70 @@ use bevy::prelude::*; +use crate::{animation::transform::AnimatedTransform, card::drag::MousePosition}; + pub struct GridPlugin; + +impl Plugin for GridPlugin { + fn build(&self, app: &mut App) { + app.add_systems(Startup, setup_grid) + .add_systems(Update, snap_grid_elements); + } +} + +#[derive(Component)] +struct Grid { + bounds: Rect, + columns: usize, + rows: usize, + elements: Vec>, +} + +impl Grid { + pub fn square(start: Vec2, side: f32, cells: usize) -> Self { + let mut elements: Vec> = Vec::new(); + elements.resize(cells * cells, None); + Grid { + bounds: Rect { + min: start, + max: start + Vec2::new(side * (cells as f32), side * (cells as f32)), + }, + columns: cells, + rows: cells, + elements: elements, + } + } + + pub fn get_position(&self, index: usize) -> Vec3 { + let x = index % self.columns; + let y = (index / self.columns).clamp(0, self.rows - 1); + + (self.bounds.min + self.cell_size() / 2. + vec2(x as f32, y as f32) * self.cell_size()) + .extend(0.) + } + + fn cell_size(&self) -> Vec2 { + self.bounds.size() / vec2(self.columns as f32, -(self.rows as f32)) + } +} + +fn setup_grid(mut commands: Commands) { + commands.spawn(Grid::square(vec2(-244., 192.), 80., 5)); +} + +fn snap_grid_elements( + mut transform_query: Query<&mut AnimatedTransform>, + grid_query: Query<&Grid>, +) { + for grid in grid_query { + for (index, el) in grid.elements.iter().enumerate() { + let Some(entity) = el else { + continue; + }; + let Ok(mut transform) = transform_query.get_mut(entity.clone()) else { + continue; + }; + + transform.translation = grid.get_position(index); + } + } +} diff --git a/src/main.rs b/src/main.rs index 4a2ddbb..f6a8d8a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,6 +15,7 @@ fn main() { card::CardPlugin, DefaultPlugins, dev_tools::DevToolsPlugin, + grid::GridPlugin, turns::TurnSystemPlugin, )) .add_systems(Startup, setup)