mirror of
https://github.com/Gurge44/EndlessHostRoles.git
synced 2026-10-20 01:46:25 +00:00
fix SyncCustomSettings
This commit is contained in:
1 parent
3e6b354b1a
commit
e30afe2b02
8 files changed
+29
-33
No files matched your search
@@ -10,6 +10,7 @@ using EHR.AddOns;
|
||||
using EHR.AddOns.GhostRoles;
|
||||
using EHR.Modules;
|
||||
using HarmonyLib;
|
||||
using Hazel;
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
@@ -3241,7 +3242,7 @@ public static class Options
|
||||
MaxNNKs.SetValue(usedValues.MaxNNKs.GetInt(), false, false);
|
||||
|
||||
OptionSaver.Save();
|
||||
OptionItem.SyncAllOptions();
|
||||
OptionItem.SyncAllOptions(sendOption: SendOption.Reliable);
|
||||
|
||||
Logger.SendInGame(string.Format(Translator.GetString("AutoFactionMinMaxSettings.Applied"), playerCount, usedValues.MinPlayersToActivate.GetInt(), string.Join(", ", new[] { Team.Impostor, Team.Coven, Team.Neutral }.Select(x => $"{Utils.ColorString(x.GetColor(), Translator.GetString($"ShortTeamName.{x}").ToUpper())}: <#ffffff>{usedValues.TeamSettings[x].MinSetting.GetInt()}-{usedValues.TeamSettings[x].MaxSetting.GetInt()}</color>")), usedValues.MinNNKs.GetInt(), usedValues.MaxNNKs.GetInt()));
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using EHR.Modules;
|
||||
using Hazel;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EHR;
|
||||
@@ -315,10 +316,10 @@ public abstract class OptionItem
|
||||
foreach (OptionItem op in AllOptions)
|
||||
op.Refresh();
|
||||
|
||||
SyncAllOptions();
|
||||
SyncAllOptions(sendOption: SendOption.Reliable);
|
||||
}
|
||||
|
||||
public static void SyncAllOptions(int targetId = -1)
|
||||
public static void SyncAllOptions(int targetId = -1, SendOption sendOption = SendOption.None)
|
||||
{
|
||||
if (
|
||||
Main.AllPlayerControls.Length <= 1
|
||||
@@ -327,7 +328,7 @@ public abstract class OptionItem
|
||||
)
|
||||
return;
|
||||
|
||||
RPC.SyncCustomSettingsRPC(targetId);
|
||||
RPC.SyncCustomSettingsRPC(targetId, sendOption);
|
||||
}
|
||||
|
||||
public void CallUpdateValueEvent(int beforeValue, int currentValue)
|
||||
|
||||
+15
-25
@@ -380,12 +380,7 @@ internal static class RPCHandlerPatch
|
||||
}
|
||||
case 80:
|
||||
{
|
||||
reader.ReadString();
|
||||
reader.ReadString();
|
||||
|
||||
if (reader.ReadString() != Main.ForkId)
|
||||
Logger.SendInGame(string.Format(GetString("ModMismatch"), __instance.Data?.PlayerName), Color.red);
|
||||
|
||||
Logger.SendInGame(string.Format(GetString("ModMismatch"), __instance.Data?.PlayerName), Color.red);
|
||||
break;
|
||||
}
|
||||
case 62 when GameStates.IsInTask && Main.IntroDestroyed && !ExileController.Instance && !AntiBlackout.SkipTasks:
|
||||
@@ -463,21 +458,17 @@ internal static class RPCHandlerPatch
|
||||
{
|
||||
if (AmongUsClient.Instance.AmHost) break;
|
||||
|
||||
int startIndex = reader.ReadPackedInt32();
|
||||
|
||||
if (startIndex == 2)
|
||||
if (reader.ReadBoolean())
|
||||
{
|
||||
Options.Preset.SetValue(9, false, false);
|
||||
Options.GameMode.SetValue(reader.ReadPackedInt32(), false, false);
|
||||
}
|
||||
|
||||
for (int i = startIndex; i < OptionItem.AllOptions.Count; i++)
|
||||
while (reader.BytesRemaining > 0)
|
||||
{
|
||||
if (reader.BytesRemaining == 0) break;
|
||||
var option = OptionItem.AllOptions[i];
|
||||
if (option is TextOptionItem || option.Id >= 660000) continue;
|
||||
|
||||
option.SetValue(reader.ReadPackedInt32(), false, false);
|
||||
int id = reader.ReadPackedInt32();
|
||||
int value = reader.ReadPackedInt32();
|
||||
OptionItem.FastOptions[id].SetValue(value, false, false);
|
||||
}
|
||||
|
||||
OptionSaver.Save();
|
||||
@@ -1438,7 +1429,7 @@ internal static class RPCHandlerPatch
|
||||
|
||||
internal static class RPC
|
||||
{
|
||||
public static void SyncCustomSettingsRPC(int targetId = -1)
|
||||
public static void SyncCustomSettingsRPC(int targetId = -1, SendOption sendOption = SendOption.None)
|
||||
{
|
||||
if (targetId != -1)
|
||||
{
|
||||
@@ -1448,24 +1439,23 @@ internal static class RPC
|
||||
|
||||
if (!AmongUsClient.Instance.AmHost || PlayerControl.AllPlayerControls.Count <= 1) return;
|
||||
|
||||
Logger.Msg(" Starting from 2", "SyncCustomSettings");
|
||||
MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.SyncCustomSettings, SendOption.Reliable, targetId);
|
||||
writer.WritePacked(2);
|
||||
Logger.Msg(" Starting", "SyncCustomSettings");
|
||||
MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.SyncCustomSettings, sendOption, targetId);
|
||||
writer.Write(true);
|
||||
writer.WritePacked(Options.GameMode.GetValue());
|
||||
|
||||
for (int i = 2; i < OptionItem.AllOptions.Count; i++)
|
||||
foreach (var option in OptionItem.AllOptions)
|
||||
{
|
||||
var option = OptionItem.AllOptions[i];
|
||||
if (option is TextOptionItem || option.Id >= 660000) continue;
|
||||
if (option is TextOptionItem || option.Id >= 660000 || option.Name == "Preset") continue;
|
||||
|
||||
if (writer.Length > 500)
|
||||
{
|
||||
Logger.Msg($" Starting from {i}", "SyncCustomSettings");
|
||||
AmongUsClient.Instance.FinishRpcImmediately(writer);
|
||||
writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.SyncCustomSettings, SendOption.Reliable, targetId);
|
||||
writer.WritePacked(i);
|
||||
writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.SyncCustomSettings, sendOption, targetId);
|
||||
writer.Write(false);
|
||||
}
|
||||
|
||||
writer.WritePacked(option.Id);
|
||||
writer.WritePacked(option.GetValue());
|
||||
}
|
||||
|
||||
|
||||
@@ -803,7 +803,7 @@ internal static class ChatCommands
|
||||
optionItem.AllValues[targetPreset] = optionItem.AllValues[sourcePresetId];
|
||||
}
|
||||
|
||||
OptionItem.SyncAllOptions();
|
||||
OptionItem.SyncAllOptions(sendOption: SendOption.Reliable);
|
||||
OptionSaver.Save();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ using System.Linq;
|
||||
using EHR.Modules;
|
||||
using EHR.Patches;
|
||||
using HarmonyLib;
|
||||
using Hazel;
|
||||
using Rewired;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
@@ -197,7 +198,7 @@ internal static class ControllerManagerUpdatePatch
|
||||
hudManager.Dialogue.BackButton.gameObject.SetActive(true);
|
||||
hudManager.Dialogue.Hide();
|
||||
|
||||
OptionItem.SyncAllOptions();
|
||||
OptionItem.SyncAllOptions(sendOption: SendOption.Reliable);
|
||||
OptionSaver.Save();
|
||||
|
||||
IsResetting = false;
|
||||
|
||||
@@ -6,6 +6,7 @@ using EHR.AddOns.GhostRoles;
|
||||
using EHR.Modules;
|
||||
using EHR.Patches;
|
||||
using HarmonyLib;
|
||||
using Hazel;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
@@ -1456,6 +1457,8 @@ public static class GameSettingMenuPatch
|
||||
GMButtons = [];
|
||||
|
||||
Main.Instance.StartCoroutine(OptionShower.GetText());
|
||||
|
||||
OptionItem.SyncAllOptions(sendOption: SendOption.Reliable);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -394,7 +394,7 @@ internal static class ChangeRoleSettings
|
||||
|
||||
if (__instance.AmHost)
|
||||
{
|
||||
RPC.SyncCustomSettingsRPC();
|
||||
RPC.SyncCustomSettingsRPC(sendOption: SendOption.Reliable);
|
||||
Main.RefixCooldownDelay = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -658,7 +658,7 @@ internal static class InnerNetClientSpawnPatch
|
||||
Logger.Warn("client is null or client have invalid color", "TrySyncAndSendMessage");
|
||||
else
|
||||
{
|
||||
LateTask.New(() => OptionItem.SyncAllOptions(client.Id), 3f, "Sync All Options For New Player");
|
||||
LateTask.New(() => OptionItem.SyncAllOptions(client.Id, SendOption.Reliable), 3f, "Sync All Options For New Player");
|
||||
|
||||
LateTask.New(() =>
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user