From fccca6449351097644a7fc548dafee5d9117f057 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Thu, 7 Sep 2023 04:41:23 -0500 Subject: [PATCH] Fix sprites being indexed funky. Consolidated tile group code, broke some of the overlapping tiles functionality. --- Crawler/Crawler.cpp | 62 ++++++++++++----------- Crawler/Crawler.h | 10 +++- Crawler/Map.h | 1 + Crawler/Version.h | 2 +- Crawler/assets/monsters/Blue Slime.png | Bin 4810 -> 6134 bytes Crawler/assets/monsters/Green Slime.png | Bin 4814 -> 6263 bytes Crawler/assets/monsters/Red Slime.png | Bin 6416 -> 6417 bytes Crawler/assets/monsters/Yellow Slime.png | Bin 6410 -> 6412 bytes 8 files changed, 44 insertions(+), 31 deletions(-) diff --git a/Crawler/Crawler.cpp b/Crawler/Crawler.cpp index a319c387..5f3719f2 100644 --- a/Crawler/Crawler.cpp +++ b/Crawler/Crawler.cpp @@ -921,41 +921,45 @@ void Crawler::LoadLevel(MapName map){ int tileSheetY=tileSheetIndex/tileSheetWidth; #pragma region TileGroupShenanigans auto SetupTileGroups=[&](std::functionIsForeground,TileRenderData tile,std::set&foregroundTilesIncluded,std::vector&groups){ - if(IsForeground(tileSheet,tileSheetIndex)&&foregroundTilesIncluded.find({x,y})==foregroundTilesIncluded.end()){ - std::queuetileGroupChecks; - TileGroup group; - foregroundTilesIncluded.insert({x,y}); - group.InsertTile(tile); - if(x>0)tileGroupChecks.push({x-1,y}); - if(x0)tileGroupChecks.push({x,y-1}); - if(ySprite()->width/24; - int tileSheetHeight=tileSheet.tileset.tileset->Sprite()->height/24; - int tileSheetIndex=tileID-(tileSheet.firstgid-1); - int tileSheetX=tileSheetIndex%tileSheetWidth; - int tileSheetY=tileSheetIndex/tileSheetWidth; - TileRenderData tile={tileSheet.tileset.tileset->Decal(),pos*24,vi2d{tileSheetX,tileSheetY}*24}; - if(IsForegroundTile(tileSheet,tileSheetIndex)&&foregroundTilesIncluded.find(pos)==foregroundTilesIncluded.end()){ - foregroundTilesIncluded.insert(pos); - group.InsertTile(tile); - if(pos.x>0)tileGroupChecks.push(pos+vi2d{-1,0}); - if(pos.x0)tileGroupChecks.push(pos+vi2d{0,-1}); - if(pos.ytileGroupChecks; + TileGroup group; + foregroundTilesIncluded.insert({x,y}); + group.originatingLayer=layerID; + group.InsertTile(tile); + if(x>0)tileGroupChecks.push({x-1,y}); + if(x0)tileGroupChecks.push({x,y-1}); + if(ySprite()->width/24; + int tileSheetHeight=tileSheet.tileset.tileset->Sprite()->height/24; + int tileSheetIndex=tileID-(tileSheet.firstgid-1); + int tileSheetX=tileSheetIndex%tileSheetWidth; + int tileSheetY=tileSheetIndex/tileSheetWidth; + TileRenderData tile={tileSheet.tileset.tileset->Decal(),pos*24,vi2d{tileSheetX,tileSheetY}*24}; + if(IsForeground(tileSheet,tileSheetIndex)&&foregroundTilesIncluded.find(pos)==foregroundTilesIncluded.end()){ + foregroundTilesIncluded.insert(pos); + group.InsertTile(tile); + if(pos.x>0)tileGroupChecks.push(pos+vi2d{-1,0}); + if(pos.x0)tileGroupChecks.push(pos+vi2d{0,-1}); + if(pos.yDecal(),vi2d{x,y}*24,vi2d{tileSheetX,tileSheetY}*24}; SetupTileGroups([&](TilesheetData sheet,int tileID){return IsForegroundTile(sheet,tileID);},tile,foregroundTilesAdded,foregroundTileGroups); - SetupTileGroups([&](TilesheetData sheet,int tileID){return IsUpperForegroundTile(sheet,tileID);},tile,foregroundTilesAdded,foregroundTileGroups); + SetupTileGroups([&](TilesheetData sheet,int tileID){return IsUpperForegroundTile(sheet,tileID);},tile,upperForegroundTilesAdded,upperForegroundTileGroups); #pragma endregion } } diff --git a/Crawler/Crawler.h b/Crawler/Crawler.h index 63a6745c..dd992cc1 100644 --- a/Crawler/Crawler.h +++ b/Crawler/Crawler.h @@ -109,4 +109,12 @@ public: datafiledoubledata GetDoubleList(std::string key); static void OutputDebugInfo(const char*key,std::size_t len); void InitializeLevels(); -}; + + struct TileGroupData{ + vi2d tilePos; + int layer; + bool operator<(const TileGroupData&rhs)const{ + return layerD^cd! za+_n0`w_X6A>^*jmW^f7X4|WOPUn4|Kc4UNdw##?`Fx)5?|I%FSh4-XV2h@Pii*lU zh_Zj(2-6N2Q#{IA_iCqB(cTvss6UW!IkG3&BKB;z^_fEM5+&S|q{px1MX+qo7c{5n| zjYEm|B`fKKBG>N7LNIj6=7Oe|3-zQ!)`=G3M<0~wJ=4pTXRa6@p0YAgO>~N7^phXv zG3yA+0L7P*%X6Mz^P1_FYB?O+HPfffjG`|%FO zYy<>q>a}Y9G`!BG2KLl(7Zv4q&2K28(QrB@fK9v9<0mHmrX}f^QvkoZy8Lu5a%3U5 z^7_ch9e1`FxmzssT%Rj&`;TL9h+K0%a>F+F*2RqjQK~hDj_(TIlJNZw2X@vhIz^_P zM^$h&_1MHaoi6v3JL|cRKW02fo30oAA;!EadFpw&qWIQl(e)2Z$L&OU(5}IeIsw<2 z%`K+XQIb}#`IV)*0TQDYBL%^`GDnIE@?@(|o+;*>ryI>EgUU>w#I1B=qvOiu_OFkZ z$sr6yt@r)Af4}&gboXy;^@F00(S|JDaVe+gC*|vQeYxJI5>Jey#cWlyUy?f@QJXu* zN{eZXtBLjHT5!wC<)Tv29^?%6-~=UFcY9h6MfT*BayLV9G^gFKE8v@AhGtE$x(DR` zy7caRu3$QJAEI={woX9(O-@XXSPPt_Hc@P(r8d~)H|(*o`rP_@wikK9LZI@-7x{Im zv}|{eYolE}>E&6x-9=XiCHz}!gG8UnVHJC3nVCKqJ0_IYrP@j_#%?Q-RZu&-+QTS2 zl}?I|S<_@{Y;Jf-@{NJsnCO0D+Fu+7-mb*v8JS0Xe~FN4V5D>psj;x;;u7{1bSFZt!rfPNGN$&7ql@lxf2 z*>%!x3!V8(l*0Y-MYd%UF+?x_U{6Zr?3TJZQRh&9uLP2N@RELnhx@^ND?Z<}8iX4U;M)GgaE23)Q{NLf!oAK=;%d@Z&5oX&EyAXUnWyG4p=p z;pu}Kd2Z4Gge{!lcdEA{tTKH*e|54BKc(D}(iBYjW?eq_g%uYRe_{{!>;;o{XEVs6 zNpzU8nXSMOd=w4ioLdM9k3#xsJ9mj%dnkETV(lj$AC$l7SZ{X8&8zBJ%x)coM2E^& z3xh2}rj@T2#E`L>81kBF+g@O2_A+TxKw4|DVBW%@rE9AH6cYND`Lwgzi#B|VydySi zV3o3T)1~shGATq&hy7;XSVE$#AYC;Um^Z|(ozfjZp?e)ZNdwYUNGoMQCkgmyucACw z#h@*y4brojqT)^tU>dR2UO)Z_!eP_>G7JHnZ9C@r9bXu(SCI|$h>6cBf zl%@FWEJ{EXCZP0~9O<*pjO@#pU3T*H0~G9w1<$?J$>pB$wKhVZwZvrpvBj?}lO7uS)d;PlH<=b#pUtdld$$T2(1hIp zkL-(YqNrPaeaAvwe$+}2NvDo>dsx%!R}xozOzF0zYD$Cd$$>F;&>J1;sUrT6{AyOJ zbYYjW!MC-A58bollPaH%4oC{d7}A(*vt!zfFXh2FefhBBHJ|5AN~v^K4u6ieUYa;G zw~;r^F|Xry{4Q$fLC=09p`4zh+<7>W5=Ti{=boHek?@+vc8YZk9~7Y)9cw*Ht{!iY z6eVC=!r`AF8MmpiFc5A$pkoYaH}MJgyD~wB5_FPRQB+T0Au(*}XIa}>B%zp4YRtdD zX8^+jH*o194sv|yQSk(Sjvy*GyYOf|on)_nNH1cHFi8qJ6`I84cu`hL(Q zH;%N+-WtjHXd_2eR-fqU5vW}LP=ebuImd~yoFSi<0wjq-6p|AWk)yzh#q`zL0?|h# zPu8w%il+A;HS@+zY01409p0=leo3gC?m6Kjpyc=ZqVE}| zsYPC^bYE0vuf5FWSU<1|kWc*y9U@9~nyu+IJ(f?}r;7@ZmaX%=S%@q=v`1ro*dhedvu+X_4exYWSP+W2&#-p}W2MpFZn2 zE5Q++wUd5Xy(MhVWvI)y{|8itvr7N~ delta 1087 zcmV-F1i<_DFUlp57!3pi0002d9pd5u008WfB_Drnj>I4c{qHH}2nZD9ICk15dxJgx zP=)Dql1=s{^6^x7V%dLxj`BEx4GS;Y#6-Zs#)jR41{3SB6?oWzBep!h@kMe2og()% zQ^VkQ=RK~GTQsS8J_}_~yGP5l(R=XgonNCMw(mlrfa>fFTU>}jgrSIM{tQK8O>a-z zo^V!2yB3q8EK-%-GJ>j@#|?qi=eeCiNk@Aq*(r(4^C-F|+^G_{CE}@)&PCMS+ptnF zDRzHSItCB^l`g>xTl`js_b@+abIs@v{O4Ka1(|$xw)pR;akCo%+XEysIW=ZCW;A6j zWMwckEi^DRWi2>lVlXW*WI1CvGi72qV>vaG8U-IDG&C?|F*i73EjVOjWGyr{W-=`~ zF*Rc?H#9UkGB`CdI51&mlU)TTBsgPcIW{+CH7#OcGiEI`W@Ke8IW;*nEoCw>Ff}kV zHDzQrVUwr@U<)=eH!?UjF)}taFq0DoaSAq6GBY|fGCD9fla2-?3N}Wi2#hGBzzZV`eigG%#afWHM!BF*7zalWGS|3N}QN3MF0Q*4+jTm*Y8oF?m2MI|L^E~uQq)E0004WQchC< zK<3zH00001VoOIv0Eh)0NRvMhAqNC12r=t7l#^!=Cw~G0NklL{(Gq1N-`~-ma9wM*mt5qtMO7(FQp3uFuT1r{%J1VDQtp;1l zlk3s1C48s=cF4VXbxZV1_#DNqcusd-J%K?-cI?XR%g3AYYAFU5(_2qPPacls)o6PI zO@C$PsTvjc=heWQz-Q#unFoFqH|5o5vr45>sZ^@}pr$<=_Kb&*hCLf@JYm8udp5Qu z@jT2gshjNs;l!qaFUF*p+1RcCwq>(O#uqF+&&gv$6Y=d>|7soZ$-!eo%g)2&l}ePC zre)8@0y%aA55U&u;rr0(tGSE+2zVGwApU?Ms-tW_Aybj3(DeqF)wr$&f zOWEMoBFHi}-ENxYx{q3?X^{}HurT)V><`T`Zz^=#bR%zzURA+VK=%Uf@38`O#3z;P z{~D4VEIkA-8v6+59=-U2Nu;FR^6da7?C37H42v}QPBF<)cg6C14Q32!^lL@iyNlJJ z`;|ENhp>E&B>(&oNdMCJrW~GoLD2!|RDRDuR~ydYVe;;rDDy0E;<)wsV}^GO1E2x9 zV*nSC(@DF)41VaE-puSJhPEV77V8mMV!8jxW1w%q{ zco+do^Vw-)gd$*quy9KV7>0ucZAIL=jfM~)U?d)o#zHU{C<=q1J=z%nM4{1^Ft{ZQ ziiFYjC`5jTItzhY!BAFEDDAF-(Z5ZWLdt$LArKdY#zVmHQn zu2}|G9=rCu_U(Dyo`Q4m4M6E7`g!FQ9PWG+z&#mb~Mi@4;`ItEYS5)S|?`D(f zU7nm{RX;3l{YOJXF8x&NX#pNh&W zmwA)#Vl~6{$4jQ7m4&qQis9f^r;a!AGsx#CAKC9Cf-~V2C08qQ3c>QT(Th=~<-0xj z%AjX5@WK6*HJ92W)ig@!1Fv#ohMPJ25SjjU)Gc>=ql!3M-=8{t`J~uP{o0sb@->vp zW?Iayr^4|{DuE-=3>)$8Se{CirWiLe+8V-xYel_DvSzmEy*PGsM$Xk;!pg7^Uku0M z$H6|)20S%)YEevx&VQLJQ~8_Xf57E|KW$FQePQ>9uGo08&45Oi6}uNno(ZG#qEW`h z#Kl*ESzS<|YG!9n5!E2bByW`QxOpLUGtOM}iC5cxUDW^im#X$1xct{rwClcKF^Z12 z^4Kk$-u}96%8@Z|oGw(BT*Ym1IWwE_q92}`+?d_q>{1Pgh4^5`n&MLXRMSgxrdwD? zyfqo=NqsAi;_0?eb4zRd*1X@J-m%7bN23g7MUwW7cc;N^sZ=FaIRErO^!I<5=wdq1 zi1`xU8pWXXkj=~G^ETSg0B(n$jX_UV^=F?cnPquSwOg2V)#=l;uW7McLNDmmFbhI! z9^FB>+(~lrEX$;B=MsaG`%; ziu{2OR{p-VR3p#vdi6tzFN2)PTzG%VVcz+1Y}cq>Sb;oGGbz(BOG~zzZ=`Y^g$bNLC<-IS%~MPxqRl)1h!KLPNC9a$GyOw``pBd&iaAAdic8sxY9LR`rXfw z)plM+k;TEy4x6~J7md2>tm9L*wViJ_syl_uaXEeyHO`Gp9tSoT8w=mgVyqM8A76Bu zA%59hz8r9CTDzpRyKU)@$@6|GI)`H6i$liY57Gt7N} zvwSm1u!4oue*RUsOeo$3rM|8=dMl!kw0-+05lZwb-UlN+2wN;)f41}f-ueY<1N;>asMX9x%L#F4TzqQz3;2cg?@ z;vF_G)id!4|04=p6-)hAwNKPV#l|CvUW{Bu_&A$%-Pz0Tu03z0kp5%tt0YEZt+z?J zjT)$IplB>Fe+qA$gI8;tiGz+2OrPF1=V@7S)D+1F_li6q@x!xGWc3@%5f)63uNVj6 zs+14Y7xIwO4CJ15KaDy$cp{}3%t*jH7YWA!9CAFSmb%za`jMh8sgqO-)=D`xP=*Zo zyhQ7c=_}db5feMkydvX2tltJrqTihh^MgrOR|O&55{<&;y7NLQGipV8V`4kktyU`Txhyu?QlKl6!)+jLJH1Cjo96lcCgQhR zG`^-<%yxj-11y*9l3w<(C%em={kvy+Y7L+0t3_8M=CJ#E2<*4R6TiOkGLgJr(XQ#> zcs7?@{cJ7>QImtez?LPLD6rPe2$0}yRL^9}h0|^CRV8ri{-E^M8>d$?SG+wW zG(QtNZSm6;UEzr@pwqUC#6|h!>37dnrl>v$Nsi*)jk!$nKu5tzx=@=Rw>Ue|)nm;e2-aMR230M!Sy)3=76DKzaCvlh+9 z?HVj^lc!xkyjPPO6@pNo#kM%9pj5n^&5x?h ziY^H7_Q{X0`VjJFf+~ZPWRl^!EljX|)WBqxf8cTlznN@y`izWF%A`KyaPz;DT$g;v zm>+r*UMk3VYP(ETmLdEd_Kuq3m(*A#SB)e~K>Cp`4trpJE%p=Ql!Uj&=1|3k^%eSZ zL|{Pmd@=fAH#}TrOW!|lPQsna7WP!U?bk1NzT{!L8}JF}7rfg`tK$%R`rE#v!x?+Vv4C5D0U(mSt^fc4 delta 1051 zcmV+$1myeoFwP~A7!3pi0002d9pd5u008WfB`N`mkx(FiN;Nkln7TSQIF*L29W!ai zZbuv;zVXTC0fQ3kGD7Fzcku9Y#2!uZ%%6p(lN-F{I%qBU_0F$Rkn4A$P#}49rY$Z+ zA>mM@BYuV=^IC3C+n#i{dM%a0wpcC-RHjnQ;a4UtnCEs1mD1Z&nw=&wQN3MF3zE4+jTU--);PxE`N?|L^F* zs}ITm0004WQchCX zLM*efZLYQLVZ*M%wu9aCOfjG7RJISl2yEs@;09A-sV&VMT5M>A50HKEO|G?FLz4{! z_@H3!;P5o3>&<)d-^)gG_Tt7xNlSq`(ZOd>#P53bDq&OTflUR^lz_}9;xiidAAsCsoe{`Q)m0C_U%)f$aPqxmxl z&v=4?PvRf5@#oE#ia~UHHJg@a0n>!)18jl)XuZ0p^c#TF3X8`K*Q?WG3rlR-4{=w$ zdajg#17|lbSyb18hkxtUsJ$`Fz$}s#^70MKZf{Czm&u|Cy_mw|(}WClf6Wbr>Yws;}?+V$rLu9=k?N zzcu02t2+-uq_&lvSt7ezwy@>LvE@em5>pbU3tF-7Z*HHj{4HZr`ad0$xpyAuUU$qs zxW2ruw<%^ncPrD$#m2dXid>xSO0pk~MMT$^Rp0uyWcStVl@imJrUWlA@|h{x9zXMn z!TGl$TGws|&zh@d_;}{23rBXRC@$#Wn_8qdvF)yPl#^1YQo_c*Y4z#x=Dtnrn;$? z=4OdTmZrwW#+H*a*nJWD3^(s*&)^VS_4nm{1_lPUByV>YhW{YAVDIwDlWheQ**T>} O=VY8;vpH2@H3tB$fwUw5 delta 484 zcmbPeG{IvRyKCdTmu}FV)_q7j*jw}2fvKL{ z&vwprTKeVNl(glZXDXH%nS9iXzksGm1AZiZ~><`Z9pMK?<^-ey)dPcbq}G*3;^H8oDL&^1X*O4UtDG&0mp zNi#4oG&V~%HZhzm!K$EQnQU%pWRPg6Yie$6tZQPDoT3ZVX0B^wVVr1bYHW~fU}`!! zhE-i9#n9Byz`#67*E~5fQP;#Q1*p*2Fi|(n(g0|facYXWk=f+stO;CZhGv!~h89L9 zMw12Einz=|jEt>J46TffCik+bAai%Kb*Y#pr=?h$rzHd3WeK!C%`{Or$vnkU7igS? zxp7jeiMd7E#161O_F`aQU`z6LcVYO>u$>{uP5FKOWIF*xb{0*g OgSBfLH>U}#<^TYwNV2a0 diff --git a/Crawler/assets/monsters/Yellow Slime.png b/Crawler/assets/monsters/Yellow Slime.png index 59da851a58255ff15e02b9c94545dc3d733eeb4f..84162f994d40d052dc7f2b9361a9fa28dc9ad007 100644 GIT binary patch delta 485 zcmeA&>M@$2!uW2Ys#d*Lk<9Mg$>q)Ef97iCZJ)j8$wZ4o9R^9a>g)TySoCVE$F336 zZ%ugh>du1@scmIvmdNgwEo}L5Y`GD?#FT{Tf>!MNo7?9rf6JJZ{!hnb?wtp^*B!GD zt}n0aZHn2?-O6-wv2kvpA{S@7lI%xg5z+N!)wjMa*?l#8rNs25DZvYjd}oTb$IrZC zaQ>}`*0tNgv*xN9KAw5%!jau6iVHgUrWWZ#K!bmsC%*0qX$sjG&z{Dgu$uz}y@-o&0ZgUF@Qv(wt zQ*$GO$%1T!T;?GLCRRq~Rz{YSd)QQvxx3i9l}(I{EzHf#bj=b|&2>#u6Ag4NEKSUH zjngbs&6A9cEX^z|Cugwx!nGM2Y~IhF!6C-}`oR?j1_rhyZ+91l{~)+v@AAo$Z3PtB RIi=;ecZsQNP8C?n0RVn!uqprm delta 483 zcmeA%>N1+3!uV#Qs#bkhk<9Mg$>q)Ef97iCZJ)j8iLcV34uhmy_4R#UEDlbcthaR5 zY{3QV&hh#!ZQOd>=T`1}Z|MiiJ_~WGPm8CCjwrWMh*w3tcmVq%>U<%hV)Y3uChs-Bjb0or;1F|@eWk>}z`&N|?e44sK2tSjqta4s5j;