Skip to content

Commit

Permalink
Preview 1.80.12 Hotfix Release (#504)
Browse files Browse the repository at this point in the history
# What's New? - 1.80.12
- **[Fix]** Threading exception on certain UI components, causing the
launcher to crash, by @shatyuka
- **[Fix]** Sophon Installer crashed due to invalid type of Language
String to Locale Code converter, by @neon-nyan
- **[Fix]** Honkai: Star Rail Game Repair and Cache Update issues, by
@bagusnl and @neon-nyan
- Adding fallback method to lookup values in Honkai: Star Rail gateway
API if the metadata KVP is not updated/unmatched
    - Updating metadata's Key-Value pairs.
- Adding debug information for the Gateway API parser under ``Debug``
build
    - Check for End-Of-File on the buffer
- Fix the location of certain patch-marked files under Persistent Folder
- Fix FileNotFound error on certain file marked under Persistent but
found under StreamingAssets by hardlinking the file
- **[Imp]** Add new game settings for Honkai: Star Rail, by @bagusnl 
    - `Character Shadow in Map Exploration`: self explanatory
- `Half Resolution Transparency`: Controls resolution of objects behind
transparent plane (window, etc.)

### Templates

<details>
  <summary>Changelog Prefixes</summary>
  
  ```
    **[New]**
    **[Imp]**
    **[Fix]**
    **[Loc]**
    **[Doc]**
  ```

</details>
  • Loading branch information
neon-nyan authored Jun 20, 2024
2 parents 372167f + b2598a4 commit 6b571d4
Show file tree
Hide file tree
Showing 19 changed files with 264 additions and 124 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ public void SetActivity(ActivityType activity)
Details = Lang._Misc.DiscordRP_Default,
Assets = new Assets
{
LargeImageKey = "launcher-logo",
LargeImageKey = "launcher-logo-new",
LargeImageText =
$"Collapse Launcher v{LauncherUpdateHelper.LauncherCurrentVersionString} {(IsPreview ? "Preview" : "Stable")}"
}
Expand Down Expand Up @@ -269,7 +269,7 @@ private void BuildActivityGameStatus(string activityName, bool isGameStatusEnabl
{
LargeImageKey = $"game-{LauncherMetadataHelper.CurrentMetadataConfig?.GameType.ToString().ToLower()}-logo",
LargeImageText = $"{curGameNameTranslate} - {curGameRegionTranslate}",
SmallImageKey = "launcher-logo",
SmallImageKey = "launcher-logo-new",
SmallImageText = $"Collapse Launcher v{LauncherUpdateHelper.LauncherCurrentVersionString} " +
$"{(IsPreview ? "Preview" : "Stable")}"
},
Expand Down Expand Up @@ -303,7 +303,7 @@ private void BuildActivityAppStatus(string activityName)
{
LargeImageKey = $"game-{LauncherMetadataHelper.CurrentMetadataConfig?.GameType.ToString().ToLower()}-logo",
LargeImageText = $"{curGameNameTranslate}",
SmallImageKey = "launcher-logo",
SmallImageKey = "launcher-logo-new",
SmallImageText = $"Collapse Launcher v{LauncherUpdateHelper.LauncherCurrentVersionString} " +
$"{(IsPreview ? "Preview" : "Stable")}"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,87 +56,98 @@ private static Dictionary<int, int> GenerateStaticFPSIndexDict()
#region Presets
private static Model _VeryLowPreset = new()
{
FPS = 60,
EnableVSync = false,
RenderScale = 0.8,
ResolutionQuality = Quality.VeryLow,
ShadowQuality = Quality.Low,
LightQuality = Quality.VeryLow,
CharacterQuality = Quality.Low,
EnvDetailQuality = Quality.VeryLow,
ReflectionQuality = Quality.VeryLow,
SFXQuality = Quality.VeryLow,
BloomQuality = Quality.VeryLow,
AAMode = AntialiasingMode.TAA,
EnableMetalFXSU = false,
FPS = 60,
EnableVSync = false,
RenderScale = 0.8,
ResolutionQuality = Quality.VeryLow,
ShadowQuality = Quality.Low,
LightQuality = Quality.VeryLow,
CharacterQuality = Quality.Low,
EnvDetailQuality = Quality.VeryLow,
ReflectionQuality = Quality.VeryLow,
SFXQuality = Quality.VeryLow,
BloomQuality = Quality.VeryLow,
AAMode = AntialiasingMode.TAA,
EnableMetalFXSU = false,
EnableHalfResTransparent = false,
EnableSelfShadow = 2

};

private static Model _LowPreset = new()
{
FPS = 60,
EnableVSync = true,
RenderScale = 1.0,
ResolutionQuality = Quality.Low,
ShadowQuality = Quality.Low,
LightQuality = Quality.Low,
CharacterQuality = Quality.Low,
EnvDetailQuality = Quality.Low,
ReflectionQuality = Quality.Low,
SFXQuality = Quality.Low,
BloomQuality = Quality.Low,
AAMode = AntialiasingMode.TAA,
EnableMetalFXSU = false,
FPS = 60,
EnableVSync = true,
RenderScale = 1.0,
ResolutionQuality = Quality.Low,
ShadowQuality = Quality.Low,
LightQuality = Quality.Low,
CharacterQuality = Quality.Low,
EnvDetailQuality = Quality.Low,
ReflectionQuality = Quality.Low,
SFXQuality = Quality.Low,
BloomQuality = Quality.Low,
AAMode = AntialiasingMode.TAA,
EnableMetalFXSU = false,
EnableHalfResTransparent = false,
EnableSelfShadow = 2
};

private static Model _MediumPreset = new()
{
FPS = 60,
EnableVSync = true,
RenderScale = 1.0,
ResolutionQuality = Quality.Medium,
ShadowQuality = Quality.Medium,
LightQuality = Quality.Medium,
CharacterQuality = Quality.Medium,
EnvDetailQuality = Quality.Medium,
ReflectionQuality = Quality.Medium,
SFXQuality = Quality.Medium,
BloomQuality = Quality.Medium,
AAMode = AntialiasingMode.TAA,
EnableMetalFXSU = false,
FPS = 60,
EnableVSync = true,
RenderScale = 1.0,
ResolutionQuality = Quality.Medium,
ShadowQuality = Quality.Medium,
LightQuality = Quality.Medium,
CharacterQuality = Quality.Medium,
EnvDetailQuality = Quality.Medium,
ReflectionQuality = Quality.Medium,
SFXQuality = Quality.Medium,
BloomQuality = Quality.Medium,
AAMode = AntialiasingMode.TAA,
EnableMetalFXSU = false,
EnableHalfResTransparent = false,
EnableSelfShadow = 2
};

private static Model _HighPreset = new()
{
FPS = 60,
EnableVSync = true,
RenderScale = 1.2,
ResolutionQuality = Quality.High,
ShadowQuality = Quality.High,
LightQuality = Quality.High,
CharacterQuality = Quality.High,
EnvDetailQuality = Quality.High,
ReflectionQuality = Quality.High,
SFXQuality = Quality.High,
BloomQuality = Quality.High,
AAMode = AntialiasingMode.TAA,
EnableMetalFXSU = false,
FPS = 60,
EnableVSync = true,
RenderScale = 1.2,
ResolutionQuality = Quality.High,
ShadowQuality = Quality.High,
LightQuality = Quality.High,
CharacterQuality = Quality.High,
EnvDetailQuality = Quality.High,
ReflectionQuality = Quality.High,
SFXQuality = Quality.High,
BloomQuality = Quality.High,
AAMode = AntialiasingMode.TAA,
EnableMetalFXSU = false,
EnableHalfResTransparent = false,
EnableSelfShadow = 1
};

private static Model _VeryHighPreset = new()
{
FPS = 60,
EnableVSync = true,
RenderScale = 1.4,
ResolutionQuality = Quality.VeryHigh,
ShadowQuality = Quality.High,
LightQuality = Quality.VeryHigh,
CharacterQuality = Quality.High,
EnvDetailQuality = Quality.VeryHigh,
ReflectionQuality = Quality.VeryHigh,
SFXQuality = Quality.High,
BloomQuality = Quality.VeryHigh,
AAMode = AntialiasingMode.TAA,
EnableMetalFXSU = false,
FPS = 60,
EnableVSync = true,
RenderScale = 1.4,
ResolutionQuality = Quality.VeryHigh,
ShadowQuality = Quality.High,
LightQuality = Quality.VeryHigh,
CharacterQuality = Quality.High,
EnvDetailQuality = Quality.VeryHigh,
ReflectionQuality = Quality.VeryHigh,
SFXQuality = Quality.High,
BloomQuality = Quality.VeryHigh,
AAMode = AntialiasingMode.TAA,
EnableMetalFXSU = false,
EnableHalfResTransparent = false,
EnableSelfShadow = 1
};
#endregion

Expand Down Expand Up @@ -231,6 +242,19 @@ private static Dictionary<int, int> GenerateStaticFPSIndexDict()
/// Default: false
/// </summary>
public bool EnableMetalFXSU { get; set; }

/// <summary>
/// This controls if the resolution of transparency object is halved. <br/>
/// There is no in-game setting for this, and it's also not controlled by preset.
/// </summary>
public bool EnableHalfResTransparent { get; set; }

/// <summary>
/// This defines "<c>Real Time Character Shadow in Map Exploration</c>" combobox in-game settings. <br/>
/// Options: Off (2), On (1)
/// </summary>
// dont ask why
public int EnableSelfShadow { get; set; }

#endregion

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using CollapseLauncher.Interfaces;
using Hi3Helper;
using Hi3Helper.EncTool.Parser.AssetMetadata;
using Hi3Helper.EncTool.Proto.StarRail;
using Microsoft.UI.Xaml;
Expand Down Expand Up @@ -41,12 +42,16 @@ public GameTypeStarRailVersion(UIElement parentUIElement, RegionResourceProp gam
public override DeltaPatchProperty GetDeltaPatchInfo() => GameDeltaPatchProp == null ? null : GameDeltaPatchProp;

#nullable enable
private void InitializeProtoId()
public void InitializeProtoId()
{
if (base.GamePreset.GameDataTemplates != null && base.GamePreset.GameDataTemplates.Count != 0)
{
byte[]? data = base.GamePreset.GetGameDataTemplate("MagicSpell", new byte[] { 2, 1, 0, 0 });
if (data == null) return;
byte[]? data = base.GamePreset.GetGameDataTemplate("MagicSpell", new byte[] { 2, 3, 0, 0 });
if (data == null)
{
Logger.LogWriteLine("[IGameVersionCheck:InitializeProtoId] data is null!", LogType.Error, true);
return;
}

string jsonResponse = Encoding.UTF8.GetString(data);
StarRailDispatchGatewayProps.Deserialize(jsonResponse);
Expand Down
9 changes: 8 additions & 1 deletion CollapseLauncher/Classes/Helper/Metadata/PresetConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -195,12 +195,19 @@ internal class PresetConfig
public List<string>? GameDispatchArrayURL { get; init; }

public bool? IsPluginUpdateEnabled { get; init; } = false;
public bool? IsCacheUpdateEnabled { get; init; }

public bool? IsConvertible { get; init; }
public bool? IsExperimental { get; init; }
public bool? IsGenshin { get; init; }
public bool? IsHideSocMedDesc { get; init; } = true;

#if !DEBUG
public bool? IsRepairEnabled { get; init; }
public bool? IsCacheUpdateEnabled { get; init; }
#else
public bool? IsRepairEnabled = true;
public bool? IsCacheUpdateEnabled = true;
#endif
public bool? LauncherSpriteURLMultiLang { get; init; }

public byte? CachesListGameVerID { get; init; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -852,7 +852,7 @@ public virtual async Task StartPackageUpdateSophon(GameInstallStateEnum gameStat
if (_gameAudioLangListPath != null)
{
// Add existing voice-over diff data
await AddAdditionalVODiffAssetsToList(httpClient, requestedBaseUrlFrom, requestedBaseUrlTo, sophonUpdateAssetList);
await AddSophonAdditionalVODiffAssetsToList(httpClient, requestedBaseUrlFrom, requestedBaseUrlTo, sophonUpdateAssetList);
}

// Get the remote total size and current total size
Expand Down Expand Up @@ -940,7 +940,7 @@ private async Task AddSophonDiffAssetsToList(HttpClient httpClient,
}
}

private async Task AddAdditionalVODiffAssetsToList(HttpClient httpClient,
private async Task AddSophonAdditionalVODiffAssetsToList(HttpClient httpClient,
string requestedUrlFrom, string requestedUrlTo, List<SophonAsset> sophonPreloadAssetList)
{
// Get the main VO language name from Id
Expand All @@ -963,7 +963,7 @@ private async Task AddAdditionalVODiffAssetsToList(HttpClient httpClient,
continue;

// Get other lang Id, pass it and try add to the list
string otherLangId = GetLanguageStringByLocaleCode(line);
string otherLangId = GetLanguageLocaleCodeByLanguageString(line);
// Get the manifest pair for both previous (from) and next (to) version for other VOs
await AddSophonDiffAssetsToList(httpClient, requestedUrlFrom, requestedUrlTo, sophonPreloadAssetList, otherLangId);
}
Expand Down Expand Up @@ -1938,6 +1938,7 @@ public virtual List<PkgVersionProperties> TryGetHDiffList()
protected virtual string GetLanguageLocaleCodeByLanguageString(string langString) => langString switch
{
"Chinese" => "zh-cn",
"English" => "en-us",
"English(US)" => "en-us",
"Korean" => "ko-kr",
"Japanese" => "ja-jp",
Expand Down
Loading

0 comments on commit 6b571d4

Please sign in to comment.