Open Detanup01 opened 2 days ago
Oh boy, looks like we're in for a treat :/ Will take a look in the next days
I fixed some compilation problems (at least Windows builds locally) and added a basic impl for timeline stuff, it could be used later, either saving it on disk and have an external app listen to the changes like Achievement watcher, or directly used in overlay. I've also added a new param to mods.json for the new TotalFilesSize field.
I'll see if the schema downloaded by gen_emu_config has any data related to branches (name, count, description, ...) and try to create betas/branches.txt like you mentioned in the code comments. Also the new ugc functions seem to depend on branches, might look into them.
Thank you a lot for this effort
I sorry you had to implement lot of this :( Atleast I kickstarted it :D appinfo have branch data btw. Also no idea how we would make it record the time or something, I might think it save to disk when it happened and what description i guess. no idea about overlay since I dont really care about overlay and functionality with it since rarely using it.
Hey don't apologize you did a great job adding all of that honestly, always grateful for your contributions.
I'm struggling to understand this function int Steam_Apps::GetNumBetas( int *pnAvailable, int *pnPrivate )
pnAvailable
, is there a possibility where a branch exists but not available?pnPrivate
, appid 730 for example has a mix between public and private branches, so we return the count of private onlyThis looks like a great sign 😄
What is wrong with them this time, they seem really disinterested in their own API. If you have any info or some intuition what this function might be doing let me know because I have absolutely 0 ideas.
Edit: I implemented it like this but the problem is I don't know when to set the flag EBetaBranchFlags::k_EBetaBranch_Available
if (pnAvailable) { // TODO what is this?
*pnAvailable = 0;
for (const auto &item : settings->branches) {
if (item.flags & EBetaBranchFlags::k_EBetaBranch_Available) {
*pnAvailable += 1;
}
}
}
if (pnPrivate) { // TODO what is this?
*pnPrivate = 0;
for (const auto &item : settings->branches) {
if (item.flags & EBetaBranchFlags::k_EBetaBranch_Private) {
*pnPrivate += 1;
}
}
}
return static_cast<int>(settings->branches.size());
Also what is the difference between these 2 ?
k_EBetaBranch_Selected = 8, // this is the currently selected branch (active)
k_EBetaBranch_Installed = 16, // this is the currently installed branch (mounted)
I've tested function "int Steam_Apps::GetNumBetas( int pnAvailable, int pnPrivate )" through real steam using appid 480 and found it very funny that if you pass first parameter with anything than nullptr the steam crashes itself. For second parameter it doesn't change the value so I have no ideas about it either. The return value is 3, just the correct count of the branches found here: https://steamdb.info/app/480/depots/
I guess that should be everything
generate_emu_config
can now generate branches.json
from app info schema which would be parsed and used by the emu, mainly in Steam_Apps
class + take care of scenarios where the file is missing, "public" branch is missing, user specified a non-existent branch, etc... hopefully didn't miss any casesbuild_id
in configs.app.ini
, we now find the branch selected by the user via branch_name
and get the actual build id from branches.json
Steam_Apps::SetDlcContext()
to mimic Steam_Apps::BIsDlcInstalled()
, but not sure if that's correctmods.json
: min_game_branch
and max_game_branch
no idea what they do though but it seems workshop items can now be targeting a specific game rangeSetAdminQuery()
by literally changing a boolean flag :/ and SetRequiredGameVersions()
by changing a stringSteam_UGC::GetQueryUGCPreviewURL()
@Detanup01 When you have time I'd appreciate if you review and test it.
1.60 missing LOT of things for steamtimeline since no idea how would I make it since no SteamClient_GetISteamTimeline function :(