#programmers-off-topic
1 messages · Page 94 of 1
Now that I've revealed what I'm working on I should technically go to #making-mods-general , but that's scary.
And also incredibly nonsensical to most people people who frequent there
(Compared to people here, who are all experts on 3d rendering)
(every single one (except me))
make a thread there
how far away are they from the origin? and are you still translated 10 along the y axis?
Good idea, then only those present right now would notice. (Or those who look at the thread list)
@vagrant basalt RE: Symlink Shinanaganery
Symlinking files works fine, just not folders,
Symlink source: "S:\SteamLibrary\steamapps\common\Stardew Valley\ModTesting\{LinkMods}\FashionSense"
Symlink Dest: "S:\SteamLibrary\steamapps\common\Stardew Valley\ModTesting\FashionSense Packs"
Where FashionSense Packs is a Symlink to
"D:\Coding\Stardew Mods\StardewMods\FashionSense Packs"
I know symlinks in symlinks work, I've used them previously nested together
I think I'm lost. You're trying to put a symlink to "S:\SteamLibrary\steamapps\common\Stardew Valley\ModTesting\{LinkMods}\FashionSense" inside...another symlink?
Why not just put a link from "D:\Coding\Stardew Mods\StardewMods\FashionSense Packs" into "S:\SteamLibrary\steamapps\common\Stardew Valley\ModTesting?
That is what I've done, however in the D:\...\FashionSense Packs there is another symlink to S:\SteamLibrary\steamapps\common\Stardew Valley\ModTesting\{LinkMods}\FashionSense
Whatever you're doing looks much more complex than what I do. I do things like:
Actual mod location where I work on the mod and sync to GitHub, I pick this as my source: D:\Games\Steam\steamapps\common\Stardew Valley - 1.6.15\ModDev\AbaStardewModsPrivate\[CP] AbaAnimalMuseum
Mods folder for when I run the game, I pick this as my destination: D:\Games\Steam\steamapps\common\Stardew Valley - 1.6.15\Mods-Dev\AbaMods <- this is where my symlink goes
But then aren't you linking back into your source? If you're going {LinkMods}\FashionSense -> ModTesting\FashionSense Packs -> StardewMods\FashionSense Packs -> {LinkMods}\FashionSense then you are creating a cycle.
The thing is I want to avoid having multiple copies of core mods (Like Content Patcher or Fashion Sense) that are different versions in different files, I'm trying to make it so that I just update the simgular Core mod and it propergates to the symlinks
Yup that's what I do...without your very complex multi-symlinking
{LinkMods}\FashionSense -> ModTesting\FashionSense Packs -> StardewMods\FashionSense Packs ~~-> {LinkMods}\FashionSense ~~ << This is what I'm doing, without that last link
This is the location of the actual mods. I update them using Stardrop.
This is one of my actual Mods folders. You can see it has a Dependencies folder. Inside that folder are symlinks to the actual mods that are inside my pufferchick dependencies folder.
Does that mean you misspoke when you said this?
(Sorry if I am being very obtuse. I am in my lowest energy and therefore brainpower part of my day)
Okay so I've just re done it, exactly the same as last time (define madness I know) but it's actually worked now, so either I got my file paths mixed up, or the symlink source wasn't cleared, I certainly know which is more likely
No worries at all, I think what's happened is I didn't communicate it well enough to avoid confusion
What you said:
{LinkMods}\FashionSense->ModTesting\FashionSense Packs
Is the same as I described with this:
in theD:\...\FashionSense Packsthere is another symlink toS:\SteamLibrary\steamapps\common\Stardew Valley\ModTesting\{LinkMods}\FashionSense
But I should've used arrows to avoid the confusion and make it clearer that we were both navigating deeper into the file path
I am still kind of lost but it's working for you so hooray lol
any reason to do any of it at all and just use stardrop that already points smapi to a mod folder that is full of symlinks for the enabled mods?
damn
bean's place is starting to look like a leafy TGIFridays
or at least the walls used to be covered with shenanigans like that. Last time I was in one it was just normal sparse walls with a few things on them like normal restaurants. However the one nearest me closed down a little after the pandemic anyways
didn't tgifridays go bankrupt altogether
probably, but bankruptcy is just another speed bump for the corporation shuffle to drive over
I'm not sure my parents would have taken me to a tgifriday
(And I'm too cheap to take myself)
Why must everything fun be beat into conforming into boring corporate looks 😔
Capitalism.
Does helix support spellchecking?
Vim/Neovim has had it for ages but I don't see anything for helix
other than setting up some spellcheck LSP I don't think so
that's something I've turned off in every application that has it so I have no experience with it
Microsoft is turning Rust into a first-class language for developing secure Windows drivers | TechSpot https://share.google/NSk9Fm6d8EDMIhgWJ
I legitimately would like to spend more time with Rust
Makes sense, as drivers running in kernel space make a mess if they have memory bugs
and tbh is only in security sensitive places like this where I want rust
in most other contexts I would rather any of the other NotC++ options instead
Like zig or like c# or like Javascript
Am I missing any "rules" for generating Pac-Man style mazes?
- Central room with clear surrounding corridor.
- No dead ends.
- Single tile wide corridors.
- Pellets on every corridor tile.
- Power pellet near each maze corner.
What are you counting as a dead end?
Any corridor that does not open into another or turn into a bend
Looping between screen edges
I think with that definition, you could have a long section that connects to itself but not to the rest of the maze, which probably wouldn't be wanted?
all the pacman mazes I've ever seen were symmetrical, so you may want to include that? and maybe restrict the size of the islands inside loops
I'd say connectedness is probably the hardest to define a simple check for tbh
well, depends on how you run your checks ig
or since this seems like it's for procgen, how you generate things in the first place
Yeah, real Pac-Man stages are symmetrical. You also need to specify no large open spaces, like no 2x2 blanks at all.
tbh if I was tasked with procedurally generating pacman stages, I'd just attach a bunch of rectangle loops to each other starting with the big one around the ghosts' area, mirror, and add the bits that let you loop 
Thank you all! That was extremely helpful!
First randomly generated maze. My dead end rules dont seem to account for 1 tile deep corridors but I might keep it that way for some challenge.
Also fun fact I learned - there is only one maze in the original Pacman
hey why is there both EventDeclarationSyntax and EventFieldDeclarationSyntax
what is the difference
ah-ha, thank you random programming blog
the first is for event properties (which I did not know were a thing) and the second is for regular-style events
apparently you can do this
public event EventHandler MyEvent {
add => { ... }
remove => {...}
}```
I was thinking that but figured it must not be right 
I feel like the example doesn't do a great job showing a usecase for it but ah well
I believe that's used in SMAPI for being able to handle event priorities (if I remember right)
So you're the one to blame for that /s
Are event priorities a bad thing
either way Pathos approved it
He did say he wish he could think of a better way of doing it (if I remember right)
Like, you can't use those attributes with lambdas for example
No, I was only joking. They work well enough. The only thing I think could be improved is the ability to influence the relative sorting so you don't have to be concerned so much about having Normal and Normal+1, etc.
either mechanism invites an arms race, and I feel the Normal, Normal+1 is less breaking then the potential paradox of two events wanting to happen before each other
to be fair, Pathos was using it prior https://github.com/Pathoschild/SMAPI/pull/723/files#diff-87d3e781624df09967188f51b08bcb56a18cf515febce23f8c9185b5883dd5d2L16 it was already event properties
I was more saying that's why I remembered it, since I did that PR. 😅
did anyone of you got the vs debugging feature to work when the steam is set up to start sdv via stardrop?
(at least this is what I think why when clicking the green debug arrow it loads and freezes stardew)
that sounds suspiciously like a modding question
So VS2026 looks... different.
oh no
I didn't even think about the fact that there would be a new visual studio in 2026
Blazing fast performance
Visually, I kinda like it?
damn I always wanted my AI to be deeper
LLM 2 - DLM?
I can't use 2026 till someone gets a vim plugin working for it
why does every fucking sentence about this editor include the word AI
Because AI.

I'm not even allowed to use these things cause sending my code to a cloud service would be against our security regulations
There's a VS2026?
first insider version thing dropped yeah
I didn't really know their version name change schedule, since 2022 was still updating
I started on VS 2012 
2022 was exciting cause it finally became 64 bit
that definitely helped on the larger projects at work
I actually wrote visual basic .NET yesterday
technically
I uncommented 1 line and commented another
Dh, worth it to update?
can't imagine it'll be worth it till the stable release at the bare minimum
I mean it's still preview, and I just poked around with it for 5 seconds on my laptop, but it really did feel... surprisingly smooth?
I only use visual studio for work so I will just truck along with 2022 till my work decides to change license
in my ideal world I wouldn't need visual studio at all but I have to admit that it is genuinely really good
especially when its competition is omnisharp
I could try rider
oops, I thought the technical side of things would go rather here as well
someday
the features listed for visual studio 2026 seem to kind of imply that 2022 will not support .NET 10 and C# 14
else why would .NET 10 support be listed as a feature of 2026
can't imagine that's actually true though
wake me up when actually exciting .NET news is announced (stephen toub blogpost)
wait what
literally today
yup this continues to re-enforce my belief that none of the code I write is actually run and all of it replaced by something fancier
damn they optimized number division
not exactly something I expected to have any room for improvement
number divison of the decimal type*
Crumble u mostly do odbc things right
How much do u benefit from net perf improve vs whatever db improving perf
I've never used odbc in my life
but i assume you mean I do a lot of work with databases
Some kinda App to DB thing is what i remember yes
admittedly most of the C# code I write these days is constrained heavily by database performance but even then a lot of work that's done to improve async, general memory usage or just string handling in general can make a real impact
I get a lot more out just some improvements to System.Text.Json than most of this blogpost but still
though this blogpost has a section for JSON it seems
ReadOnlySpan<char> my beloved
I used it all over my filter query parsing in the api even though it's honestly overengineered and didn't need it
Apparently in I think 9? They added a thing to dictionary types that lets you define span-based alternate lookups
yeah I've got a few span alternate lookups here and there
FrozenDictionary with alternate lookup for spans is 🙏
looks like FrozenDictionary is getting more love in .NET 10 as well
AlternateLookup specifically too
he himself calls this a monstrous misleading micro-benchmark but I find it amusing much like him
ah we can do better
alright I'll read through this again later but it seems nice though not as crazy as .NET 9
the biggest thing generally is just the automatic stack allocation of objects when it's determined to be possible
Does net have functools.partial yet
go use haskell if you want that smh
honestly highly doubt that'll ever be a thing in C#
What is this
You know how u might do stuff like
Action callme = () => MyFunc(somevalue):
In python u can instead do
callme = functools.partial(myfunc, somevalue)
I think it's approximately like if u made a record with the method + what the args should be
And it doesn't inherit scope at all cus it's not a closure
Sounds like the placeholders for C++ std::function
Yeah similar enough
This did happen back with vs2022 with .net5 or .net6 dropping a line in the sand that vs2019 or whatever it's called didn't support
Have you ever thought about getting into modding /s
I'm too dumb 😛
We are trapped in .net6 until ca is convinced we can leave supported OS's behind or convince pathos that smapi can and should leave vanilla behind and run on newer versions
Let's start to petition .NET8 for SDV 2.0
Remind me in 50 hours to run smapi on .net 9
whew ok i'm pretty booked up at that time but...I'll squeeze it in for you. (#6858893) (50h | <t:1757726403>)
Could .NET >6 be technically possible for SDV using the same cursed methods as the unofficial 64-bit?
How
it was some regex analysis shenanigans
This is the thing I was thinking about. Hopefully linq will get a huge boost from this
When I did my attempts I had to move smapi entirely out the stock folder and entirely inside the smapi-internal folder and then tweak a bunch of things to convince everything the base path is still where it was originally and not smapi-internal
I thought stardew was already 64b
It wasn't back in 1.5.4
Before it was officially 64-bit, there was a time where through some hackery there was an unofficial build
Aaaah okay
It was created to address the frequent OOM issues at the time
Yeah bc 4gb is just not enough
But that whole era was a mini mod-pocalypse
In 1.5.4 it was what's now the compatibility branch, where windows was true xna and only not-windows was monogame
The hackery was replacing DLLs to force that monogame version to run on windows anyway
wait so was non windows sdv 64bit since the begining
Tru
What i really want is a good reason to play with net 10
Preferably AOT
Preferably not blazer
Tbh my next programming project is probably The One App
Advent of code with aot is competitive for performance races
Tell me what to eat, when to sleep, congratulate me on being productive, give
is it gonna have a mascot
All without LLM?
focus korean meloon
Please
I want an external tool to fix my life
Tell me my dumb ass left my lunch on the kitchen counter again
Help me menu plannnnn
(I went looking for an app for meal prepping and I'm startled to see none that I like.... 🙁 )
I've always been a little bit interested in the idea of meal prepping, but the concept doesn't fit well in my life
Partially because of time and dishes, but mostly because I don't have a very large freezer
I dont have a large freezer tbh
Also my heart wants a proper sourdough loaf with which I can make a really good grilled cheese
I'm in my domestic era
Uncool and proud of it
There's a TikToker Stealth Health who has a bunch of meal prep recipes I'd love to try myself if I had to space for them. He like stuffs his freezer with dozens of prepped meals.
Ah, I tend to work aboit a week in advance
One of my friends in uni had an entire chest full of food
She would prep a semester at a time
God.
Sourdough 
I'll go be off topic sourdough elsewhere
(From one of his videos)
A perfect life
And it's not the same thing either, but just a handful of different meals. I look at that and think, if only...
When I move again I'm thinking of getting a desktop and a chest freezer
Yes these go together
I do have a small chest freezer, but it's stuffed with costco
The one time the chest freezer felt like a mistake was when I had an extended (week+ long power outage) and lost a bunch
Which is why some kind of backup generator is on my todo list
When I have more money I'm strongly considering solar panels
It's part of the inflation proofing
Otherwise, buying bulk has been one of my cost saving strategies for the last 7 years or so
The less I consume the more inflation proof I am
I wish solar was an option for me, but I live in an area that isn't ideal for it. More specifically, my house is under the shade of a lot of big trees.
I want a small self sufficient homestead
So the best I can do for power outages is a gasoline, propane, or a lithium backup
I looked at a house that was on well-water, had a septic system, and was a candidate for solar. That one would've been a great self sufficient home.
I don't understand
(It's a readonly Mesh[])
I can iterate with a for loop and .Count but it's odd
ArrayEnumerator extends IEnumerator and ICloneable but not IEnumerator<T> it seems
Which modpack should I start playing in stardewvalley?
You're in the wrong place, you want #modded-stardew
Also, Stardew doesn't really do modpacks
It's time to start. Ill put together the first popular modpack
Aquo no
We just do modlists and that works perfectly fine
I mean, nexus collections exist, but since vortex doesn't work right for Stardew it's not recommended to install them as intended
Oh that's right, the community has a weird thing against modpacks for some reason
It's mostly permissions related and also the fact that barely anyone has their stuff on curseforge
The second bit is also permissions related, curse is bad at enforcing them
why would they need to be on curseforge
honestly I just don’t get the point lmao
they make more sense in games where there’s a lot of compat issues so curation is key
in stardew it’s pretty safe to just download a bunch of mods (within reason)
Infrastructure conducive to it
I guess
But yeah it's mostly just what iro said
I don't think that's necessarily true, a modpack is just a glorified install script, fetching the mods from whatever hosting source and installing them
the compatibility thing is a fair point tho
(Is that not just a modlist at that point)
oh, that would be because nexus (the main source for stardew modding) doesn’t support that without premium membership
I'm not sure there's a difference
even for vortex collections
you cannot automate nexus downloads unless you have a premium api key
oh right, dont you have to be logged in to download from nexus
yup
You do, yes
now theres the thing they should be up in arms about
*you can't automate them without nexus being angry
you’ll find the stardew community is actually okay with “higher vetting in exchange for higher moderation”
(if the moderation works, which it doesn’t)
they're okay with tyranny
you could definitely just steal the session + cloudflare cookie and then generate download urls with that
Plus the way DP allocation works kinda just requires the user to have an account
Also the archived links still working for hidden mods etc
(I used to be able do it without even doing that iirc, but they may have patched that lmao)
lol
thats just a result of collections wanting versions not nexus needing premium for downloads
what license do games on nexus get uploaded under
games or mods
games don’t get uploaded to nexus
You mean mods, I assume
Depends. Varies from MIT to "© All Rights Reserved"
and iirc nexus takes no ownership, so whichever license you say they do
Rights you are giving us to use material you upload
When you upload or post content to our site, you grant us the following rights to use that content:
a worldwide, non-exclusive, royalty-free, transferable licence to use, reproduce, distribute, prepare derivative works of, display, and perform that user-generated content in connection with the service provided by the website and across different media including to promote the site or the service forever; a worldwide, non-exclusive, royalty-free, transferable licence for our partners and advertisers to use the content for their purposes and in accordance with the functionality of the site forever; a worldwide, non-exclusive, royalty-free, transferable licence for other users to use the content for their own recreational purposes only and in accordance with the purpose of the site (that is, to enable users to download video game mods for their personal use and enjoyment) forever.
Although some C# modders have been moving to MPL or GPL v3
Right, mods
That's just boilerplate. Doesn't do anything beyond letting them provide the mod on the site for download
mhm
and for advertising, it looks like?
which is still standard tbh
Ye, it's all under "provision and promotion of the service"
Very standard
another fun point of this is the entire collection format is very much just vortex
the data is a stringified version of vortex state
amazing
Which is why a certain modding contest's initial terms of participation got so much flack...
“why don’t you guys trust our new mod manager”
(spill)
(weren't you there for this when it happened???)
(no recollection)
Perfect, time to find all the MIT, GPL, MPL, etc mods and redistribute them in my ultimate modpack
is this curseforge related by any chance
its kind of readable thankfully?
the chance is 100%
Hi ichor 
tl;dr curseforge did a modding contest and the terms for submission was that you would grant curseforge a worldwide, perpetual, exclusive right to host, distribute, etc. your mod
not fully asserting ownership but more or less, i (a layman) would say
not too unlike 20th century fox's perpetual exclusive license for OG star wars
or the sony/spider-man one
or probably some other shitty situations i can't recall offhand
hi! i forgot to say hi back to you

oh no i'm finally getting errors dealing with collections
gnhgkdjfhgjrhgjkhrdjkghdrgh
which now has to be gpl, in a stunning win for open source
what if aquo violates the gpl
then he might as well throw the arr mods in 
If I'm just rehosting them, and writing an install script that simply downloads them and installs them, I don't think it would need to be GPL
but licenses confuse me
[11/09/2025 14:07:11][Alert][Program.Main: Line 153] System.InvalidOperationException: The converter specified on 'Stardrop.Models.Nexus.CollectionModRule' is not compatible with the type 'Stardrop.Models.Nexus.CollectionModRule'.
???
oh this is horrifically on topic
[11/09/2025 14:13:58][Debug][NexusClient.GetFileByVersion: Line 260] Requesting version 2.4.2 of mod 1063
[11/09/2025 14:13:59][Debug][NexusClient.GetFileByVersion: Line 280] foreach file inside with Automate 2.4.2-1063-2-4-2-1753653272.zip @ 2.4.2
[11/09/2025 14:13:59][Debug][NexusClient.GetFileByVersion: Line 293] Unable to get a matching file for the mod 1063 with version 2.4.2 via Nexus Mods:
you have the mod right there!!
oh stardrop doesn't like downloading old mods
yay!
Have fun! 
that'll work just fine
I thought the same thing, but then I saw modrinth gives their equivalent for downloads and page views, and they don't require logging in...
god I hate GPL
yeah AGPL is better /s
Late but like mods are derivative works at best?
I prefer my licenses to not take after contagious diseases, thanks
Not a fan of the ole copyleft?
I propose the following license text for my new software: “by modifying and redistributing this software you agree to rename your online handles to ‘Selph’ in perpetuity”
What happens if they do that with someone else who has the same license (but different name)
Like if I have to be a Selph, and then later have to become an aquo
Then I'm not Selph in perpetuity
aquelpha it is
online handles is too vague. can i just set up a selph email address?
...you know, the license doesn't say anything about alts
Well I guess it says handles, plural
I was gonna say "I could create a single selph handle and never use it", but I guess that won't work
I'm changing my licenses. In order to use my code you have to film yourself singing your idol to the bathroom mirror
two is plural
Hmm..... true
what if two is actually singular
This is online usernames not pants
can't believe two is singular in the world of pants
I wish the creative commons licenses weren't frowned upon for code, I find them so much easier to understand lol
bored rn, what projects are you all working on?
I'm writing a blog post because I'm a nerd
only project I'm really working on these days is for work
i think everyone here is-
Please, these nerds have no idea the depths of true nerddom
DANM
i take that as competition-
what about?
Soft modding a PS2
I need to replace my car’s blower motor
That’s like a hobby, right?
I’ve been procrastinating but it sounds like it’s about to give up the ghost any minute
.. i read 'car' as 'cat'-
you def don't want to have a cat with a bad blower motor
I love VS crashing when I use my clipboard while having unsaved changes
It's so exciting
oh god-
(Every window on my computer froze, too 😅 )
My main project is of course my secret code crimes
Of course there are others too
just checked to see that my VS stuffs were saved when you said that-
ofc ofc
(it's not secret at this point, beyond being in a thread)
Thankfully I didn't lose much it seems
LMAOO
i hope vs doesn't judge decide to crash my computer after sensing how shitty i am at coding-
Work
If you replace your car blower motor I'll replace the battery in my car
Impossible, I'm pretty sure I've done worse things before.
.q add "Crimes are fun!" - @cinder karma
New quote added by atravita as #6627 (https://discordapp.com/channels/137344473976799233/1215712021207720006/1416182065979723807)
Um that ones pretty important atra
No battery = no go
Oh it's not broken yet. Just a little higher resistance than nice
I just have to get myself, my car, and my socket wrench to Costco
There’s still time today!
nah it's past midnight in timezone so it's impossible
records video with obs
opens video editor, drops it in, exports it to mp4 (originally was mkv)
resulting file is 50% larger than the original
Me:
...I forgot I left that on "reply"
Anyways, crime preview once I figure out how to get thise 200 MB .mkv a bit smaller
...I think I was floundering around realizing the windows game had to be the active window for keyboard input for a bit, can probably cut that out
(And lower than 720p)
88 MB. All it took was this
(Was 720p 30 FPS 1280x720 at High quality)
@steel kraken: run smapi on .net 9 (50h ago)
Ah that was what the reminder was
one day you'll see the light of webm vpx compression and be free
I don't know how to make it do that 
you could just render as your usual output codec and then ffmpeg it to webm, if your recording software doesn't support vpx out of the box
well those are just your options for mp4 right
Oh right you said webm
isn't there an alternative recording format for webm
Alas, no webm
20 Apr 2024 — No, you can't record using the WEBM container but you can use MKV or MOV and then remux it into webm using ffmpeg.
Smh
Good thing it can record flash video tho
thankfully
does it generate a <canvas> with the typescript
(Also, OBS has a built-in remuxer...)
event syntax in source generators is stupid, why does it work differently from literally everything else
on the other hand I found the syntax tree visualizer, which is very useful
This was not a game I was expecting to see on steam. https://store.steampowered.com/app/3219410/The_Trolley_Solution/
Philosophers already waste their time and lives thinking about thinking.
Why not have fun while doing it?…
$6.49
108
Title result: Save 35% on The Trolley Solution on Steam
I haven't tried to do stuff for events with them before, how stupid are they?
The w h a t
So when you use ForAttributeWithMetadataName, it gives you the syntax node that the attribute is applied to. For every other usecase, this is the "top level" node of whatever the thing is.
For events specifically, for some reason, it is NOT the event declaration, but rather the variable name child node, so to get the actual event node, you need to climb the tree two levels
If you have the compiler platform sdk component installed in VS, you can search tools for the syntax tree visualizer, which is a tool window that shows you the syntax tree of the currently displayed code, as well as the specific syntax node that your text cursor is in
I wish I knew about it before because it's amazingly useful for writing source generators and analyzers
That's weird.
Recently I had to do some sourcegen stuff that could only use a version older than ForAttributeWithMetadataName though, RIP me
Oh my god
This would've saved me so much pain and misery and suffering and agony
I was postponing doing more sourcegen stuff for modding, now I might not if not for my hyperfixation on other crimes
I don't know why nobody mentions it, I only found it through some random obscure back page of msdn
I have done so much debug output
Or trial and error
Trying to figure out the exact class I should be casting to for what I want
Or what field contains what I'm looking for
Yeah that's how I was doing it before and it was painful
It's extra fun when your source generator is crashing because things aren't matching your expectations
Where's that clickbait C# guy that gets posted here periodically. They need a video like "source generators are actually good now???"
And like, so often something looks like what you want but isn't. Or like, good luck figuring out what a Trivia is in a reasonable amount of time.
I need to start a programming blog because I've learned so many useful things about source generation that I haven't seen anywhere
Yeah, and a lot of the things that do exist don't cover the latest stuff
Like not covering incremental ones, or newer stuff like ForAttributeWithMetadataName
Yeah the documentation is so minimal
For what I did already, this is my mod class for stardew3d (not including the two event methods you see there)
BaseMod is this, and the source generators generate appropriate fields/methods
Ex.
I've been wanting to do more interesting stuff though, like auto subscribe event methods marked with an attribute (similar to in MC forge), or an autogenerated thing for loading in new assets and having them auto cached/invalidated as necessary, or GMCM integration
(If you're wondering about the reflection here - I could've sworn I tried Instance = this as ActualType; and it crashed or wouldn't compile or something, but that's actually working now...)
All three of those things are actually part of the sourcegen package I've been working on! It's why I was fiddling with event stuff.
There's still a few things to do before I can release it, but it's almost done
Oh, what all does your thing have? Maybe I could just use yours 😛
I also have some ideas for a not-quite-sourcegen
I’m thinking I can auto generate documentation for GitHub and new website based on c# xml docs
So then I just have to document things in the source code itself
I imagine that’ll be much faster than what I was doing for my website previously
I also wanted to have a github action generate mod description from readme or something on release, and then update nexus automatically.
But
I even had a plan for making it work automatically for monorepos
there is always the option of paying some company that does scraping stuff to solve the captchas
might make nexus angry
Yeah, I’ve heard of those being a thing
- Asset lifecycle handling including lazy properties and INotifyProprtyChanged, and asset dictionary merging. Also dumps translations into a strings asset for convenience.
- gmcm automatic registration and lifecycle handling, with support for all all types including enums, and pages. Plus hooks for adding your own stuff.
- automatic event subscription, with support for all smapi events as well as marked static events from the mod itself.
I would love to have that tbh
Also dumps translations into a strings asset for convenience
Doesn't Pathos's thing do that too if you specify a certain property in your csproj
I don't know, I never use it
I can make it detect that property and disable it though
I really like it, but sometimes you need dynamic fetching for a key
Cat plz
I can't read the nerd talk like this
I almost always find myself using dynamic keys and/or string assets nowadays
Anyways this sounds like something I'd really be interesting, do you need a tester? 👀
(Although depending on the syntax I suppose I might end up making my own anyways - not as a hater, just because I am a little gremlin with peculiar preferences 😛 )
Fair. Sometimes just doing I18n.Menu_Confirm is nice, though
Especially since it'll break at compile time if something changes
Also I'm not really familiar with INotifyPropertyChanged, what's that like?
I've been testing as I go, but the repo is public I think. I haven't packaged it with nuget yet, that's the next thing I plan to do
And by "Asset lifecycle handling" do you mean for vanilla assets, putting custom assets into the pipeline, or both?
It's mostly used in ui spaces. StardewUI uses it. Basically it just says "here's an event that fires when any public property on this object changes, and the event will tell you which one
How convenient that you have your github profile linked to your discord profile 😄
Both
The whole works- loading, editing, invalidation, local files
StarModGen
I'm debating switching out some of the asset attributes for file properties, since piling on a bunch of attributes on a method is kind of clunky
File properties?
Hmm, parts of this I like, parts of it I don't (just code style stuff though)
Yeah, in the csproj. You can define attributes for files that a generator can use
And since source generators can't use output from another as input, I probably couldn't have my source generator do things your source generator would pick up on
Unless I do the "don't auto add to project, just save to a folder that happens to include project files" approach
Oh, like this?
I've contemplated uses for that before
I mean this thing is mit licensed so you can steal piece of it if you want
Eh I know enough about source generators to not need to steal code
Was only looking at it for less work for me to do + ideas
No, it's different. Hold on
(Like, I only looked at the demo just now)
Interesting
what do they want to contribute to the discussion
His contribution is reducing the throughput of my insanity to the discord community
also I feel like I finally have to ask. what even are source generators
They analyze the parsed C# syntax (in the same way the modbuildconfig does for it's warnings, I believe), and create new files based on that
When you edit a file it already generated stuff from, the generation for it is replaced
So like, these?
Autogenerated from this
DGA did something similar for compile time mixins. Though Pathos converted it to the pre-sourcegen codegen thing, to make it work on .net framework. (I originally was making DGA for the .net upgrade, but it got backported to the .net framework builds since that was taking longer to release than expected)
so like, self-updating boilerplate?
Though nowadays I know how to make non-incremental source generators work with .net framework too
Pretty much yeah
Like this is the generating code for my [HasConfig] attribute
I believe so
Makes things less error prone when you don't have to copy paste a lot too (less of an issue for this small case though)
The rest of that source generator is this (basically just the "Finding matches" part)
ohhh and you're using a partial class-- oh I get it that's clever
("Why aren't you using that finding attributes convenience method?" Because it doesn't work for any version of that generic, in my testing)
I have the old mixin test on gist somewhere
I wish github let you search your own gists
User facing side of that is
With the generated code being
you know I was just thinking about something yesterday that may or may not be doable via baby's first source generator
I did this for DGA since I was basically doing the same thing for every single object type 😛
(Which was everything JA supported, and I think a couple other things as well)
Speaking of DGA, I got a nexus DM from someone requesting an update for it once again, last night
which was just some kind of template attribute for "cached/lazy loaded property" (prop with an underlying nullable field that gets ??=ed on get)
but why though
shrugs
I write about ten million of those lazy loaded props per hour
(no I don't I have like three and they're all terrible ideas)
It never updated for 1.6 since literally the whole point was being able to use string ids
does anything really depend on dga still
There were a couple neat mods that never got updated for that reason I believe
Like, even outside only-content-packs
I believe PeacefulEnd's target dummies mod, for example
yeah, take a look at what I'm doing with it here
https://github.com/tlitookilakin/StarModGen/tree/master
I’m back to confusion
I’ll have a more hands on look myself later
I’ll put a note to ping you next to the rest of the notes on it once it’s ready for use, perhaps as a nuget package since others are interested. It should be usable even outside of modding in theory.
If anyone else wants a ping, ping me or dm me asking
I should probably make it a separate repo in that case (that case = usable outside of modding), huh
...or maybe I could just use this thing I accidentally found while looking for documentation on the xmldoc output file structure
Gotta read it's capabilities to see if it can do what I want though
Since I want content pack facing docs as well
I was about to say - what lib does Harmony use?
Python world has some really nice ones ngl
I'm also a huge fan (in python land) of the fact that is versioned
So if I'm stuck on an old lib I can look up what it was on the padt
No I'm not salty about usinf 3.6
Why would you think that
So how goes thr land of video games
Video gaming?
whats video gaming, I spent my evening finding and having a fix for smapi deciding it was a good idea to load townInterior 100x back to back in the same tick
I was wondering how long you spent on that 
I got a different log with the same behaviour today and they explicitly said they were playing in english which got me to investigate further
I was previously convinced it had to be some mod doing invalidate over and over again, but once I knew they were in english, the question then became "why is a german townInterior being used at all"
and once I found the cause, I could finally reproduce it locally
Interesting
I’m gonna have these generate on build so they’re always matching the source code in the commit you are looking at (or the downloaded release you have).
For my website, I’m thinking of generating it once upon release, and having a version switcher like how a lot of things have
@dusty pollen guess what I just found in code I wrote
for i in f or file_ext == "blah":
# loop behavior
Python man
have you never heard of with open(filename) as f:
but also I'm not sure which of the iterators in the file that uses or what for ... or is
I have! I simplified for texting on discord
I dont know what for....or is either
Stupid fun. The code worked
I be not sure HOW
Which is why I didnt catch it earlier
Ew what
Look
I was pretty crunched when I wrote that
Lots of python fun
truthy or whatever returns the first item
Returns the truthy
aw, i was going to ask
short circuiting, yeah
I associate it more with js tbh
but I just didn't realise that was legal syntax, I thought there was a stricter check for the for loop syntax
I also associate the word "truthy" with js lmao
what does it iterate over if you just iterate over f itself?
It's also a thing in python
Oh, iterating over a file? The contents of the file line by line
oh yeah, I just associate it with js because of how prevalent it is there
it's going to be a thing in any duck typed language
Yup
because you have to be able to resolve arbitrary stuff to bool
Yup
oh, so just readlines?
Basically but as a generator iirc
I'm pretty sure readlines are also a generator
I think everything in the file object is generators
No, it isnt
it isn't?
Readlines produces a list of strings
In my case I wanted to not have the entire effing file in memory
oh
has it always? I could have sworn at some point it was a generator
It can be a thing in other languages too. Like how c++ std::unique_ptr and co use operator overloading to let you do if(ptrObj) just like a normal pointer
Pretty sure always
oh maybe I was actually just iterating over f all along and was just mentally blanking
it's hard to think without an ide open 
isn't that just an implicit cast method?
it's hard to think without an ide open
it's hard to think without an ide~~ open~~
it's hard to think without an ide open
it's hard to think without an ide open
Yeah, but as far as patterns go it's very much a thing
You might be able to do it on streams too?
Been while since I tried though
oh I just mean that it's not an inherent truthiness/falsiness that values have the way duck typed languages do
It's inherent?
I thought it was more of a so-common-its-fundamental pattern
Like if I make a custom type in those languages wouldn't I still need to tell it somewhere how to know if that thing is truthy or falsey?
I mean you could, but it would just assume that it's truthy
Ahhhhh
you have to be able to convert things to bool pretty much
it's not an option not to
generally only empty things are falsey
So it'd be like if C++ made it where everything was implicitly castable and you couldn't opt out, but you could tell it how to decide which value to use?
I wonder if that's sorta a consequence of those languages only really having pass-by-reference. Like, literally everything is pointer in a sense, so it has that by default, and just lets you override it for the pointer's value
the python relationship to string implicit casting is more complicated tbh but everything does get a string representation too
I think it's more a consequence of these languages abstracting away the typing system
especially in js
Dynamic typing my behated
but types aren't really the same as you'd think of them in actual typed languages, they're a loose approximation
No amount of bolting things like typescript on them can save them
(I've never used typescript, but it's tainted by JS and so is fundamentally bad)
(Not as bad. But still bad)
(/s, somewhat)
you don't like the prototype system, Casey?
you don't like that Everything Is A Dict?
n o p e
Not that I got far enough into JS to really use the prototype system that much
Not really tbh
I'm sure it's great for some types of programming. But I am very much OOP brained at this point
In python you have to define the __bool__ function iirc
(Yes you can do OOP in those, but it's not as good)
If you dont define the __len__
any custom class you make will evaluate to truthy inherently iirc
(Like - yes, you can do OOP in Lua, but it's bad. Heck, you can do it in C even, since OOP is more a paradigm than simply being able to do obj.func())
as someone who's made plenty of cursed custom python classes
🐍
(like I said, only empty things should be falsey theoretically)
so like null, empty lists, I can't remember if the empty string is falsey?
I think if you define __len__ it uses that (yup)
This is also why I'm not gonna use something like lua for my modding scripting language idea by the way
Empty string is falsey
I suppose it's easier initially to some extent for people who haven't programmed before, but I feel like if you're actually aiming to learn to program and not just get something working, something else is better
yeah makes sense
Very much an opinion thing though
(And to be fair, many content pack others would only care about getting things done and not actually learning programming. But if I'm gonna make this, I wanna enjoy making it, and potentially even using it myself at some point)
(makes sense to atra, I have no horse in the race re learning options)
New quote added by kittycatcasey as #6628 (https://discordapp.com/channels/137344473976799233/1215712021207720006/1417241307901858015)
(I'm willing to learn whatever arcane system piques my interest but learned programming using js and python initially)
The fun thing about learning option opinions is you only ever learn from scratch once, so any opinion you do have can never be from first hand experience with all the options
Yes. Only learn scratch once and never again
(Generally, me too, but if I don't like the arcane system option I'll try finding something I do like first - potentially even making my own system that I do like)
learn scratch zero times please
VBA has its niche I feel
More so for people who just want to do small things though
Like the excel stuff (though there's python for that too nowadays, right?)
yeah, if you want to put a curse on your coworkers
then you should definitely use VBA in that case
I mean professional stuff is a whole different ballgame
But if you're doing a small thing for yourself? Who cares
why would you use VBA if not to inflict pain on coworkers
Inflict pain on yourself?
I've only ever used VBA professionally
what hell are you in that the only option you have for personal stuff is vba
there are better ways!
9th circle
I mean sometimes the pain comes from doing it in the worst way possible, you know?
Like, it might be more pain-optimal to program your spreadsheet utility via memory hooking in assembly. But then you're very much asking for it.
For true pain to yourself, you need some vague sense of hope that it won't be painful
I still think of the "genius" intern two years before me who "wrote code so good nobody else could even understand it" who hardcoded SharePoint paths in a vba script he told nobody about
I think he was a demon sent to torment me personally
Only option, maybe not. But if excel is what you know, there aren't a lot of options - especially ones with plenty of examples and documentation.
(Sorta like how a big problem with godot is most of the docs/examples/etc. you find are for unity - though that's getting better)
If your code is "so good nobody else can understand it", it's probably bad
(I know you know this)
you know it, I know it, unfortunately they didn't 
Like, "Yes, the magnitude of its goodness is huge. But it's also negative!"
New quote added by irocendar as #6629 (https://discordapp.com/channels/137344473976799233/1215712021207720006/1417242933941502114)
it wasn't anything important or anything, just the billing information for over 400 people
oh wait, that is important!
Oh, so no big deal if that data gets deleted (or worse, gets corrupted in ways that look fine until you look into it)
(Everybody loves a good scalar value vs. vector value joke, right?)
Python excel is better tbh
Yeah but that's fairly recent comparatively, and so runs into this problem
Like if you google "how to do this specific thing in excel scripting" you're more likely to see VBA than python
guess how we found it
it wasn't because he told anyone about it!
And that's ignoring any confusion the average person might have about looking up general python stuff and trying to figure out python versioning (I assume 2 vs 3 is still a confusing point, though perhaps less than it used to be?)
I mean, that's how you get job security.
And once you're already definitely gone or going to be, you don't need the job security anymore, so why bother? /s
Hmmmm
Well.
I assume the average data scientist can handle python
it's one of the few languages I would assume data scientists know
"know"
know well enough for their usecase
Data scientists, yeah
I'm not talking about data scientists
I'm talking about that older lady in every other office who does the excel wizardry and wants to make it do slightly more
(Not to call this person older, but... literally my mom, basically)
(To be fair does want to learn programming, but has never had time)
my mom's retired and I'm 28 so that doesn't necessarily say that much
that older lady in my team is great and I think at this point she just knows SQL cause of microsoft access but is not ready to admit that to herself
Yeah I just don't like to think about my parents aging because I like to pretend they'll live as long as I will
(And also my mom's joking probable reaction if she heard me call her an older lady)
Yeah, there reaches a point where you'd ready to cross that boundary, but the psychological part is the last hurdle
Also I had no idea we were the same age. I thought you were at least a few years older than me for some reason
🌈
to be fair my personal age view is skewed and I feel like I should be 3-5 years younger than I really am
it's ok I always think atra is like 45 and then get confused
I feel like I get very conflicting information
Most people: "everyone on the internet is a kid"
Me: "everyone knowledgeable on the internet must be older than me"
(everyone != everyone knowledgeable, but I'm not so far gone I think the average person is older in general)
I still remember this one time when I was still ike 22 and someone told me they thought I was a 35 year old mom...
I'm not even a woman!
I'm terrible at estimate age tbh
on discord I assume people are younger than me unless it's a programming discord
See part of my problem might be I don't hang out much in spaces without technical people
i just assume everyone is perfectly ageless tbh
and I ignore nexus comments existing
New quote added by atravita as #6630 (https://discordapp.com/channels/137344473976799233/1215712021207720006/1417246897521037322)
New quote added by atravita as #6631 (https://discordapp.com/channels/137344473976799233/1215712021207720006/1417247700822392832)
the game engine discord I'm in has people who are like mid 30s, 40s or even 50s who worked at like EA as an engine developer before and now want to contribute to bevy
I'm pretty awful too. If someone isn't an adult or a newborn, I'll probably be at least 3-5 years off
You are knowledgeable on the internet
So you're older than you are
everyone else*
But it tracks re: my perceived self-age vs my actual age
I'm, however, an ageless demon
though at the same time there's this one guy in that discord who I assumed was likely in his late 20s and then I checked his discord and it said high schooler and felt the most crushing wave of incompetence I've felt in my life
Speaking of game engine discords - just got a ping that Godot 4.5 was released
Ah yes I also saw the kernel scheduling talk by a high schoolers
Damn I'm dumb
in this case it's a guy who has basically singlehandedly developed probably the most popular physics library for bevy
...why are there so many breaking changes for a 4.x release?
For most games and apps made with 4.4 it should be relatively safe to migrate to 4.5. This page intends to cover everything you need to pay attention to when migrating your project. Breaking change...
They seem to be relatively small things, but still
he'd be in off topic sharing papers he was reading on novel physics simulation techniques and writing simd optimizations to improve his library and then it turned out he was 17
....possible candidate for MIT i see
if he were american ye
pretty sure he has at this point gone to a uni in his own country
he's 19 now 🌈
at 17 I'd never programmed before
at 28 my eyes still blur over when I read a paper
Yeah I can't read academic papers
I had started programming at like 11 or 12 though
I had no real interest in it till I had to pick something for uni
As a child, I yearned for the (game dev) mines
noice
it's always a little funny to me cause I dropped out of the web development course
was like "I do not want to deal with javascript"
lo and behold
I deal with javascript now (typescript)
i got a bachelor's degree on javascript, java, php and c#. and c++. nothing else. what is python <= me to this day
vast majority of what I did in uni was in C#
I still use C# a lot
alas, all the web frameworks for C# are shit
Amazing
This is so painful when modding sometimes
(And why on the rare game project, music gets added last)
C# is the only programming language i use these days... for reasons obvious from context of where we are talking (I do not think json counts as a programming language)
massive
json should not be a programming language
I know you modders sometimes think otherwise
I disagree
I don't think the modders that frequent this channel in particular will think that
Honest question
😭
Why not mute the game
Quick someone get the JDSL post out
not the JDSL
The old atra (who can't come to the phone right now) would mute the game and listen to music
I have no interest in the JIZML paradigm thank you
Good question.
Never thought of it. 😛
To be fair I get... headphones fatigue, sometimes? So if I'm not actively watching a video or playing a game or something, I often just don't have them on. So this was more of an issue during my speakers era after my headphones broke (which I don't do anymore because I don't like alone)
I've already blacked out the JSDL post from my memory
I don't remember much about it beyond it being actual code crimes (or like code felonies, compared to my code crimes being more like code misdemeanors)
The really stupid thing i used tp do was mute stardew
Then put on working music
Which would (reasonably frequently) include the stardew soundtrack
I mean, maybe you wanted winter music when testing summer stuff
Or didn't want sound effects
Seems reasonable to me
Needless to say, the stardew soundtrack has more of an impression on me than the game itself
Knowing you, that doesn't surprise me
Wasn't modding SDV in general an excuse for you to learn C#
Yeah. And I suspect I've overstayed my welcome
Never
...oh I just had a super cursed idea. Make a MonoGame backend for Godot, and then use Godot for Stardew modding
Not that I'm gonna bother even trying. But still an idea, and still cursed
this is why I don't trust modders
choosing the path of most resistance
There are many ideas I've had before where once I've figured out how to do it conceptually (on a detailed level) I never get around to actually writing the code for it
The fun part of programming for me is largely the problem solving. It's certainly not the typing syntax part
I'd imagine that's most people who frequent this channel
I grew up as a gamer turning off all games' music and listening to my own instead <3 (except specifically need for speed)
i firmly associate sims with "на тихорецкую состав отправится"
Rust for monogame?
no
I only turn off music for games I've played faaar too much like runescape or path of exile
But if you do godot
I am not a rustacean, and no amount of time in this channel will change that
I mean someone could, but I'm saying I won't.
(I also said I won't actually be trying monogame godot 😛 )
I'm not a rustacean despite being in a rust game engine discord and having done advent of code in rust twice
Also monogame godot would probably have to wait for the libgodot stuff to be usable to be honest
(That's the stuff to allow embedding godot elsewhere, and not have to be the host application)
Hmm, I guess I should clarify then.
I'm an anti-rustacean
Not anti rustaceans
I am averse to using rust
I kid I kid

really though my favorite language is C#
80% because I am way better at it than any other language
It's my favorite language too. But still missing some things
(God I want runtime mixins)
(How much would I use them? Don't ask questions)
I don't know what that is
Also:
- Being able to use values and not just types as generic parameters (ie. the main thing I miss about C++ templates)
- Being able to break out of an outer loop,
- Other stuff that's really only useful when designing something to be modded to be honest
those first 2 are both in rust 🙏
you can technically break out of outer loops in C# if you count the goto keyword!
To oversimplify things, mixins allow you to copy one classes contents (including things like implemented interfaces) into another.
You can do compile time now with partial classes and sourcegen, but I'd love to be able to attach an inventory to an arbitrary thing at runtime without having to go full ECS
...hmmm
I'm not against using goto, and I think I've used it for that sort of thing before
But something like how java lets you label a loop and then you can break using that would be nice
Yeah but rust is yucky
I've read many explanations of mixins now and I vaguely understand what it means
feels a bit like the derive macros in rust which I suppose is like the source gen compile time mixins in C#
runtime tho
rust does not have that
which has been annoying since it also lacks reflection
I wonder if I'm ever gonna finish that C++ runtime reflection thing I was working on
Or if compilers will have official support for the standardized version by then
"Composition not inheritance" is as far as I got tbh
Yeah, for the compile time side of things you can also do it with multiple inheritance
design-patterns-by-example-for-systemverilog-verification-environments-enabled-by-systemverilog-1800-2012.pdf https://share.google/2ap7ZExYNgJKWjT04
God no multiple inheritance sucks
Okay actually this would be huge for the 3d/vr mod.
But I'm already past the hard part of that (matrices), and I doubt I need super advanced rendering
That's a bit of whining about multiple inheritance in python
I'm against multiple inheritance
but
u don't have any of my photos
I deleted them from ur dumb ass cloud thing years ago
I want multiple inheritance in a true duck typing system that really adheres to "if it looks like a duck and it sounds like a duck, it's a duck"
like I want to define an interface for a class that has a mult: (T, T) => T method that has certain characteristics (commutative, associative, distributive, has a Zero and a One), and then any class that meets those requirements is inherently an instance of that interface
I only accept duck typing as a feature if it's compile time validated
else it should be hurled into the sun
haskell can probably do this idk it's a terrifying language
well I guess you'd define the characteristics of the method as some kind of compiler constant declaration
Do u accept it if a duck compiles your code manually by drawing lines in the sand with beak
do I get to pick the duck
only till the novelty wears off
Only with premium subscription
this conversation reminded me again of a programming language I've been waiting to get a versioned release for like 4 years now
it doesn't have duck typing I don't think but it has some system where functions can accept any object that has specific fields
which is why I was reminded
typescript does that too tho
actually typescript would do that with methods too
"oh this object has some field that's a function called x with the correct type signature? alright cool"
honestly
typescript has a really cool type system
it's just held back by the fact that it's Javascript
I like the traits system for rust but I wish you didn't need a separate impl block for non-trait methods
I like having data and functionality in one place
Yeah, I probably would've looked into it at some point if not for that
That's my main complaint with ECS stuff 😔
smh bunch of OOP people
yes
I'm the same but I can accept it just simply being the same file
Yeah
I've started putting multiple classes in the same file sometimes in C#
which I know is evil and should never be done according to people that do exist
only really do that when one of the classes inherits from the other and requires almost no implementation beyond that
I am very guilty of this, as anyone who looks at my mods can attest
When Pathos took over my mods for a bit I believe one of the first things he did was split them into separate files
I only put them in separate files if I have to PR pathos
No1 oop enjoyer in all of sdv modding
Even enums that only have two or three values
Drives me insane
JA was the main culprit I believe
every time I look at pathos code I'm brought back to being told how it "should be done" by people that I've increasingly become wary of
I don't look at it very often tho
pathos code is very enterprise C# approved from what I've seen
Pathos's stuff does seem a bit overengineered at times (looking at you, ValueProvider stuff in CP), but it can come in handy sometimes
Yeah
Big aversion to static fields, while I use them kinda liberally 😂
(Sometimes you can't avoid them with modding, but that doesn't mean Pathos wouldn't try)
was everything just one giant file
I put enums in the same file as whatever uses it regularly
only once I end up using it for something else too I'll move it out
Like, the whole dependency injection with constructors thing
JA was pretty close
ME too
I hate this, I much prefer just referencing a static field
Like I will use nested types a bunch for data models especially.
Which means they tend to go in the same file (unless you abuse partial classes)
For modding code I mostly just don't think there's a difference between a static class and a singleton and usually i pick static class
but what if someone else wants to use it somewhere else
dependency injection is quite different from static fields unless you mean state singletons in which case yeah whatever it's just the same with different dressing
But Pathos's style is closer to no nested types I feel like
They should submit an official requisition form then
I mean stuff like how Pathos will pass IMonitor into various things constructors, while I'll just use a static field referencing it on my mod class (or pretty close to that, anyways)
dependency injection is a cornerstone of ASP.NET Core development (and really wonderful)
I get why it's useful for things unit tests and stuff
Singleton like a class that's instantiated one time only
But that's not feasible for most things in modding anyways
i personally kinda like Pathos's code style but I don't really follow it myself very much but I like it more from the perspective of code that many people may touch and modify, which is more true for content patcher than it is for my mods
most of the stuff I inject has to be unique per http request I'm handling so they're scoped services. Static fields just would not work
Yeah, it's useful for that
I mean they would if it was one instance of the executable per request, but that's not really how that works right?
don't have to restructure a bunch of content patcher just to use an enum somewhere else
Yeah... but on the another hand, everything is internal, so I can't commit crimes against it from another mod
definitely not...
So it's less useful that it would be otherwise from that perspective
publicizer my beloved
(but also I meant like if I was PRing CP and wanted to use the enum in the new feature I was adding)
enum not the strongest example I just wanted to light-heartedly poke at chu more
I've never used publicizer
wait I think I remember looking this up and being terrified
Publicizer?
it just makes everything public doesn't it
(I figured, but my mind is geared towards code crimes)
It makes whatever you want public, which need not be everything
I thought u can just use ClassName.EnumClassName tho
that's such a modder thing to want
which if where I'm using it is not related to ClassName at all, looks kind of wrong innit
I do that for various game nested enums
The argument is kinda philosophical then, are you breaking the original design by using enum in a part of code where the ClassName is totally out of place
Or does it make sense with full name spelled out
you wouldn't be if it was not a nested enum to begin with
don't think I've ever in my life nested an enum
Cus what if it is like OtherClass.Flavor
This
I'm not sure I've ever tried if that was possible
who says I can't use flavors elsewhere
One place I break from Pathos style
Why should it be nested
The argument is that the ClassName is important qualifying info for this particular enum



