Skip to content

Commit

Permalink
Merge pull request #666 from qsb-dev/dev
Browse files Browse the repository at this point in the history
1.0.1
  • Loading branch information
misternebula committed Mar 9, 2024
2 parents 052d8f8 + 975c4bd commit 9a6f82f
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 5 deletions.
2 changes: 2 additions & 0 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ The template for this file is this :
"autoStart": false,
"kickEveryone": false,
"disableLoopDeath": false,
"timeout": 25,
"debugMode": false,
"drawGui": false,
"drawLines": false,
Expand All @@ -91,6 +92,7 @@ The template for this file is this :
- autoStart - Host/connect automatically for faster testing.
- kickEveryone - Kick anyone who joins a game.
- disableLoopDeath - Make it so the loop doesn't end when everyone is dead.
- timeout - How many seconds for your connection to timeout, in seconds.
- debugMode - Enables debug mode. If this is set to `false`, none of the following settings do anything.
- drawGui - Draws a GUI at the top of the screen that gives information on many things.
- drawLines - Draws gizmo-esque lines around things. Indicates reference sectors/transforms, triggers, etc. LAGGY.
Expand Down
6 changes: 2 additions & 4 deletions QSB/Animation/Player/HelmetAnimator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,8 @@ public void SetHelmetInstant(bool helmetOn)
{
_fakeHelmetDitheringAnimator.SetVisible(false);
FakeHelmet.gameObject.SetActive(false);
if (!SuitGroup.activeSelf)
{
FakeHead.gameObject.SetActive(false);
}
// If the player is currently wearing their suit but has no helmet on, make sure to make the head visible (#655)
FakeHead.gameObject.SetActive(SuitGroup.activeSelf);
}
}

Expand Down
63 changes: 63 additions & 0 deletions QSB/Menus/PreflightChecklistAdjustment.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
using QSB.Utility;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;

namespace QSB.Menus;

internal class PreflightChecklistAdjustment : MonoBehaviour, IAddComponentOnStart
{
private string[] _preflightOptionsToRemove = new string[]
{
"UIElement-FreezeTimeTranslating",
"UIElement-FreezeTimeShipLog",
"UIElement-FreezeTimeConversations",
"UIElement-FreezeTimeTranslator",
"UIElement-FreezeTimeDialogue"
};

private MenuOption[] DestroyFreezeTimeOptions(MenuOption[] options)
{
var remainingMenuOptions = new List<MenuOption>();
foreach (var preflightChecklistOption in options)
{
if (_preflightOptionsToRemove.Contains(preflightChecklistOption.name))
{
GameObject.Destroy(preflightChecklistOption.gameObject);
}
else
{
remainingMenuOptions.Add(preflightChecklistOption);
}
}
return remainingMenuOptions.ToArray();
}

public void Awake()
{
QSBSceneManager.OnPostSceneLoad += (_, loadScene) =>
{
if (QSBCore.IsInMultiplayer && loadScene.IsUniverseScene())
{
// PREFLIGHT MENU IN THE SHIP
var suitMenuManager = GameObject.FindObjectOfType<SuitMenuManager>()._mainMenu;
suitMenuManager._menuOptions = DestroyFreezeTimeOptions(suitMenuManager._menuOptions);
// Remove cosmetic elements from ship preflight checklist
var suitOptionsMenu = GameObject.Find("PauseMenu/PreFlightCanvas/OptionsMenu-Panel/SuitOptionsDisplayPanel/SuitOptionsMainMenu/");
GameObject.Destroy(suitOptionsMenu.transform.Find("FreezeTimeImage").gameObject);
GameObject.Destroy(suitOptionsMenu.transform.Find("Box-FreezeTimeBorder").gameObject);
// PREFLIGHT MENU IN THE OPTIONS MENU
var settingsMenuView = GameObject.FindObjectOfType<SettingsMenuView>();
settingsMenuView._listSettingsOptions = DestroyFreezeTimeOptions(settingsMenuView._listSettingsOptions);
// This one also points to the same options, have to remove the destroyed objects from it
var menuGameplayPreFlight = GameObject.Find("PauseMenu/OptionsCanvas/OptionsMenu-Panel/OptionsDisplayPanel/GameplayMenu/MenuGameplayPreFl/").GetComponent<Menu>();
Delay.RunNextFrame(() => menuGameplayPreFlight._menuOptions = menuGameplayPreFlight._menuOptions.Where(x => x != null).ToArray());
}
};
}
}
4 changes: 4 additions & 0 deletions QSB/QSBNetworkManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,14 @@ public override void Awake()

{
_kcpTransport = gameObject.AddComponent<kcp2k.KcpTransport>();
// KCP uses milliseconds
_kcpTransport.Timeout = QSBCore.DebugSettings.Timeout * 1000;
}

{
_steamTransport = gameObject.AddComponent<FizzySteamworks>();
// Steam uses seconds
_steamTransport.Timeout = QSBCore.DebugSettings.Timeout;
}

{
Expand Down
6 changes: 6 additions & 0 deletions QSB/Utility/DebugSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ public class DebugSettings
[JsonProperty("randomizeSkins")]
public bool RandomizeSkins;

/// <summary>
/// Timeout in seconds
/// </summary>
[JsonProperty("timeout")]
public int Timeout = 25;

[JsonProperty("debugMode")]
public bool DebugMode;

Expand Down
2 changes: 1 addition & 1 deletion QSB/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"body": "- Disable *all* other mods. (Can heavily affect performance)\n- Make sure you are not running any other network-intensive applications."
},
"uniqueName": "Raicuparta.QuantumSpaceBuddies",
"version": "1.0.0",
"version": "1.0.1",
"owmlVersion": "2.9.8",
"dependencies": [ "_nebula.MenuFramework", "JohnCorby.VanillaFix" ],
"pathsToPreserve": [ "debugsettings.json" ],
Expand Down

0 comments on commit 9a6f82f

Please sign in to comment.