From f02158833cda468ba1a57c919bd7ae75af92e59d Mon Sep 17 00:00:00 2001 From: Rendo Date: Sun, 16 Nov 2025 13:36:11 +0500 Subject: [PATCH] Asteroids --- Cargo.lock | 1 + Cargo.toml | 1 + assets/asteroid2.png | Bin 0 -> 187 bytes assets/enemy_projectile.png | Bin 0 -> 143 bytes assets/tileset.png | Bin 471 -> 653 bytes src/asteroid.rs | 96 ++++++++++++++++++++++++++++++++++++ src/main.rs | 25 +++++++++- src/ships/player.rs | 7 ++- src/velocity.rs | 22 +++++++++ 9 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 assets/asteroid2.png create mode 100644 assets/enemy_projectile.png create mode 100644 src/asteroid.rs diff --git a/Cargo.lock b/Cargo.lock index 5f11b37..b65ec0d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4092,6 +4092,7 @@ name = "spacorium" version = "0.1.0" dependencies = [ "bevy", + "rand", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index e57ae1e..c4aeaac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,3 +5,4 @@ edition = "2024" [dependencies] bevy = "0.17.2" +rand = "0.9.2" diff --git a/assets/asteroid2.png b/assets/asteroid2.png new file mode 100644 index 0000000000000000000000000000000000000000..b7f114a09f351be9c2b98b82d1cf9897bed8a6e3 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`O`a}}Ar`$$CwcQ7P~dQpe7yGN zshuxRx#`T8N^hNS?h|mqf90xkQVjQgiQMz8V(T-sdyvJ&@OH`S^5yHhxjtOUOHf)= z#=M_XtFvSGe7=pBYTN>hnAaN{&+Zpd>qzSE$h?v9d)B-emNv!@UfBq{Y?#@Y&ctw2 lxScIfiC>S`W^!#D|Gi0GyREdeMS!kh@O1TaS?83{1ORv?L*oDd literal 0 HcmV?d00001 diff --git a/assets/enemy_projectile.png b/assets/enemy_projectile.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9154211441c7b29fb435bc33f6b4d20fc59425 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`VV*9IAr`&K2@5k2CV&*$*iqttX@kB@a~?+x-0h^!D?IOuJUKNpyWUX}pkIN&DC`&e(Z^H*da} sr1<=t;iFGNW|cdXyqHQwCNMI*Ja2Si`IflDKpPl5UHx3vIVCg!0OgN0NdN!< literal 0 HcmV?d00001 diff --git a/assets/tileset.png b/assets/tileset.png index 7ebc17c150fb5cc0c98201e2593878f716193df2..ba0e6b12521c987d5b88bb32d29b25bdf893dc4a 100644 GIT binary patch delta 629 zcmV-*0*d|D1C0fcBYy%^Nkl5QcX>TqQ}BBIYX0(9v)VDB%{NAx)Se zS1|<@!(o&LF|w?E__eI_SPa7jr!advVwsgE+uRAfMV!*vYX+&&*r>+ro#D9CbFd?Iax*O61&ev1& z{AIp$lsRJ}17Wl^Mo=ce6Bv>CAJUYUjNnWF!3fFV)oR5)8}`n@UY@NfCgA}hlHUXm zw`-iQC-{8(VqX~V8k%Ls^`+F0lnD!dV9E8b?Zn@7S~(|~5c2-}t-dz=82VX(KkD0) zOcdAjMoM6axPKHHP?-VR(f3pDnCGSIwWA*|fz(!~5sZk)uKzkqKqEe0`=J3E@o{|M zoO9GZ4+;}X1_)wP+;;&$%CGj7J9j1b#PD0!TViWP;zX6P}V)QG336VhUU_8#_mV@ifLn@#Ci@%n#6Mu=Qsqkp06bl98Fhj^d@p%mdvc~obH zKqaKl0!81jkzl+gLn?9jlaf&lnxLpnA~P25GvF1(G$DhQ;*WXm;(VY^`_PbqP+g9B zUMYBl!pCX?TL6*LQ$)neeCfh!P%1Ly+8-GzYal;@65$RIib|Enr1l|U%TiR19*PgA zeJpNP6mDedoN6Be(f}z(r(ysvk`gDi_l;NMe6Weo^v`@i8cAPQ+)Ffk0nFbu;m48t%C!!QiPFbu;m48t%C!x)->ouzAul3v2I P00000NkvXXu0mjfBhq^PMEZ!(yaH}C!gyt%>Cq>JHPGl z?B2Z-xex4A?}&KlcfEA)d*90Ry({S=P+gxR1wZ+-&oA_wB(7+pa`%rKO!a_unx1Kv0dv z_rDA}N85ih3r@UZ<=-Yy#i()g*qt!OwH5ok{;n6bzn^cp%~EUA(O6@D&3Si>6~gx{ zZQS|Dd!KTPS4;TQZHK;#%zyQ9hGBHnw}|s6o!HsiYwr5; ldZPFt) { + let sprite1: Handle = asset_server.load("asteroid.png"); + let sprite2: Handle = asset_server.load("asteroid2.png"); + let mut random = rng(); + + for _ in 0..50 { + let position = Vec3::new( + random.random_range(FIRST_CORNER_X..SECOND_CORNER_X), + random.random_range(FIRST_CORNER_Y..SECOND_CORNER_Y), + 0., + ); + let sprite = if random.random_bool(0.5) { + sprite1.clone() + } else { + sprite2.clone() + }; + let tau = f64::to_radians(360.); + let rotation = random.random_range((-tau)..tau) as f32; + + commands + .spawn(( + Asteroid(rotation), + Sprite::from(sprite), + Transform::from_translation(position), + Collider::new(8.), + Damagable::new(20), + )) + .observe(bump); + } +} + +pub fn rotate_asteroid(time: Res