From 9d392e3b08e06cb42c4c6860807bb724f9fa036c Mon Sep 17 00:00:00 2001 From: CoCoSol007 Date: Wed, 21 Feb 2024 19:02:22 +0100 Subject: [PATCH] save --- .vscode/settings.json | 7 +++ crates/border-wars/assets/tiles/forest.png | Bin 0 -> 11194 bytes crates/border-wars/assets/tiles/grass.png | Bin 0 -> 2752 bytes crates/border-wars/assets/tiles/hill.png | Bin 0 -> 11970 bytes crates/border-wars/src/.main.rs.swp | Bin 0 -> 12288 bytes crates/border-wars/src/main.rs | 13 +++++ crates/border-wars/src/map/.renderer.rs.swp | Bin 0 -> 57344 bytes crates/border-wars/src/map/mod.rs | 1 + crates/border-wars/src/map/renderer.rs | 56 ++++++++++++++++++++ 9 files changed, 77 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 crates/border-wars/assets/tiles/forest.png create mode 100644 crates/border-wars/assets/tiles/grass.png create mode 100644 crates/border-wars/assets/tiles/hill.png create mode 100644 crates/border-wars/src/.main.rs.swp create mode 100644 crates/border-wars/src/map/.renderer.rs.swp create mode 100644 crates/border-wars/src/map/renderer.rs diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..8f7aa14 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "cSpell.words": [ + "despawn", + "Despawns", + "Perlin" + ] +} \ No newline at end of file diff --git a/crates/border-wars/assets/tiles/forest.png b/crates/border-wars/assets/tiles/forest.png new file mode 100644 index 0000000000000000000000000000000000000000..b6c89ecc56219a5ea39e4c813bb9bc2eacfdfe19 GIT binary patch literal 11194 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 Ye{S6taNuNF_W%F@07*qoM6N<$g0sq}E&u=k literal 0 HcmV?d00001 diff --git a/crates/border-wars/assets/tiles/grass.png b/crates/border-wars/assets/tiles/grass.png new file mode 100644 index 0000000000000000000000000000000000000000..6ecf787bab29c2f7467702139bfa8f5616a74b76 GIT binary patch literal 2752 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 literal 0 HcmV?d00001 diff --git a/crates/border-wars/assets/tiles/hill.png b/crates/border-wars/assets/tiles/hill.png new file mode 100644 index 0000000000000000000000000000000000000000..1cb6354855a53622a7d465914f32a7ede14fc309 GIT binary patch literal 11970 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 literal 0 HcmV?d00001 diff --git a/crates/border-wars/src/.main.rs.swp b/crates/border-wars/src/.main.rs.swp new file mode 100644 index 0000000000000000000000000000000000000000..b1680bc6f16043bb6402614ba9e7fb29b39e9c9a GIT binary patch literal 12288 zcmeI2&1w`u5XUPTJsA~+5Il8Ma7H$>$x7IzR|MIFAQIGQ)LWR$)UG2tJwx|QmUUe{ z_zrsZ4SWYZcoRISZ{Q1vM{7RvF@7w1j8wy)p6;&hs`}Mw+1g&be`8&=oCeT14e-hP zh_iF=;o&6!FY+Q2^|ONfC(^x|C&G&Pr-A_@JN~ExpJQRX)c#MF##sP1egF5U;<2l2`~XBzyz286JP>| zkbvt0d^-W~WQKyL|NnP?|9?3J@R{_MG$P$3T_hbNO_RQ#1o%pNM|w>fkTytnNVBBl zq-oMo(g%9`4e1r>CFup}DJl1P2$^xnOn?b60Vco%m;e)C0!)AjFoAy}Fdl=TF}Cw5 z`_!%ZDrJ zdv`r@EajRTqFvkdYVU`h-;MieFHpwXpkPs>zMZf4bFLUwLYrur`!*9zR=vx8y$#*C^UC85eQm$J&> zPxe&4vYb+mDnx3cvMe$im+#=tP|8?iKlQ07m)ijK`n) { + event.send(StartMapGeneration { + seed: 5667, + radius: 5, + }) +} diff --git a/crates/border-wars/src/map/.renderer.rs.swp b/crates/border-wars/src/map/.renderer.rs.swp new file mode 100644 index 0000000000000000000000000000000000000000..da1dbbec0226080defbc4c580f8ccfe6fc8e79a9 GIT binary patch literal 57344 zcmeI&PiP%Q00!`}dht)KRtg>`5yEbH-Iu04lua5*qqaR1s!0Qa^4RRods(}0cRMrN zBrT~Y5f7fkgEzs02T`nNMK3}tf}j@tw~Op&=IdrphRVo~l{qgi;Z-C*~* zBCduix29X_;x!fH!)l=urH`yf+H_+bSv6W@ble?AWml^l)szmj`42l}6$((G5vXkc z$cg@R$TG5o%py-BzwQ^}7vyK;2jl}} z1zA7@^2KA=2V#*N$&ic43UV3|$Zt5#uaM6Xcg%l1B*Zt!P2?TqW#l+=0Qnn#wD=vl zj=YDwjl7AxfqeJyy?ai0WcQiCmXMg5pY-4q0g>PJ;(JzvxX?GLLqY^7Bw zZJMcIplq)#@um((#^AeA`m)k~XJoalvF~ncS3)@*j8=2So1rYz4VCrE!lX7W^5E$0 zl{RjxG(B3$>L@q;LJvc^y!|ok>tfie7iE##w6~(-WAdtS`*l-X42Mykm;i4IrFPS6 zW`2<7XqEMrN}XDDs>+j0VJ%UwgC8i)ZI(}XlUKuMwccg_Iz}CF0R+x-PMQkC1vIoT<5=3_x<`#EG+7`;GT_?+z zN9N@j40;c@n3=4S$M$&Fq8%kq*nO*2KE4`SwuCl+k+b zEk;A7qnV@`JcZ%*=n~f<4jI=@Rrcb#l6U6|$6b2vn3j|^vMTGnH!IxXJntHExf8u} zp#-|hduiWG^PaI7UwQSL-(k2|X;iXHvC45toW_CpV`uw9nV|m8C^IU{AWD*+*)&!S zjkjbYjYf1v+TxE?5$;&f+SMw}5^t(KHD!r2;@Z4WmadUC=J~7|;P!L3XLD66-4;RE zoo8cp72C0ev$fEIESt4$(YAco9Z?x2+cx7C3BxtDfm>kbzMB=UhN()W!_Zyfv!X6p zRhKuzu+%E65(pheako1m7jWRtf&R0uq#*VB)9M*al(7+FV7B2OcKqTWx)x5&H57IF!>h}7F?*XN7^BLcVm@*n%H zz-L@OrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy rpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&LocNYkJe^&ep(b0>H literal 0 HcmV?d00001 diff --git a/crates/border-wars/src/map/mod.rs b/crates/border-wars/src/map/mod.rs index 5265d18..73d0c06 100644 --- a/crates/border-wars/src/map/mod.rs +++ b/crates/border-wars/src/map/mod.rs @@ -2,6 +2,7 @@ pub mod generation; pub mod hex; +pub mod renderer; use bevy::prelude::*; diff --git a/crates/border-wars/src/map/renderer.rs b/crates/border-wars/src/map/renderer.rs new file mode 100644 index 0000000..ad38cce --- /dev/null +++ b/crates/border-wars/src/map/renderer.rs @@ -0,0 +1,56 @@ +//! All functions related to the rendering of the map. + +use bevy::prelude::*; + +use super::Tile; +use crate::map::TilePosition; + +/// A plugin to render the map. +pub struct RendererPlugin; + +impl Plugin for RendererPlugin { + fn build(&self, app: &mut App) { + app.add_systems(Startup, setup_camera).add_systems( + Update, + render_map.run_if(in_state(crate::CurrentScene::Game)), + ); + } +} + +/// Sets up the camera. +fn setup_camera(mut commands: Commands) { + commands.spawn(Camera2dBundle::default()); +} + +impl Tile { + /// Returns the texture handle of the tile. + pub fn get_texture(&self, asset_server: &AssetServer) -> Handle { + match self { + Tile::Grass => asset_server.load("tiles/grass.png"), + Tile::Forest => asset_server.load("tiles/forest.png"), + Tile::Hill => asset_server.load("tiles/hill.png"), + } + } +} + +/// Renders the map. +fn render_map( + query: Query<(Entity, &TilePosition, &Tile), Changed>, + mut commands: Commands, + asset_server: Res, +) { + for (entity, position, tile) in query.iter() { + let pixel_position_ratio = position.to_pixel_coordinates(); + let pixel_position = (50. * pixel_position_ratio.x, pixel_position_ratio.y * 30.); + + commands.entity(entity).insert(SpriteBundle { + transform: Transform::from_translation(Vec3 { + x: pixel_position.0, + y: pixel_position.1, + z: 0., + }), + texture: tile.get_texture(&*asset_server), + ..default() + }); + } +}