From ccdacbfa459bc8d4d36cae3f035d750043a9141d Mon Sep 17 00:00:00 2001 From: crumblingstatue Date: Mon, 3 Apr 2023 21:44:08 +0200 Subject: [PATCH] Add background and foreground tile layers --- res/tiles.png | Bin 4700 -> 4942 bytes src/app.rs | 12 +++++++----- src/game.rs | 17 ++++++++++++----- src/world.rs | 23 ++++++++++++++++++----- 4 files changed, 37 insertions(+), 15 deletions(-) diff --git a/res/tiles.png b/res/tiles.png index c3223e8fe7224ec368d643b8a822d667bf4a506d..8a2ac71c512e2694f9bdd69af454594af530dc86 100644 GIT binary patch delta 992 zcmcbka!zf6a=oyqr;B4q#hf>HZG)t}Mc6J(JKd=1G(8|mqu|WxtzFxBr#UFWPzs_&hKl{o3p4a&mdxG@pzP^jS^#6bR`}>ps{bgXNKTxp8Z!hB|>)OwD zCwHBe|L%E>m4QKGQTR%81_lO(E&hxkifus<DJ7%3dbTwyMmGsFF&M)cL%MGX1R6S&7U~uqV%FVEo^_P`g zUVd=CVyD&epXt}jOLsHWcO9x*?%MD)>*~`Y1_p+;w=@|t?xtT(vg1v^UcS}uYqkhu z->WJAzdTX-D#pOTu;`{HgT>4Gn-~24UoZaSd;6z!2~$h=M~j%Ahh zEPF%w>?dTQ83$w; zu839pJlKA5-g(97<^S~rSQr>?h%IGUu(p0j-_NG~Qpzk03=B6x-g(~tJj={`Z>yh- zr(nWr?*!#P;V+dK7#L1m^J9Eae<5=p(?R{z!?ovJ8=f!x@6p8&>dwx53LnaG;frj~S r4=RGPM8ksr>+dG8PkzXxBi5jLft~;KouAU{KzYT})z4*}Q$iB}6B4|A delta 762 zcmX@7c1LA`a=nnUr;B4q#hf>H4fAe02(SiN6$mP%GOQF*SQ=I}SLyl%!H^#;d))FK zTJ@e1S@o7-<)V8HyO$VnTv(VoQRJxN^!HbrcD((+dvo>XyLtc98td-ecdxTM{r;WP z{{KI3_g{ElKewL$Z{4(1^NZXJ3=A`xZogm^cz^l0zT*AbsydFJ^?D2p2SjQ+;ushh z7z%2+K-7!|H`W75`}Um5_dNY^!^ysO-!DcC3=A48V;OXwoqqFue*D(|J5J^wPni1r zrq=nz(*>7#E||aedw2{d0|P_u6+MO^?k~AE@5(NEb6iX_uitjhnw5cp!9Zau(}9b% zr~2A`&7$8&zkQ|6$iTo*-?li2;l|7Q+gHl|cU%7R?*9xHZab*W5F*mJcXec)Dgy(9 z!=8KG49aYeFMM^a^I~9NXo%P=&fvz=w%+eY{^u+6uY*i_R1(B+(w^>aZdVE>Omep9InZ5?(H*e zj<_ql-!-Q*{BH-_dZ55mjxnR^j{Va^4`O!I-+5aV<+;C0oZ(bC!wwMv28M(idF%f+ zhP-FjI8+7Z=%Bc*l2kKulIV=X7dexJ0!wmh&yuY3=5&Pg@ssCeor6dCbL&A(b zOb)q+Y#A61RFu{SF-)*~D9^xtwr1#IUb2+qO|C!l6mAxfZ3=PetOu&q*{7H=KQ8g)RQSQnz`*03 z%JN{!(VCl8HU}aOR&ah~U|`5xQOo4e!43+ Self { let mut rng = thread_rng(); - let mut tiles = [Tile { id: 0 }; CHUNK_N_TILES]; + let mut tiles = [Tile { + bg: 0, + mid: 0, + fg: 0, + }; CHUNK_N_TILES]; if pos.y > 38 { for b in &mut tiles { - b.id = rng.gen_range(1..5); + b.bg = 7; + b.mid = rng.gen_range(1..5); + if rng.gen_bool(0.1) { + b.fg = 6; + } } } // Unbreakable layer at bottom if pos.y > 510 { for b in &mut tiles { - b.id = Tile::UNBREAKANIUM; + b.mid = Tile::UNBREAKANIUM; } } Self { tiles } @@ -133,10 +141,15 @@ type TileId = u16; #[derive(Clone, Copy)] pub struct Tile { - pub id: TileId, + /// Background wall behind entities + pub bg: TileId, + /// The solid wall on the same level as entities + pub mid: TileId, + /// A layer on top of the mid wall. Usually ores or decorative pieces. + pub fg: TileId, } impl Tile { - pub const AIR: TileId = 0; + pub const EMPTY: TileId = 0; pub const UNBREAKANIUM: TileId = 5; }