Start tracking cloud support for games

This commit is contained in:
mtkennerly 2024-05-31 23:36:47 -04:00
parent 5a8369af1e
commit adf4da57c6
No known key found for this signature in database
GPG key ID: E764BE00BE6E6408
8 changed files with 2027 additions and 31 deletions

File diff suppressed because it is too large Load diff

View file

@ -7060,7 +7060,6 @@
* [DJ Mole](https://www.pcgamingwiki.com/wiki/?curid=87221)
* [DJ Whip VR](https://www.pcgamingwiki.com/wiki/?curid=120749)
* [Djilyaro](https://www.pcgamingwiki.com/wiki/?curid=76221)
* [DJMax Respect V](https://www.pcgamingwiki.com/wiki/?curid=156151)
* [DJMax Trilogy](https://www.pcgamingwiki.com/wiki/?curid=134039)
* [DK Online](https://www.pcgamingwiki.com/wiki/?curid=127603)
* [DMD Mars Mission](https://www.pcgamingwiki.com/wiki/?curid=82806)

View file

@ -122,3 +122,16 @@ additionalProperties:
type: integer
alias:
type: string
cloud:
type: object
properties:
epic:
type: boolean
gog:
type: boolean
origin:
type: boolean
steam:
type: boolean
uplay:
type: boolean

View file

@ -107,3 +107,16 @@ additionalProperties:
the current entry's title can be used as a nickname to look up the other game.
The other fields in the current entry should be ignored.
type: string
cloud:
type: object
properties:
epic:
type: boolean
gog:
type: boolean
origin:
type: boolean
steam:
type: boolean
uplay:
type: boolean

View file

@ -29604,6 +29604,10 @@
oslist: macos
description: Launch Game
executable: Shelter.app
- config:
oslist: linux
description: Launch Game
executable: Shelter.x86_64
244730:
installDir: Divekick
launch:
@ -29868,21 +29872,6 @@
description: Skullgirls
executable: Skullgirls.x86_64-pc-linux-gnu
type: option1
- config:
oslist: windows
description: Skullgirls Beta (Balance Patch)
executable: SGBeta/Skullgirls.exe
type: option2
- config:
oslist: macos
description: Skullgirls Beta (Balance Patch)
executable: SGBeta/Skullgirls.app
- config:
osarch: "64"
oslist: linux
description: Skullgirls Beta (Balance Patch)
executable: SGBeta/Skullgirls.x86_64-pc-linux-gnu
type: option2
245280:
installDir: Enslaved
launch:
@ -42992,6 +42981,12 @@
oslist: macos
description: Launch
executable: SpaceFarmers.app
- config:
betakey: beta
oslist: windows
description: Beta version
executable: SF_Remastered.exe
type: option1
271590:
installDir: Grand Theft Auto V
launch:
@ -52671,7 +52666,7 @@
polish: "Wiedźmin 3: Dziki Gon"
russian: "Ведьмак 3: Дикая Охота"
schinese: 巫师 3狂猎
ukrainian: "Відьмак® 3: Дикий гін"
ukrainian: "Відьмак 3: Дикий гін"
292090:
installDir: Rube Works
launch:
@ -411536,6 +411531,11 @@
executable: game.exe
type: default
960170:
cloud:
saves:
- path: "Neowiz/DJMAX RESPECT V/{64BitSteamID}"
pattern: "*.dat"
root: WinAppDataLocalLow
installDir: DJMAX RESPECT V
launch:
- config:
@ -533710,16 +533710,23 @@
saves:
- path: "Something We Made\\TOEM\\Save"
pattern: "*"
platforms:
- Windows
recursive: true
root: WinAppDataLocalLow
- path: se.SomethingWeMade.TOEM/Save/
pattern: "*"
platforms:
- MacOS
recursive: true
root: MacAppSupport
overrides:
- os: MacOS
osCompare: "="
pathTransforms:
- find: "Something We Made\\TOEM\\Save"
replace: se.SomethingWeMade.TOEM/Save/
root: WinAppDataLocalLow
useInstead: MacAppSupport
- os: Linux
osCompare: "="
pathTransforms:
- find: "Something We Made\\TOEM\\Save"
replace: ".config/unity3d/Something We Made/TOEM/Save"
root: WinAppDataLocalLow
useInstead: LinuxHome
installDir: TOEM
launch:
- config:
@ -533731,6 +533738,7 @@
executable: TOEM.app
type: none
- config:
osarch: "64"
oslist: linux
executable: TOEM.x86_64
nameLocalized:
@ -554815,6 +554823,26 @@
executable: SecretAgentHD.x86_64
type: default
1607680:
cloud:
saves:
- path: SandCastles/Bread_Fred
pattern: "*.scs"
platforms:
- Windows
root: WinAppDataLocalLow
overrides:
- addPath: ""
os: MacOS
osCompare: "="
root: WinAppDataLocalLow
useInstead: MacAppSupport
- os: Linux
osCompare: "="
pathTransforms:
- find: SandCastles/Bread_Fred
replace: ".config/unity3d"
root: WinAppDataLocalLow
useInstead: LinuxHome
installDir: Bread & Fred
launch:
- config:

File diff suppressed because it is too large Load diff

View file

@ -198,6 +198,8 @@ impl Manifest {
pub struct Game {
#[serde(skip_serializing_if = "Option::is_none")]
pub alias: Option<String>,
#[serde(skip_serializing_if = "CloudMetadata::is_empty")]
pub cloud: CloudMetadata,
#[serde(skip_serializing_if = "BTreeMap::is_empty")]
pub files: BTreeMap<String, GameFileEntry>,
#[serde(skip_serializing_if = "GogMetadata::is_empty")]
@ -234,6 +236,13 @@ impl Game {
.copied()
.collect(),
};
self.cloud = CloudMetadata {
epic: cache.cloud.epic,
gog: cache.cloud.gog,
origin: cache.cloud.origin,
steam: cache.cloud.steam,
uplay: cache.cloud.uplay,
};
let paths = cache.parse_paths(title.to_string());
for path in paths {
@ -574,6 +583,35 @@ impl IdMetadata {
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct CloudMetadata {
#[serde(skip_serializing_if = "std::ops::Not::not")]
pub epic: bool,
#[serde(skip_serializing_if = "std::ops::Not::not")]
pub gog: bool,
#[serde(skip_serializing_if = "std::ops::Not::not")]
pub origin: bool,
#[serde(skip_serializing_if = "std::ops::Not::not")]
pub steam: bool,
#[serde(skip_serializing_if = "std::ops::Not::not")]
pub uplay: bool,
}
impl CloudMetadata {
pub fn is_empty(&self) -> bool {
let Self {
epic,
gog,
origin,
steam,
uplay,
} = self;
!epic && !gog && !origin && !steam && !uplay
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct ManifestOverride(pub BTreeMap<String, OverrideGame>);

View file

@ -407,6 +407,8 @@ impl WikiCache {
pub struct WikiCacheEntry {
#[serde(skip_serializing_if = "State::is_handled")]
pub state: State,
#[serde(skip_serializing_if = "CloudMetadata::is_empty")]
pub cloud: CloudMetadata,
#[serde(skip_serializing_if = "Option::is_none")]
pub gog: Option<u64>,
#[serde(skip_serializing_if = "BTreeSet::is_empty")]
@ -535,6 +537,34 @@ impl WikiCacheEntry {
}
}
}
"save game cloud syncing" => {
for attribute in attributes {
match attribute.name.as_deref() {
Some("discord") => {
out.cloud.discord = attribute.value.to_string() == "true";
}
Some("epic games launcher" | "epic games store") => {
out.cloud.epic = attribute.value.to_string() == "true";
}
Some("gog galaxy") => {
out.cloud.gog = attribute.value.to_string() == "true";
}
Some("ea desktop" | "origin") => {
out.cloud.origin = attribute.value.to_string() == "true";
}
Some("steam cloud") => {
out.cloud.steam = attribute.value.to_string() == "true";
}
Some("ubisoft connect" | "uplay") => {
out.cloud.uplay = attribute.value.to_string() == "true";
}
Some("xbox cloud") => {
out.cloud.xbox = attribute.value.to_string() == "true";
}
_ => {}
}
}
}
_ => {}
}
}
@ -1022,6 +1052,41 @@ static MAPPED_PATHS: Lazy<HashMap<&'static str, MappedPath>> = Lazy::new(|| {
])
});
#[derive(Clone, Debug, Default, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct CloudMetadata {
#[serde(skip_serializing_if = "std::ops::Not::not")]
pub discord: bool,
#[serde(skip_serializing_if = "std::ops::Not::not")]
pub epic: bool,
#[serde(skip_serializing_if = "std::ops::Not::not")]
pub gog: bool,
#[serde(skip_serializing_if = "std::ops::Not::not")]
pub origin: bool,
#[serde(skip_serializing_if = "std::ops::Not::not")]
pub steam: bool,
#[serde(skip_serializing_if = "std::ops::Not::not")]
pub uplay: bool,
#[serde(skip_serializing_if = "std::ops::Not::not")]
pub xbox: bool,
}
impl CloudMetadata {
pub fn is_empty(&self) -> bool {
let Self {
discord,
epic,
gog,
origin,
steam,
uplay,
xbox,
} = self;
!discord && !epic && !gog && !origin && !steam && !uplay && !xbox
}
}
#[derive(Debug, Default, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct WikiMetaCache {