From b16ca3fd65f59ad89f1b58462a8a36956e0f8152 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Wed, 9 Jul 2025 14:36:31 -0400 Subject: [PATCH] I now have hacked in basic color for the wall tiles but not enemies and items. --- assets/map_tiles.png | Bin 5769 -> 6289 bytes assets/tiles.json | 16 ++++++++++++++++ tests/map.cpp | 2 +- tools/icongen.cpp | 15 +++++++++++++-- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/assets/map_tiles.png b/assets/map_tiles.png index aec7e89eb2ac21f0ff3bb3000eb229777f0642d6..dcf893e3a4cfcd874e0b881e6d4dab023763f09d 100644 GIT binary patch literal 6289 zcmd5>c|276`#&?r82dzJjBSLZgfiJRQ_9eSsBTHN#8?|ko5YO0>|Jdt#vNJiO;nT? zB7|GYAPHqjmSk-#!!X}-265}&zkk18ug>e7GoN$L=Xsv@^M2mXEOD&27jcsN6P*2lEy1*6<0eTJOii=J>;SAX=?FeE zb$Fq_f;EvD}eG#xFTR#0y0| zHRJ4G7MGxKLRr=*di>J_*QHH2?v=XTgu+?&SoKHCv>~zmeH1Nie?7BZ2DsLc4)%Ax z_#=-Dy8I>6^V7%g_A-$j`kZhykM24*(T%XB;1cpBp z(%qd~Hy-hFa&>$cnyYV59MZuS*&lvoaGDwJF=K4P}cA* zUMvAb#00>9i3yt2G#;8(SsBYvqB0J9FF9!8tXc$C=c^H}liemR{yZVrVT5?XL%LYV z2Vax0EPvUbBfCz-5{sd*d> zxrC+QypAEhi)*Q2^qAZ*=xOMSo1s}O&0JjK24fQoG0o<)t+uAl)>x4FO6u+l|$rGOHyBQ2*Eo{-=AAtnv?+kl(X1B}dInKf#G@>2ZxmJ=S%l1 zolIya#2+l?lYuK4b8R-vR{izoOU?X8Re^a%pKt0bJLph@O_1uB6OT2K<;&&Zcxl*8 zLtURTBGO>fgs$!hZ~A4Ks7u`6@=6R-2-&i5Mt?|OH<#uG#JfK0l!lwAae1E;CV{EA zyVFS${ycd0iFu@(>01+-+GQ!EqyZH_#)aVK@X`lvZ`V|hyyh~M7o*FIkkUrp68FUj zpu(wl((fpmT{xC{OkU&mYp>T{83>m)P7%8zyPe?9RZe_T)vJ(Jb^B9pTdu6KYPw?j zwu{$A81uEi0?akAf{ZTY96&>(lO>b+)b5$(o6!$CuJCM%5S7xQeyey7G>+Ac0Xh5p zt^9E>&ueLul;(HPJ^zOBpRyJ$LYw{cY381qEoGny9+i7UE_+pY(d!q-L#irch60=i~5U8)1~2KU9m3| zwNmDy+~ySa&VUtY4@%@c$I|1Qq1i5H?`|5FDv(AXnB_KxzfupHNXT@l2h$rt3C~JN zP$1N^s#AyCpDQTTUi%5&apTR{`rUhV7SlMfQ)%}49>fw8BHDhdb_75 z{yI&YFGrf*KhW?#>~#Z3zBm`37@rso^HT$HYv<;384KUT*!QcT0(X3WJ7f#K@+TiB z%E5IcBy<>Mx~%OyG2!tOM^%f_R-PPRiIx|AkXrKZ>Sz2>AoE`06BcH1hgy|iBkoeF|BTAL$ z8Mn*Hs6;G0MnZ~qx~!aRH|=Cd(bjSCqMu%8bIzuQyk2@frD0a6SRc6bUV)z?0A9YB z-~E4Rs+A*4n(7Bz!myF0zvnrmi97`4!CLi0PAn)@Sg2yDo}1WbvR0B5{2?gx;=u}T z^Oi0|o0%MzK@ZTmP=${x`SHGau1QybxCYdoTn_tt7uj?1iFOt78tWyzMp z%!=tR)50<`_+Ed7=mBHFf8U^IkZjugLS6;i(hR(1d?zu*-F9+$c zfNf}PLJW=B4KL<6I=RShI{D6Ql1qM*<$#K{=hsbXSte%}dMHr*Lp=Jg+J(kcb2QkY zH=QC@$3l)3Xp*bBP)l;n#^PDvNoT!WLD`K57TyT_hN918n1ziT(Gnj#pO&7}uQ_)yQ_}K_vUEvUiYl|C~bY7f6@lwGbvi zL90|jC*O^R{=$1-8iw1`kVooniHjH|Y`q9;x#I`P{feT?Vb`zowcec!l~fg4YyWt& zFaE(o7X=h=2aX&@+&}lG_J+TNn7nNM(bA$ee!qqnt&gPQGtnR^LuzGLwHT~!pJwx^ znffjaJzajU)Tff-j-r!)DQ%id?CnenL9f_kAY_!H%VQ{{H%j*GXje5+r(kt+t0rcz zd@|&}M5G$3m2FndAkdW@>&|ITbxXB9Da4J|rB^U3=DQ}aKQu;|zUQQ;@)_1Q8O0~d z#(IWJ^l&5nd$FjECvh)hUxH^fq76(W?v}OESl`>=6T`E8y}+7Rk{4Ob^^^sFMS7rO z@3JLzh#K5&qk8pXGxD{?VM++o1e)~T3;)Vc5CMbX1+FWi?_^_Q2Lm6)$4D94gS{L4 zL$f#`B$$q;Z#%_b{Yn6L+5FZ(F-n&o*r-Wt=^y`MYm}^de4ZS~#`eqxyTttN3TwDf5213NG zFkPtD?T?nJGrk-?RI>BLI@zE(4(|TDW~_wPS^0wp<Q|)&PyB3K+=c6Sb z5H%G@^(l{%hPX^SgEPD?p8QqzU!@v|I^|z$n36gI>_T$Toqe7Uzp1DUik~^hXqyHM zWTmejfckK1W|GrbUlfoaf5*sHW2u4VfzV1D+IPS%OS1*E6!e2KgEUj!#dD8NZhJ=bgt$w$w5*t(7TTOa&a=Sz~ppg zo|5Ya_qy2ZdMHv$K8Xj2$={y55%yYkeM7a<&wYRMIt+-=qkE2s(Vn=r}*!LN+ zr^jp3Lb!7x4~hJbgG340^v&6y|)@ zhn{dHPJ@l9{m9FZ0u+t8g1A0>eIG`u^74jNPNq(V0*MlyUOFcpmYt4$O*|e~I60ih z?-VdYvP}pnApb+$r-Qm4qA0^3VuN@P<=6^DmDr01*!P5KI>=i|RM4N+Cy`9IX=_y9 z8lqh+Ng4|A>b(29D$7er!zXO7*n2+_KUUr5Hv@68U)8px)m0ml>Cx8bi0sg^YE+($ z%-dU@6}O>y*^Vq}r#f}Sn#tjWj7G{X-6RngRy>{?h7BpYlGxz^Tw+9B@ojN*X(Z;b zr?B?82ixLwcMZa>!+a23zTcqQKv{?)%pj6lSX6ZK;*&t3`f>e2KRY{h z{t=}b!kw8sM~B<&CKCT5lCm7>O8$@`bdmiauBm{ZKwlf7&NM#>y#d0A{t0pvuZ0rI z3`Bhko(`BK=Zg)ZF~)%|cz#Jqc%Lec%Az(6#DRkn(OIS+Lj6 z7!H*iER1(eWui+(Xh~bg^bN)gIsQA#ANz}jzhNt_6vE9Wr)+aKO8}+XZVJ?$OMN4E zEvUx@eI^ZO*pxEVPXFhZ7RO4U;DQN5Gc#W?S649?0VB@Xmrk<_mmmteqf1fLf*gK+ ziRk%O!#CW#d63@jW^k#A83&G6T#G?LmuSgXt=jINpHH!BFd+qzo4iUj% z{2 zt9PV<&IO*C7oS6lfCpy_q>jF;rXz8;T|rqv`u<`0zG5SRCUj|`Qmd_9n*lUxrH6X6 zUatDvBz3K5Y1tEZCwzzvSVN`{P$0yy-FZ>yjwFI9uq!mh_60ElAWL?Ury1&qbv}Tz zXGDYZ-+l#!gsDr@X3vFuSnHoLyQEgboBz%N$0ghv!StkqO@osYp9q)U!eqe`wQ(mB z?0>VU?&t~n3af5^m|CH8z>bpz(Lc#&x+|oK+!Ip|UAuP3RM$J!wecUOiqgtJQt1Up zShYXh2QPmbuTYVS`8;65cIzS5Obo_!IJ)*=a-6o*&k|BdzY4uyk@sVY{(rqVJQ4u9 Yz3imRva-a$KQ#d6J1utH-R>CrKaSC2WdHyG literal 5769 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 diff --git a/assets/tiles.json b/assets/tiles.json index 0728c7c..05fda6d 100644 --- a/assets/tiles.json +++ b/assets/tiles.json @@ -5,6 +5,8 @@ "display": 10398, "ceiling": "ceiling_black", "light": 0, + "foreground": [40, 40, 40], + "background": [10, 10, 10], "id": 0 }, "wall_plain": { @@ -12,6 +14,8 @@ "collision": true, "display": 9608, "light": 0, + "foreground": [100, 100, 100], + "background": [10, 10, 10], "id": 1 }, "wall_moss": { @@ -19,6 +23,8 @@ "collision": true, "display": 8820, "light": 20, + "foreground": [150, 255, 150], + "background": [10, 10, 10], "id": 2 }, "ceiling_black": { @@ -26,6 +32,8 @@ "collision": false, "display": 35, "light": 0, + "foreground": [150, 150, 150], + "background": [10, 10, 10], "id": 4 }, "lava_floor": { @@ -34,6 +42,8 @@ "display": 35, "ceiling": "ceiling_black", "light": 20, + "foreground": [255, 0, 0], + "background": [10, 10, 10], "id": 5 }, "gray_stone_floor_light": { @@ -42,6 +52,8 @@ "display": 35, "ceiling": "ceiling_blue_light", "light": 40, + "foreground": [150, 150, 150], + "background": [10, 10, 10], "id": 6 }, "ceiling_blue_light": { @@ -49,6 +61,8 @@ "collision": false, "display": 35, "light": 0, + "foreground": [150, 150, 150], + "background": [10, 10, 10], "id": 7 }, "wood_wall": { @@ -56,6 +70,8 @@ "collision": false, "display": 35, "light": 0, + "foreground": [250, 250, 150], + "background": [10, 10, 10], "id": 8 } } diff --git a/tests/map.cpp b/tests/map.cpp index 5ebb1e2..750f7d0 100644 --- a/tests/map.cpp +++ b/tests/map.cpp @@ -121,7 +121,7 @@ TEST_CASE("map image test", "[map-sprite]") { auto coords = sprite_coord.at(display); sf::IntRect square{coords, {size.x, size.y}}; sf::Sprite sprite{map_sprites, square}; - sprite.setColor({150,150,150,255}); + // sprite.setColor({150,150,150,255}); sprite.setPosition({float(it.x * size.x), float(it.y * size.y)}); render.draw(sprite); } diff --git a/tools/icongen.cpp b/tools/icongen.cpp index a06bb7a..1bc62cc 100644 --- a/tools/icongen.cpp +++ b/tools/icongen.cpp @@ -25,6 +25,7 @@ using BoolGrid = Base; struct MapConfig { MapGrid map = make(TILE_COUNT, TILE_COUNT); BoolGrid centered = make(TILE_COUNT, TILE_COUNT); + std::unordered_map colors; each_row_t it{map}; }; @@ -124,7 +125,7 @@ struct MapTileBuilder { sprite.setPosition(cell_pos); } - sprite.setColor(DEFAULT_COLOR); + sprite.setColor(config.colors[display_char]); $render->draw(sprite); } @@ -160,8 +161,18 @@ void load_config(MapConfig& config, bool is_centered, std::string path, std::fun for(auto [key, val] : tiles.json().items()) { config.it.next(); - config.map[config.it.y][config.it.x] = finder(val); + auto display = finder(val); + config.map[config.it.y][config.it.x] = display; config.centered[config.it.y][config.it.x] = is_centered; + + if(val.contains("foreground")) { + auto fg_color = val["foreground"]; + sf::Color fg{fg_color[0], fg_color[1], fg_color[2]}; + config.colors.insert_or_assign(display, fg); + } else { + sf::Color fg{255, 100, 100}; + config.colors.insert_or_assign(display, fg); + } } }