From d9f4edfa07f4a08ddc8fe1247e85ceb1a3fb3fce Mon Sep 17 00:00:00 2001 From: RepeatGitHub Date: Tue, 14 May 2024 16:57:07 -0400 Subject: [PATCH] THE PLACEABLE DECALS ARE REAL --- CREDITS.txt | 2 +- .../decals/vinki/graffiti/0_dream2_x.png | Bin 0 -> 96 bytes .../decals/vinki/graffiti/0_dream2_y.png | Bin 0 -> 160 bytes .../decals/vinki/graffiti/0_dream_x.png | Bin 0 -> 103 bytes .../decals/vinki/graffiti/0_dream_y.png | Bin 0 -> 231 bytes .../decals/vinki/graffiti/0_heart_x.png | Bin 0 -> 96 bytes .../decals/vinki/graffiti/0_heart_y.png | Bin 0 -> 238 bytes .../decals/vinki/graffiti/1_pico8_x.png | Bin 0 -> 102 bytes .../decals/vinki/graffiti/1_pico8_y.png | Bin 0 -> 290 bytes .../decals/vinki/graffiti/1_sicktricks_x.png | Bin 0 -> 96 bytes .../decals/vinki/graffiti/1_sicktricks_y.png | Bin 0 -> 275 bytes .../vinki/graffiti/{0_x.png => test_0_x.png} | Bin .../vinki/graffiti/{0_y.png => test_0_y.png} | Bin .../Gameplay/decals/vinki/painting_d.png | Bin 1175 -> 1466 bytes Source/GraffitiIndicator.cs | 23 ++++++----- Source/VinkiModModule.cs | 39 +++++++++++++----- 16 files changed, 42 insertions(+), 22 deletions(-) create mode 100644 Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_dream2_x.png create mode 100644 Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_dream2_y.png create mode 100644 Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_dream_x.png create mode 100644 Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_dream_y.png create mode 100644 Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_heart_x.png create mode 100644 Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_heart_y.png create mode 100644 Graphics/Atlases/Gameplay/decals/vinki/graffiti/1_pico8_x.png create mode 100644 Graphics/Atlases/Gameplay/decals/vinki/graffiti/1_pico8_y.png create mode 100644 Graphics/Atlases/Gameplay/decals/vinki/graffiti/1_sicktricks_x.png create mode 100644 Graphics/Atlases/Gameplay/decals/vinki/graffiti/1_sicktricks_y.png rename Graphics/Atlases/Gameplay/decals/vinki/graffiti/{0_x.png => test_0_x.png} (100%) rename Graphics/Atlases/Gameplay/decals/vinki/graffiti/{0_y.png => test_0_y.png} (100%) diff --git a/CREDITS.txt b/CREDITS.txt index 7b60183..c554b69 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -2,4 +2,4 @@ Me, for making the mod OlayColay, for creating Vinki AllInLuck and kuksa for Downpour of Slugcats and the updated version respectively, of which I used as a base BigKahuna and AAA1459 for Skin Mod Helper and Skin Mod Helper Plus respectively -Various members of the Celeste discord server for helping me out, including Snippy, bit8289, Viv, and ESPECIALLY Popax21, for actually getting the dynamic texture replacer working. \ No newline at end of file +Various members of the Celeste discord server for helping me out, including Snippy, bit8289, Viv, Brokemia, and ESPECIALLY Popax21, for actually getting the dynamic texture replacer working. \ No newline at end of file diff --git a/Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_dream2_x.png b/Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_dream2_x.png new file mode 100644 index 0000000000000000000000000000000000000000..474625d1e29c3a83f4e45062bf148a578fbd4311 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9FlS3sCCF7+t~P*BLz n#WBR9H#tFqb#a174--&~MSy{^-nXI;D9hmK>gTe~DWM4fZ)FrM literal 0 HcmV?d00001 diff --git a/Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_dream2_y.png b/Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_dream2_y.png new file mode 100644 index 0000000000000000000000000000000000000000..3f72ee0b17e3db7a2c5b64b61de3db59c2745b0c GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9FlS3sCCF7+t~P%y~T z#WBR9_iDc(AAT%rH~ literal 0 HcmV?d00001 diff --git a/Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_heart_x.png b/Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_heart_x.png new file mode 100644 index 0000000000000000000000000000000000000000..474625d1e29c3a83f4e45062bf148a578fbd4311 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9FlS3sCCF7+t~P*BLz n#WBR9H#tFqb#a174--&~MSy{^-nXI;D9hmK>gTe~DWM4fZ)FrM literal 0 HcmV?d00001 diff --git a/Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_heart_y.png b/Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_heart_y.png new file mode 100644 index 0000000000000000000000000000000000000000..9016a5a6e1d8c1b9a8f3020d49a7fed403b2eac2 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9FlS3sCCF7+t~P;h~# zi(`mIZ*qdfr-q3Ut;gE)|F&;De{0pjuNwtcTe<`aDHi;=RzE}0=Z1*#Z8qlYclPNK z#s4jtL10s&hMvPl&XZy#%@Y`77?${7|s9y literal 0 HcmV?d00001 diff --git a/Graphics/Atlases/Gameplay/decals/vinki/graffiti/1_pico8_y.png b/Graphics/Atlases/Gameplay/decals/vinki/graffiti/1_pico8_y.png new file mode 100644 index 0000000000000000000000000000000000000000..d22c3d3f20ca3eb0941160a200b56c4efece9cda GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9FlS3sCCF7+t~Q1FVU zi(`mKXL5oBYrqG2t`|vyM)M~|u`OhFb91|N_Fq5CiLEmhu(s$d?|k@!LHMQ_pIC$G zvU;5>2PI`>K8Bz0t31*6_{a~P<7@$s7?%A!?j+kL&s{pgTe~DWM4fZ)FrM literal 0 HcmV?d00001 diff --git a/Graphics/Atlases/Gameplay/decals/vinki/graffiti/1_sicktricks_y.png b/Graphics/Atlases/Gameplay/decals/vinki/graffiti/1_sicktricks_y.png new file mode 100644 index 0000000000000000000000000000000000000000..07d7712d52b834e41f0d2c1f7f32b69b39d439c1 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9FlS3sCCF7+t~Q1Gay zi(`mI@6`#4e1{waT;n;}JhePyW#?%pSUBi$RdFNmzvo~>9R%mJW-lY=gAqG!ZKbLh*2~7Zzm~I&W literal 0 HcmV?d00001 diff --git a/Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_x.png b/Graphics/Atlases/Gameplay/decals/vinki/graffiti/test_0_x.png similarity index 100% rename from Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_x.png rename to Graphics/Atlases/Gameplay/decals/vinki/graffiti/test_0_x.png diff --git a/Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_y.png b/Graphics/Atlases/Gameplay/decals/vinki/graffiti/test_0_y.png similarity index 100% rename from Graphics/Atlases/Gameplay/decals/vinki/graffiti/0_y.png rename to Graphics/Atlases/Gameplay/decals/vinki/graffiti/test_0_y.png diff --git a/Graphics/Atlases/Gameplay/decals/vinki/painting_d.png b/Graphics/Atlases/Gameplay/decals/vinki/painting_d.png index b3efe5eff7b760b978d7cc95d04772991b3c352b..9646d357a5b91fe47ce7661b69b36ddc517b5f5d 100644 GIT binary patch delta 1449 zcmV;a1y=f(3AziABYyx1a7bBm000XU000XU0RWnu7ytkTY)M2xRCt{2oIhwBM-;}t zjU$7@6<&nJkwdBkfw&STDRL?7T3s3!Zi1>*fsi(3S`%=U>PVA9O}Z;m*@fLC1XT(c zu8NTnXN;P|1|Q*4NV9r7ntyNR&F(qO2ZH@~v$Mbb-kZ0xr+)*Aii(Pgii(Pgii(Pg z-ZNEwcYx}_cy|?g?61#eYti>!JHY|wQ(r(kKdB4a^mr?{o&DQ$>%J~wc6K5Yxasj0 z7F!!h?GENk0A`?FfXsdZ6S%`yqog(mqoH-*{=2`fY|9BUD?kb_)om_lHc^9e8PA@~(0BLb@>V*fG!&^!*vqMQa@Vs0JbJ}1uY#=SRHUKRTn!p@v z-U9$kUO!IhrdNlrMy)3nj@SUzUD9hk*TA6QO1VcLP<#W7tv^)Lqb2rl&+%ZqyW)g$ zv;#REZh!Kj<#RT$q0ZyxMdQtm%&jbdDKp5@xyzO^LLTva;o%P%jZw9e1HC=*{*J0&f>clfE1n*g{V8Pswz}f zh1F`+T35^TxULlhP%{6S;3=7$xLU26KL8C#wXQEqh?569b)XBL(!u6E)b+Sor)~q< zko0{(_jynppb1h4I9=cG{(!n3UvVFWMq$?V`28P56sS~)G?b|u^>D81F>c=cqIHa} z+<$eV7(g8mU4L}#DQiY$^7?V>cpXq(kB!i5qis%zVgMgqdum;mDkE&*sB)GpCS@z6 zTaMgxAN$?chX8<|e!1V;PRkh|I7toWOW;=6vC#mzb8t3&`q|F_>Sq1n>_p(==b9@{Qc)Q0M19>+%wRUN`C?<;X(zjrM>N-_aiRF^erZTc2Y=Bc4nCD z%y=IX{3b$(Vh5iffNFNu^y0;LVhXNnh_1fb-X;Q<-*yd|mClj_U7#jAGaUT08~(Y( za5jZ91veNCliC*ns5&%3n8S34US}#NCgw%J@-8LeCPe{kLL(u>*x{_s7jdD=g@4gs zHF1bFf!4eezJ5o%BP_+ZCFEuwy0gBAgoa>YiVS$m7Efc7Y3UM~T-~Ml4tjkdiV9)wUFuW`p?@25T~PqvF5gr^p}a0~q!b#uT=xM9gNPSmA9;|e zRCqw*D4Z=HO2W6am6G?UlFJyHH$))1;0b}H{Y=g0$pC361MYvt_eufESi|Y?Qrrg! z71AOQJII;R@BqOl5hKJ@}DiYIw3s%_#xVX@$00000NkvXXu0mjf DMdqTP delta 1155 zcmV-}1bq9t3zrFyBYy;5NklQPNR))kz8*4fn3p@S* z{}}&(>nv>SsBN?{F;sR`8jLw(M>OGLlo@!Nxyj7z`#HNu=9>`UZf|zxGvD{-?d(F= zH8nLgH8nLgH8nLgHLaM|rqr32Pxk&{kA3s;WD^+&OcWLX$mleCv{s18V05n zL^FUPJgMU(da-?K3Q@hmselXR+-v1VRe+iyn*#wlJN-dA-pK-@8bAwpu)@Y|#b831 zL%C8Lq6$E(uzv-BUXSjpwW|qH46q8ku46eGTkc38-t3eV!W#;sq5KuYgV#zBsb$X5 z=6NdCP6c)s04cx#EXJ0!}1m*oo1Y3_Z1woj`|Q{I&QdOl!YdY2 zfG|sOtyfwY0IrsM;ss@Bfywn}$qdH}zoX;EM+s%N11TNu^I_(5Ij~sgQS)MQvYEM+ z1W>Yrtev}ZDFbtfhZ!f$-?)@$}BkH;^o?=w9mN^P%EUX!V4f;lrsmi~)tezrOK-w4>sV z{4#Ykz3tL$$wA6HtyJU(MhHZpweeYyAruB5&<-G zp~6jcPTx46sp7!dgA@N%8=^HlG(gy$P2G4II&lcDHpEija(5G*;AvOPuC&Q2Tmt3Z zJN&wb|D1z}xZPQTSb8|g|14-<1t4^2*5Mo$LmYG_I8iXr6g-VdVgc+!Ll9!*a25;{ zTz|-Z)TAKNqYV8$;m!SSRB_ybne2;pDf!Q7HS0jC^RdS>B8ml2$o0#6BS*iUIb7Xu7K*>|q+r}$`ihBaIaPvSlmfNBsc().Any(solid => solid.Depth < (Depths.FGTerrain + Depths.FGDecals) / 2)) { - Depth = Depths.FakeWalls - 1; - } else { - Depth = (Depths.FGTerrain + Depths.FGDecals) / 2; - } - } + //public override void Update() { + // base.Update(); + // + // // thank u extended variants + // if (Collider != null && CollideAll().Any(solid => solid.Depth < (Depths.FGTerrain + Depths.FGDecals) / 2)) { + // Depth = Depths.FakeWalls - 1; + // } else { + // Depth = (Depths.FGTerrain + Depths.FGDecals) / 2; + // } + //} public override void Render() { base.Render(); diff --git a/Source/VinkiModModule.cs b/Source/VinkiModModule.cs index f03967d..4e29da9 100644 --- a/Source/VinkiModModule.cs +++ b/Source/VinkiModModule.cs @@ -34,27 +34,33 @@ public class VinkiModModule : EverestModule { public static String[] textureNamespaces = [ "scenery/car/body","decals/1-forsakencity/big_sign_b","decals/1-forsakencity/camping_medium","decals/1-forsakencity/hanging_sign","decals/1-forsakencity/big_sign_e",//0-4 "decals/1-forsakencity/big_sign_d","decals/1-forsakencity/big_sign","decals/1-forsakencity/big_sign_c","scenery/memorial/memorial","decals/3-resort/painting_d",//5-9 - "decals/4-cliffside/rockaline","decals/5-temple/statue_f","decals/5-temple/statue_c","decals/SJ2021/BeginnerLobby/jizo_game_a"//10-14 + "decals/4-cliffside/rockaline","decals/5-temple/statue_f","decals/5-temple/statue_c","decals/SJ2021/BeginnerLobby/jizo_game_a","decals/vinki/graffiti/0_dream_x",//10-14 + "decals/vinki/graffiti/0_heart_x","decals/vinki/graffiti/0_dream2_x","decals/vinki/graffiti/0_bad_x","decals/vinki/graffiti/1_pico8_x","decals/vinki/graffiti/1_sicktricks_x"//15-19 ]; - public static String[] textureReplaceNamespaces = ["decals/vinki/car/body","decals/vinki/big_sign_b","decals/vinki/camping_medium","decals/vinki/hanging_sign","decals/vinki/big_sign_e", + public static String[] textureReplaceNamespaces = [ + "decals/vinki/car/body","decals/vinki/big_sign_b","decals/vinki/camping_medium","decals/vinki/hanging_sign","decals/vinki/big_sign_e", "decals/vinki/big_sign_d","decals/vinki/big_sign","decals/vinki/big_sign_c","decals/vinki/memorial","decals/vinki/painting_d",//5-9 - "decals/vinki/rockavink","decals/vinki/statue_f","decals/vinki/statue_c","decals/vinki/jizo_game_a"//10-14 + "decals/vinki/rockavink","decals/vinki/statue_f","decals/vinki/statue_c","decals/vinki/jizo_game_a","decals/vinki/graffiti/0_dream_y",//10-14 + "decals/vinki/graffiti/0_heart_y","decals/vinki/graffiti/0_dream2_y","decals/vinki/graffiti/0_bad_y","decals/vinki/graffiti/1_pico8_y","decals/vinki/graffiti/1_sicktricks_y"//15-19 ]; public static String[] hasArtSpots = ["Celeste/0-Intro","Celeste/1-ForsakenCity","Celeste/2-OldSite","Celeste/3-CelestialResort","Celeste/4-GoldenRidge","Celeste/5-MirrorTemple","StrawberryJam2021/0-Lobbies/1-Beginner"]; public static int[][][] artSpots = [//x,y,w,h,textureNamespaces directory [[-180,120,80,50,0]],//intro [[1115,-1072,30,20,1],[695,-1064,40,30,2],[1742,-1440,38,22,3],[3040,-1880,40,24,3],[2233,-1344,40,66,4],[2665,-1600,20,25,5],[3340,-1950,70,35,6],[3465,-2575,75,30,7],[3985,-3140,40,80,8]],//forsaken city - [[790,1725,50,20,2]],//old site - [[1590,-75,50,30,9]],//celestial hotel + [[790,1725,50,20,2],[1724,508,144,80,14],[115,-515,35,50,15],[1400,268,22,22,16],[835,-1645,32,40,17]],//old site + [[1590,-75,50,30,9],[5632,-69,56,32,18],[3196,-562,1,1,19]],//celestial resort, not hotel [[5145,-1425,100,25,10]],//golden ridge [[3960,424,80,120,11],[7248,-504,240,50,12]],//mirror temple [[3272,324,64,32,13]]//sj beginner lobby ]; - public static String[] hasCustomDecals = ["Celeste/0-Intro"]; + public static String[] decalNamespaces = ["0_heart","0_dream","0_dream2","0_bad","1_pico8","1_sicktricks"]; - public static int[][][] customDecals = [//x,y,w,h,decals/vinki/graffiti/(this)(_x or _y depending on off/on status).png - [[0,100,1,1,0]]//intro + public static String[] hasCustomDecals = ["Celeste/2-OldSite","Celeste/3-CelestialResort"]; + + public static int[][][] customDecals = [//x,y,w,h,bg/fg/sfg=0/1/2,decals/vinki/graffiti/(this index in decalNamespaces)(_x or _y depending on off/on status).png + [[130,-510,1,1,0,0],[1760,524,1,1,1,1],[1412,279,1,1,1,2],[852,-1644,1,1,0,3],[111,1137,1,1,0,0]],//old site + [[5660,-68,1,1,0,4],[3164,-556,1,1,0,5]]//celestial resort ]; public VinkiModModule() { @@ -67,6 +73,7 @@ public override void Load() { Everest.Events.Level.OnEnter += triggerVinkiGUI2; On.Celeste.Player.Update += vinkiButtonPress; Everest.Events.LevelLoader.OnLoadingThread += vinkiRenderer; + Everest.Events.Level.OnLoadLevel += vinkiDecalier;//brokemia saves the day by telling me to use onloadlevel instead of onloadingthread On.Celeste.IntroCar.Added += introCarScrewery; foreach(MethodInfo method in typeof(MTexture).GetMethods()) { @@ -81,6 +88,7 @@ public override void Unload() { Everest.Events.Level.OnEnter -= triggerVinkiGUI2; On.Celeste.Player.Update -= vinkiButtonPress; Everest.Events.LevelLoader.OnLoadingThread -= vinkiRenderer; + Everest.Events.Level.OnLoadLevel -= vinkiDecalier; On.Celeste.IntroCar.Added -= introCarScrewery; hooks.ForEach(h => h.Dispose()); @@ -181,7 +189,7 @@ public static void vinkiButtonPress(On.Celeste.Player.orig_Update orig, Player s } } } - // but here's the DECAL CODE + // but here's the graffiti indicator private static void vinkiRenderer(Level self) { if (SkinModHelperModule.GetPlayerSkinName(-1)=="Vinki_Scug") { // If Vinki's Skin is enabled, it adds these entities to the level first. @@ -191,13 +199,24 @@ private static void vinkiRenderer(Level self) { self.Session.LevelData.Entities[2].Values["depth"]=2; } } + } + // but here's the DECAL CODE + private void vinkiDecalier(Level self, Player.IntroTypes playerIntro, bool isFromLoader) { if (Array.IndexOf(hasCustomDecals,self.Session.Area.SID)!=-1) { // If the current level is within hasCustomDecals, it sets variable myLvl for convenience. var myLvl=Array.IndexOf(hasCustomDecals,self.Session.Area.SID); for (var a=0;a