using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text.RegularExpressions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using FemmployeeMod;
using FemmployeeMod.NetcodePatcher;
using GameNetcodeStuff;
using HarmonyLib;
using LethalCompanyInputUtils.Api;
using LethalLib.Modules;
using Microsoft.CodeAnalysis;
using ModelReplacement;
using Newtonsoft.Json;
using TMPro;
using Unity.Collections;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.UI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")]
[assembly: IgnoresAccessChecksTo("")]
[assembly: AssemblyCompany("FemmployeeMod")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+8279c7eb5626e3c9437ccaaf01cf851629de815d")]
[assembly: AssemblyProduct("FemmployeeMod")]
[assembly: AssemblyTitle("FemmployeeMod")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: NetcodePatchedAssembly]
internal class <Module>
{
static <Module>()
{
NetworkVariableSerializationTypes.InitializeSerializer_FixedString<FixedString64Bytes>();
NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable<FixedString64Bytes>();
NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedINetworkSerializable<BlendshapeValuePair>();
NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable<BlendshapeValuePair>();
NetworkVariableSerializationTypes.InitializeSerializer_ManagedINetworkSerializable<NetworkMaterialProperties>();
NetworkVariableSerializationTypes.InitializeEqualityChecker_ManagedClassEquals<NetworkMaterialProperties>();
NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedByMemcpy<bool>();
NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable<bool>();
}
}
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
internal sealed class NullableAttribute : Attribute
{
public readonly byte[] NullableFlags;
public NullableAttribute(byte P_0)
{
NullableFlags = new byte[1] { P_0 };
}
public NullableAttribute(byte[] P_0)
{
NullableFlags = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
internal sealed class NullableContextAttribute : Attribute
{
public readonly byte Flag;
public NullableContextAttribute(byte P_0)
{
Flag = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
[CreateAssetMenu(fileName = "FemmployeePart", menuName = "FemmployeeMod/FemmployeePart", order = 1)]
public class FemmployeePart : ScriptableObject
{
public Mesh mesh;
public Material[] materials;
}
[CreateAssetMenu(fileName = "FemmployeePartsInitializationList", menuName = "FemmployeeMod/FemmployeePartsInitializationList", order = 1)]
public class FemmployeePartsInitializationList : ScriptableObject
{
public List<FemmployeePart[]> fullPartsList = new List<FemmployeePart[]>();
public FemmployeePart[] headParts;
public FemmployeePart[] chestParts;
public FemmployeePart[] armsParts;
public FemmployeePart[] waistParts;
public FemmployeePart[] legsParts;
public void Awake()
{
fullPartsList.Add(headParts);
fullPartsList.Add(chestParts);
fullPartsList.Add(armsParts);
fullPartsList.Add(waistParts);
fullPartsList.Add(legsParts);
}
}
[Serializable]
public struct BlendshapeValuePair : INetworkSerializable, IEquatable<BlendshapeValuePair>
{
public float ShapeValue;
public int ShapeID;
public BlendshapeValuePair(float floatValue, int shapeID)
{
ShapeValue = floatValue;
ShapeID = shapeID;
}
public unsafe void NetworkSerialize<T>(BufferSerializer<T> serializer) where T : IReaderWriter
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
((BufferSerializer<float>*)(&serializer))->SerializeValue<float>(ref ShapeValue, default(ForPrimitives));
((BufferSerializer<int>*)(&serializer))->SerializeValue<int>(ref ShapeID, default(ForPrimitives));
}
public bool Equals(BlendshapeValuePair other)
{
return ShapeValue.Equals(other.ShapeValue) && ShapeID.Equals(other.ShapeID);
}
public override bool Equals(object obj)
{
if (obj is BlendshapeValuePair)
{
return Equals((BlendshapeValuePair)obj);
}
return false;
}
public override int GetHashCode()
{
int num = 17;
num = num * 23 + ShapeValue.GetHashCode();
return num * 23 + ShapeID.GetHashCode();
}
public static bool operator ==(BlendshapeValuePair left, BlendshapeValuePair right)
{
return left.Equals(right);
}
public static bool operator !=(BlendshapeValuePair left, BlendshapeValuePair right)
{
return !(left == right);
}
}
namespace FemmployeeMod
{
public class FemmployeeConfigUI : MonoBehaviour
{
public GameObject localFemmployeeGo;
public TMP_Dropdown[] regionDropdowns;
public TMP_Dropdown multiplierDropdown;
public FemmployeeUIMaterialSettings suitMaterialSettings;
public FemmployeeUIMaterialSettings skinMaterialSettings;
public Toggle multiplierToggle;
public List<FemmployeeUIWorker>[] AllSliders = new List<FemmployeeUIWorker>[5];
public bool isUIOpen;
public FemmployeeSuitPreview femmployeeSuitPreview;
public Slider previewSpinSlider;
public GameObject menuRoot;
public GameObject mainMenu;
public GameObject settingsMenu;
public int sliderMultiplier;
public bool isMultiplierEnabled;
public static FemmployeeConfigUI instance;
public void Awake()
{
SetupKeybindCallbacks();
for (int i = 0; i < AllSliders.Length; i++)
{
AllSliders[i] = new List<FemmployeeUIWorker>();
}
instance = this;
}
public void Start()
{
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Expected O, but got Unknown
if ((Object)(object)femmployeeSuitPreview == (Object)null)
{
GameObject val = (GameObject)Object.Instantiate(Assets.MainAssetBundle.LoadAsset("FemmployeeSuitPreviewPrefab.prefab"), new Vector3(400f, -100f, 400f), Quaternion.identity);
femmployeeSuitPreview = val.GetComponent<FemmployeeSuitPreview>();
femmployeeSuitPreview.previewSpinSlider = previewSpinSlider;
}
TMP_Dropdown[] array = regionDropdowns;
foreach (TMP_Dropdown val2 in array)
{
PopulateSliders(((Component)val2).GetComponent<FemmployeeUIWorker>());
}
sliderMultiplier = 1;
}
public void Update()
{
if (!isUIOpen)
{
return;
}
TMP_Dropdown[] array = regionDropdowns;
foreach (TMP_Dropdown val in array)
{
if (val.IsExpanded)
{
((Component)val).GetComponent<FemmployeeUIWorker>().targetElement.SetActive(false);
}
else
{
((Component)val).GetComponent<FemmployeeUIWorker>().targetElement.SetActive(true);
}
}
}
public void PopulateDropdowns()
{
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_0093: Expected O, but got Unknown
TMP_Dropdown[] array = regionDropdowns;
foreach (TMP_Dropdown val in array)
{
val.ClearOptions();
}
for (int j = 0; j < regionDropdowns.Length; j++)
{
if (j < femmployeeSuitPreview.settings.partsList.Count)
{
foreach (KeyValuePair<string, FemmployeePart> item in femmployeeSuitPreview.settings.partsList[j])
{
regionDropdowns[j].options.Add(new OptionData(item.Key));
}
}
else
{
FemmployeeModBase.mls.LogWarning((object)$"No parts found for region {j}");
}
}
}
public void SetMultiplier(int value)
{
for (int i = 0; i < 5; i++)
{
foreach (FemmployeeUIWorker item in AllSliders[i])
{
item.shapeSlider.maxValue = item.DefaultSliderMax * (float)value;
FemmployeeModBase.mls.LogInfo((object)$"Assisgned the value {item.shapeSlider.maxValue} to the slider {item.blendshapes[0]}");
}
}
}
public void PopulateSliders(FemmployeeUIWorker sender)
{
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_0082: Expected O, but got Unknown
foreach (Transform item in sender.targetElement.transform)
{
Transform val = item;
Object.Destroy((Object)(object)((Component)val).gameObject);
}
AllSliders[sender.objectID].Clear();
List<BlendshapeData> list = new List<BlendshapeData>();
GameObject val2 = (GameObject)Assets.MainAssetBundle.LoadAsset("BlendshapeSlider.prefab");
GameObject targetElement = sender.targetElement;
string[] array = new string[5] { "Head", "Chest", "Arms", "Waist", "Leg" };
SkinnedMeshRenderer[] bodyRegionMeshRenderers = femmployeeSuitPreview.settings.bodyRegionMeshRenderers;
foreach (SkinnedMeshRenderer val3 in bodyRegionMeshRenderers)
{
int originalRegionID = Array.IndexOf(femmployeeSuitPreview.settings.bodyRegionMeshRenderers, val3);
for (int j = 0; j < val3.sharedMesh.blendShapeCount; j++)
{
string blendShapeName = val3.sharedMesh.GetBlendShapeName(j);
string[] array2 = blendShapeName.Split('_');
if (array2.Length > 2 && int.TryParse(array2[1], out var _) && array2[2] == array[sender.objectID])
{
list.Add(new BlendshapeData
{
OriginalRegionID = originalRegionID,
ControllingRegionID = sender.objectID,
BlendshapeName = blendShapeName
});
}
}
}
foreach (BlendshapeData item2 in list)
{
FemmployeeModBase.mls.LogWarning((object)$"{item2.OriginalRegionID} {item2.ControllingRegionID} {item2.BlendshapeName}");
}
Dictionary<int, List<BlendshapeData>> dictionary = (from shape in list
group shape by shape.BlendshapeName.Split('_')[1]).ToDictionary((IGrouping<string, BlendshapeData> g) => int.Parse(g.Key), (IGrouping<string, BlendshapeData> g) => g.ToList());
foreach (KeyValuePair<int, List<BlendshapeData>> item3 in dictionary)
{
GameObject val4 = Object.Instantiate<GameObject>(val2, targetElement.transform);
FemmployeeUIWorker worker = val4.GetComponent<FemmployeeUIWorker>();
worker.configUI = this;
worker.blendshapes = item3.Value.ToArray();
((UnityEvent<float>)(object)worker.shapeSlider.onValueChanged).AddListener((UnityAction<float>)delegate
{
worker.SliderValueChange(1f);
});
worker.objectID = sender.objectID;
worker.shapeSlider.maxValue = worker.DefaultSliderMax * (float)sliderMultiplier;
int blendShapeIndex = femmployeeSuitPreview.settings.bodyRegionMeshRenderers[item3.Value[0].OriginalRegionID].sharedMesh.GetBlendShapeIndex(item3.Value[0].BlendshapeName);
FemmployeeModBase.mls.LogMessage((object)$"the shape Index of group {item3.Key} is {blendShapeIndex} here more data kek {item3.Value[0].BlendshapeName}");
worker.shapeSlider.value = femmployeeSuitPreview.settings.bodyRegionMeshRenderers[worker.objectID].GetBlendShapeWeight(blendShapeIndex);
string blendshapeName = item3.Value[0].BlendshapeName;
string text = Regex.Replace(blendshapeName, "_.*$", "");
worker.targetElement.GetComponent<TMP_Text>().text = text;
((Object)val4).name = $"BlendshapeSlider_{item3.Key}";
AllSliders[sender.objectID].Add(worker);
}
}
public void OnDestroy()
{
FemmployeeModBase.InputActionsInstance.FemmployeeUIToggle.performed -= FemmployeeUIToggle;
}
public void SetupKeybindCallbacks()
{
FemmployeeModBase.InputActionsInstance.FemmployeeUIToggle.performed += FemmployeeUIToggle;
}
public void FemmployeeUIToggle(CallbackContext UIOpenContext)
{
Femmployee femmployee = default(Femmployee);
if (((CallbackContext)(ref UIOpenContext)).performed && ((Component)GameNetworkManager.Instance.localPlayerController).TryGetComponent<Femmployee>(ref femmployee))
{
isUIOpen = !isUIOpen;
menuRoot.SetActive(isUIOpen);
mainMenu.SetActive(true);
settingsMenu.SetActive(false);
Cursor.lockState = (CursorLockMode)((!isUIOpen) ? 1 : 0);
Cursor.visible = isUIOpen;
GameNetworkManager.Instance.localPlayerController.disableLookInput = isUIOpen;
GameNetworkManager.Instance.localPlayerController.inTerminalMenu = isUIOpen;
}
}
public void ApplyChanges()
{
localFemmployeeGo.GetComponent<Femmployee>().settings.networkedSettings.ApplySettings();
localFemmployeeGo.GetComponent<Femmployee>().settings.networkedSettings.SaveSuitData();
}
public void ButtonTask(FemmployeeUIWorker sender)
{
sender.targetElement.SetActive(!sender.targetElement.activeSelf);
if (sender.shouldDisable)
{
GameObject[] disableList = sender.disableList;
foreach (GameObject val in disableList)
{
val.SetActive(false);
}
}
}
public void ToggleMultiplier(bool value, FemmployeeUIWorker sender)
{
isMultiplierEnabled = value;
GameObject targetElement = sender.targetElement;
if (targetElement != null)
{
targetElement.SetActive(value);
}
if (!value)
{
SetMultiplier(1);
sliderMultiplier = 1;
multiplierDropdown.value = 0;
}
}
public void ToggleTask(FemmployeeUIWorker sender)
{
if (sender.mode == 0)
{
ToggleMultiplier(((Component)sender).GetComponent<Toggle>().isOn, sender);
}
}
public void SetSliderMultiplier(int value)
{
sliderMultiplier = value + 1;
SetMultiplier(sliderMultiplier);
}
public void DropdownSelection(FemmployeeUIWorker sender, string selectionKeyName)
{
if (sender.mode == 0)
{
femmployeeSuitPreview.SetPreviewRegion(sender.objectID, selectionKeyName, localFemmployeeGo.GetComponent<Femmployee>());
PopulateSliders(sender);
}
if (sender.mode == 1 && isMultiplierEnabled)
{
SetSliderMultiplier(((Component)sender).GetComponent<TMP_Dropdown>().value);
}
}
public void SendColorData()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
femmployeeSuitPreview.SetMaterialSettings(suitMaterialSettings.colorValue, suitMaterialSettings.metallicValue, suitMaterialSettings.smoothnessValue, skinMaterialSettings.colorValue, skinMaterialSettings.metallicValue, skinMaterialSettings.smoothnessValue, localFemmployeeGo.GetComponent<Femmployee>());
}
}
public class FemmployeeSettings : MonoBehaviour
{
public PlayerControllerB controller;
public GameObject replacementModel;
public FemmployeePart[] previewBodyParts;
public SkinnedMeshRenderer[] bodyRegionMeshRenderers;
public NetworkedSettings networkedSettings;
public List<Dictionary<string, FemmployeePart>> partsList = new List<Dictionary<string, FemmployeePart>>();
public Dictionary<string, FemmployeePart> headPartsCollection = new Dictionary<string, FemmployeePart>();
public Dictionary<string, FemmployeePart> chestPartsCollection = new Dictionary<string, FemmployeePart>();
public Dictionary<string, FemmployeePart> armsPartsCollection = new Dictionary<string, FemmployeePart>();
public Dictionary<string, FemmployeePart> waistPartsCollection = new Dictionary<string, FemmployeePart>();
public Dictionary<string, FemmployeePart> legsPartsCollection = new Dictionary<string, FemmployeePart>();
public string suitName { get; set; } = "";
}
public class FemmployeeSuitPreview : MonoBehaviour
{
public Camera modelViewCamera;
public GameObject previewModel;
public FemmployeeSettings settings;
public Slider previewSpinSlider;
public void Update()
{
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
float value = previewSpinSlider.value;
Quaternion rotation = Quaternion.Euler(0f, value, 0f);
previewModel.transform.rotation = rotation;
}
public void LoadSaveData(Femmployee playerFemmployee)
{
//IL_03b7: Unknown result type (might be due to invalid IL or missing references)
//IL_046c: Unknown result type (might be due to invalid IL or missing references)
settings.bodyRegionMeshRenderers[0].sharedMesh = playerFemmployee.settings.partsList[0][playerFemmployee.settings.networkedSettings.headSync].mesh;
((Renderer)settings.bodyRegionMeshRenderers[0]).materials = playerFemmployee.settings.partsList[0][playerFemmployee.settings.networkedSettings.headSync].materials;
settings.bodyRegionMeshRenderers[1].sharedMesh = playerFemmployee.settings.partsList[1][playerFemmployee.settings.networkedSettings.chestSync].mesh;
((Renderer)settings.bodyRegionMeshRenderers[1]).materials = playerFemmployee.settings.partsList[1][playerFemmployee.settings.networkedSettings.chestSync].materials;
settings.bodyRegionMeshRenderers[2].sharedMesh = playerFemmployee.settings.partsList[2][playerFemmployee.settings.networkedSettings.armsSync].mesh;
((Renderer)settings.bodyRegionMeshRenderers[2]).materials = playerFemmployee.settings.partsList[2][playerFemmployee.settings.networkedSettings.armsSync].materials;
settings.bodyRegionMeshRenderers[3].sharedMesh = playerFemmployee.settings.partsList[3][playerFemmployee.settings.networkedSettings.waistSync].mesh;
((Renderer)settings.bodyRegionMeshRenderers[3]).materials = playerFemmployee.settings.partsList[3][playerFemmployee.settings.networkedSettings.waistSync].materials;
settings.bodyRegionMeshRenderers[4].sharedMesh = playerFemmployee.settings.partsList[4][playerFemmployee.settings.networkedSettings.legSync].mesh;
((Renderer)settings.bodyRegionMeshRenderers[4]).materials = playerFemmployee.settings.partsList[4][playerFemmployee.settings.networkedSettings.legSync].materials;
NetworkList<BlendshapeValuePair>[] array = new NetworkList<BlendshapeValuePair>[5]
{
playerFemmployee.settings.networkedSettings.headBlendshapeValues,
playerFemmployee.settings.networkedSettings.chestBlendshapeValues,
playerFemmployee.settings.networkedSettings.armsBlendshapeValues,
playerFemmployee.settings.networkedSettings.waistBlendshapeValues,
playerFemmployee.settings.networkedSettings.legsBlendshapeValues
};
for (int i = 0; i < 5; i++)
{
SkinnedMeshRenderer component = ((Component)settings.bodyRegionMeshRenderers[i]).GetComponent<SkinnedMeshRenderer>();
if ((Object)(object)component != (Object)null && component.sharedMesh.blendShapeCount > 0)
{
for (int j = 0; j < array[i].Count; j++)
{
component.SetBlendShapeWeight(i, array[i][j].ShapeValue);
}
}
}
SkinnedMeshRenderer[] bodyRegionMeshRenderers = settings.bodyRegionMeshRenderers;
foreach (SkinnedMeshRenderer val in bodyRegionMeshRenderers)
{
Material[] materials = ((Renderer)val).materials;
foreach (Material val2 in materials)
{
if (((Object)val2).name == "Suit (Instance)")
{
val2.color = playerFemmployee.settings.networkedSettings.suitMaterialValues.Value.colorValue;
val2.SetFloat("_Metallic", playerFemmployee.settings.networkedSettings.suitMaterialValues.Value.metallicValue);
val2.SetFloat("_Smoothness", playerFemmployee.settings.networkedSettings.suitMaterialValues.Value.smoothnessValue);
}
}
Material[] materials2 = ((Renderer)val).materials;
foreach (Material val3 in materials2)
{
if (((Object)val3).name == "Skin (Instance)")
{
val3.color = playerFemmployee.settings.networkedSettings.skinMaterialValues.Value.colorValue;
val3.SetFloat("_Metallic", playerFemmployee.settings.networkedSettings.skinMaterialValues.Value.metallicValue);
val3.SetFloat("_Smoothness", playerFemmployee.settings.networkedSettings.skinMaterialValues.Value.smoothnessValue);
}
}
}
}
public void SetPreviewRegion(int dropdownID, string selectionKeyName, Femmployee playerFemmployee)
{
//IL_0143: Unknown result type (might be due to invalid IL or missing references)
//IL_0191: Unknown result type (might be due to invalid IL or missing references)
playerFemmployee.settings.previewBodyParts[dropdownID] = settings.partsList[dropdownID][selectionKeyName];
settings.bodyRegionMeshRenderers[dropdownID].sharedMesh = playerFemmployee.settings.previewBodyParts[dropdownID].mesh;
((Renderer)settings.bodyRegionMeshRenderers[dropdownID]).materials = playerFemmployee.settings.previewBodyParts[dropdownID].materials;
if (Tools.CheckIsServer())
{
switch (dropdownID)
{
case 0:
playerFemmployee.settings.networkedSettings.headSync = selectionKeyName;
break;
case 1:
playerFemmployee.settings.networkedSettings.chestSync = selectionKeyName;
break;
case 2:
playerFemmployee.settings.networkedSettings.armsSync = selectionKeyName;
break;
case 3:
playerFemmployee.settings.networkedSettings.waistSync = selectionKeyName;
break;
case 4:
playerFemmployee.settings.networkedSettings.legSync = selectionKeyName;
break;
default:
FemmployeeModBase.mls.LogWarning((object)"Invalid dropdown ID");
return;
}
}
else
{
playerFemmployee.settings.networkedSettings.SetNetworkVarServerRpc(dropdownID, selectionKeyName);
}
SetMaterialSettings(playerFemmployee.settings.networkedSettings.suitMaterialValues.Value.colorValue, playerFemmployee.settings.networkedSettings.suitMaterialValues.Value.metallicValue, playerFemmployee.settings.networkedSettings.suitMaterialValues.Value.smoothnessValue, playerFemmployee.settings.networkedSettings.skinMaterialValues.Value.colorValue, playerFemmployee.settings.networkedSettings.skinMaterialValues.Value.metallicValue, playerFemmployee.settings.networkedSettings.skinMaterialValues.Value.smoothnessValue, playerFemmployee);
}
public void SetBlendshape(int id, float value, BlendshapeData[] blendshapes, Femmployee playerFemmployee)
{
List<BlendshapeValuePair> list2 = new List<BlendshapeValuePair>();
List<BlendshapeValuePair> list3 = new List<BlendshapeValuePair>();
List<BlendshapeValuePair> list4 = new List<BlendshapeValuePair>();
List<BlendshapeValuePair> list5 = new List<BlendshapeValuePair>();
List<BlendshapeValuePair> list6 = new List<BlendshapeValuePair>();
for (int i = 0; i < blendshapes.Length; i++)
{
BlendshapeData blendshapeData = blendshapes[i];
int originalRegionID = blendshapeData.OriginalRegionID;
int blendShapeIndex = settings.bodyRegionMeshRenderers[originalRegionID].sharedMesh.GetBlendShapeIndex(blendshapeData.BlendshapeName);
if (blendShapeIndex == -1)
{
continue;
}
settings.bodyRegionMeshRenderers[originalRegionID].SetBlendShapeWeight(blendShapeIndex, value);
BlendshapeValuePair item = new BlendshapeValuePair(value, blendShapeIndex);
switch (originalRegionID)
{
case 0:
list2.Add(item);
break;
case 1:
list3.Add(item);
break;
case 2:
list4.Add(item);
break;
case 3:
list5.Add(item);
break;
case 4:
list6.Add(item);
break;
default:
FemmployeeModBase.mls.LogWarning((object)"Invalid region ID");
break;
}
if (Tools.CheckIsServer())
{
switch (originalRegionID)
{
case 0:
ClearList(playerFemmployee.settings.networkedSettings.headBlendshapeValues);
AddValuesToList(playerFemmployee.settings.networkedSettings.headBlendshapeValues, list2);
break;
case 1:
ClearList(playerFemmployee.settings.networkedSettings.chestBlendshapeValues);
AddValuesToList(playerFemmployee.settings.networkedSettings.chestBlendshapeValues, list3);
break;
case 2:
ClearList(playerFemmployee.settings.networkedSettings.armsBlendshapeValues);
AddValuesToList(playerFemmployee.settings.networkedSettings.armsBlendshapeValues, list4);
break;
case 3:
ClearList(playerFemmployee.settings.networkedSettings.waistBlendshapeValues);
AddValuesToList(playerFemmployee.settings.networkedSettings.waistBlendshapeValues, list5);
break;
case 4:
ClearList(playerFemmployee.settings.networkedSettings.legsBlendshapeValues);
AddValuesToList(playerFemmployee.settings.networkedSettings.legsBlendshapeValues, list6);
break;
}
}
else
{
if (1 == 0)
{
}
List<BlendshapeValuePair> blendshapeList = originalRegionID switch
{
0 => list2,
1 => list3,
2 => list4,
3 => list5,
4 => list6,
_ => new List<BlendshapeValuePair>(),
};
if (1 == 0)
{
}
var (shapeValues, shapeIDs) = ConvertBlendshapeListToArrays(blendshapeList);
playerFemmployee.settings.networkedSettings.SetBlendshapeNetworkVarServerRpc(originalRegionID, shapeValues, shapeIDs);
}
}
static void AddValuesToList(NetworkList<BlendshapeValuePair> list, List<BlendshapeValuePair> values)
{
foreach (BlendshapeValuePair value2 in values)
{
list.Add(value2);
}
}
static void ClearList(NetworkList<BlendshapeValuePair> list)
{
while (list.Count > 0)
{
list.RemoveAt(0);
}
}
}
private (float[] shapeValues, int[] shapeIDs) ConvertBlendshapeListToArrays(List<BlendshapeValuePair> blendshapeList)
{
int count = blendshapeList.Count;
float[] array = new float[count];
int[] array2 = new int[count];
for (int i = 0; i < count; i++)
{
array[i] = blendshapeList[i].ShapeValue;
array2[i] = blendshapeList[i].ShapeID;
}
return (array, array2);
}
public void SetMaterialSettings(Color suitColorValue, float suitMetallicValue, float suitSmoothnessValue, Color skinColorValue, float skinMetallicValue, float skinSmoothnessValue, Femmployee playerFemmployee)
{
//IL_0106: Unknown result type (might be due to invalid IL or missing references)
//IL_0109: Unknown result type (might be due to invalid IL or missing references)
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
SkinnedMeshRenderer[] bodyRegionMeshRenderers = settings.bodyRegionMeshRenderers;
foreach (SkinnedMeshRenderer val in bodyRegionMeshRenderers)
{
Material[] materials = ((Renderer)val).materials;
foreach (Material val2 in materials)
{
if (((Object)val2).name == "Suit (Instance)")
{
val2.color = suitColorValue;
val2.SetFloat("_Metallic", suitMetallicValue);
val2.SetFloat("_Smoothness", suitSmoothnessValue);
}
if (((Object)val2).name == "Skin (Instance)")
{
val2.color = skinColorValue;
val2.SetFloat("_Metallic", skinMetallicValue);
val2.SetFloat("_Smoothness", skinSmoothnessValue);
}
}
}
if (Tools.CheckIsServer())
{
playerFemmployee.settings.networkedSettings.SetMaterialData(suitColorValue, suitMetallicValue, suitSmoothnessValue, skinColorValue, skinMetallicValue, skinSmoothnessValue);
}
else
{
playerFemmployee.settings.networkedSettings.SetMaterialDataServerRpc(suitColorValue, suitMetallicValue, suitSmoothnessValue, skinColorValue, skinMetallicValue, skinSmoothnessValue);
}
}
}
public struct BlendshapeData
{
public int OriginalRegionID;
public int ControllingRegionID;
public string BlendshapeName;
}
public class FemmployeeUIMaterialSettings : MonoBehaviour
{
public FemmployeeConfigUI localFemmployeeConfigUI;
public Slider[] RGBSliders;
public Slider metallicSlider;
public Slider smoothnessSlider;
public Color colorValue;
public float metallicValue;
public float smoothnessValue;
public Color defaultColorValue;
public float defaultMetallicValue = 0f;
public float defaultSmoothnessValue = 0f;
public string materialName;
public void SetColorValue(float value)
{
colorValue.r = RGBSliders[0].value;
colorValue.g = RGBSliders[1].value;
colorValue.b = RGBSliders[2].value;
localFemmployeeConfigUI.SendColorData();
}
public void SetMetallicValue(float value)
{
metallicValue = metallicSlider.value;
localFemmployeeConfigUI.SendColorData();
}
public void SetSmoothnessSlider(float value)
{
smoothnessValue = smoothnessSlider.value;
localFemmployeeConfigUI.SendColorData();
}
public void ResetColorValue(bool value)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
colorValue = defaultColorValue;
RGBSliders[0].value = defaultColorValue.r;
RGBSliders[1].value = defaultColorValue.g;
RGBSliders[2].value = defaultColorValue.b;
}
public void ResetMetallicsSlider(bool value)
{
metallicValue = defaultMetallicValue;
metallicSlider.value = defaultMetallicValue;
}
public void ResetSmoothnessSlider(bool value)
{
smoothnessValue = defaultSmoothnessValue;
smoothnessSlider.value = defaultSmoothnessValue;
}
}
public class FemmployeeUIWorker : MonoBehaviour
{
public FemmployeeConfigUI configUI;
public int objectID;
public GameObject targetElement;
public bool shouldDisable;
public GameObject[] disableList;
public Slider shapeSlider;
public float DefaultSliderMax = 100f;
public BlendshapeData[] blendshapes;
public int mode;
public void OnDestroy()
{
if ((Object)(object)shapeSlider != (Object)null)
{
configUI.AllSliders[objectID].Remove(this);
}
}
public void ButtonTrigger()
{
configUI.ButtonTask(this);
}
public void DropdownTrigger(int selectionIndex)
{
TMP_Dropdown component = ((Component)this).GetComponent<TMP_Dropdown>();
configUI.DropdownSelection(this, component.options[component.value].text);
}
public void SliderValueChange(float value)
{
configUI.femmployeeSuitPreview.SetBlendshape(objectID, shapeSlider.value, blendshapes, configUI.localFemmployeeGo.GetComponent<Femmployee>());
}
public void ToggleInteract(bool toggle)
{
configUI.ToggleTask(this);
}
}
public class NetworkedSettings : NetworkBehaviour
{
public FemmployeeSettings settings;
private NetworkVariable<FixedString64Bytes> _headSync = new NetworkVariable<FixedString64Bytes>(default(FixedString64Bytes), (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0)
{
Value = FixedString64Bytes.op_Implicit("")
};
private NetworkVariable<FixedString64Bytes> _chestSync = new NetworkVariable<FixedString64Bytes>(default(FixedString64Bytes), (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0)
{
Value = FixedString64Bytes.op_Implicit("")
};
private NetworkVariable<FixedString64Bytes> _armsSync = new NetworkVariable<FixedString64Bytes>(default(FixedString64Bytes), (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0)
{
Value = FixedString64Bytes.op_Implicit("")
};
private NetworkVariable<FixedString64Bytes> _waistSync = new NetworkVariable<FixedString64Bytes>(default(FixedString64Bytes), (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0)
{
Value = FixedString64Bytes.op_Implicit("")
};
private NetworkVariable<FixedString64Bytes> _legSync = new NetworkVariable<FixedString64Bytes>(default(FixedString64Bytes), (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0)
{
Value = FixedString64Bytes.op_Implicit("")
};
public NetworkList<BlendshapeValuePair> headBlendshapeValues = new NetworkList<BlendshapeValuePair>();
public NetworkList<BlendshapeValuePair> chestBlendshapeValues = new NetworkList<BlendshapeValuePair>();
public NetworkList<BlendshapeValuePair> armsBlendshapeValues = new NetworkList<BlendshapeValuePair>();
public NetworkList<BlendshapeValuePair> waistBlendshapeValues = new NetworkList<BlendshapeValuePair>();
public NetworkList<BlendshapeValuePair> legsBlendshapeValues = new NetworkList<BlendshapeValuePair>();
public NetworkVariable<NetworkMaterialProperties> suitMaterialValues = new NetworkVariable<NetworkMaterialProperties>((NetworkMaterialProperties)null, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);
public NetworkVariable<NetworkMaterialProperties> skinMaterialValues = new NetworkVariable<NetworkMaterialProperties>((NetworkMaterialProperties)null, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0);
public NetworkVariable<int> playerID;
public NetworkVariable<bool> hasInitialized;
public FemmployeeConfigUI localUI;
public string headSync
{
get
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
FixedString64Bytes value = _headSync.Value;
return ((FixedString64Bytes)(ref value)).Value;
}
internal set
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
_headSync.Value = new FixedString64Bytes(value);
}
}
public string chestSync
{
get
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
FixedString64Bytes value = _chestSync.Value;
return ((FixedString64Bytes)(ref value)).Value;
}
internal set
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
_chestSync.Value = new FixedString64Bytes(value);
}
}
public string armsSync
{
get
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
FixedString64Bytes value = _armsSync.Value;
return ((FixedString64Bytes)(ref value)).Value;
}
internal set
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
_armsSync.Value = new FixedString64Bytes(value);
}
}
public string waistSync
{
get
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
FixedString64Bytes value = _waistSync.Value;
return ((FixedString64Bytes)(ref value)).Value;
}
internal set
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
_waistSync.Value = new FixedString64Bytes(value);
}
}
public string legSync
{
get
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
FixedString64Bytes value = _legSync.Value;
return ((FixedString64Bytes)(ref value)).Value;
}
internal set
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
_legSync.Value = new FixedString64Bytes(value);
}
}
public override void OnNetworkSpawn()
{
((NetworkBehaviour)this).OnNetworkSpawn();
if (Tools.CheckIsServer())
{
playerID.Value = -1;
suitMaterialValues.Value = new NetworkMaterialProperties();
skinMaterialValues.Value = new NetworkMaterialProperties();
}
((MonoBehaviour)this).StartCoroutine(waitForIDSync());
}
public IEnumerator waitForIDSync()
{
yield return (object)new WaitUntil((Func<bool>)(() => playerID.Value != -1));
((MonoBehaviour)this).StartCoroutine(WaitForFemmployeeComponent(playerID.Value));
}
[ClientRpc]
public void AssignValuesClientRpc(int _playerID)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1272767705u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, _playerID);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1272767705u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
{
((MonoBehaviour)this).StartCoroutine(WaitForFemmployeeComponent(_playerID));
}
}
}
private IEnumerator WaitForFemmployeeComponent(int _playerID)
{
yield return (object)new WaitUntil((Func<bool>)(() => (Object)(object)((Component)StartOfRound.Instance.allPlayerScripts[_playerID]).GetComponent<Femmployee>() != (Object)null));
AssignValuesToComponents(_playerID);
}
public void AssignValuesToComponents(int _playerID)
{
settings = ((Component)StartOfRound.Instance.allPlayerScripts[_playerID]).GetComponent<Femmployee>().settings;
settings.networkedSettings = this;
((Object)this).name = ((Object)this).name + " || Player: " + _playerID;
localUI = ((Component)StartOfRound.Instance.allPlayerScripts[playerID.Value]).GetComponent<Femmployee>().localModdedUI;
if (Tools.CheckIsServer())
{
headSync = ((Object)settings.bodyRegionMeshRenderers[0].sharedMesh).name;
chestSync = ((Object)settings.bodyRegionMeshRenderers[1].sharedMesh).name;
armsSync = ((Object)settings.bodyRegionMeshRenderers[2].sharedMesh).name;
waistSync = ((Object)settings.bodyRegionMeshRenderers[3].sharedMesh).name;
legSync = ((Object)settings.bodyRegionMeshRenderers[4].sharedMesh).name;
hasInitialized.Value = true;
}
if ((Object)(object)settings.controller == (Object)(object)GameNetworkManager.Instance.localPlayerController && File.Exists(FemmployeeModBase.saveFilePath))
{
LoadSuitData(SuitDataParser(File.ReadAllText(FemmployeeModBase.saveFilePath)));
}
else
{
FemmployeeModBase.mls.LogWarning((object)"Suit data file not found.");
}
((MonoBehaviour)this).StartCoroutine(waitToAssign());
}
public IEnumerator waitToAssign()
{
yield return (object)new WaitForSeconds(0.5f);
ApplySettings();
}
[ServerRpc(RequireOwnership = false)]
public void SetNetworkVarServerRpc(int id, string value)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1759863977u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, id);
bool flag = value != null;
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives));
if (flag)
{
((FastBufferWriter)(ref val2)).WriteValueSafe(value, false);
}
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1759863977u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
switch (id)
{
case 0:
headSync = value;
break;
case 1:
chestSync = value;
break;
case 2:
armsSync = value;
break;
case 3:
waistSync = value;
break;
case 4:
legSync = value;
break;
default:
FemmployeeModBase.mls.LogWarning((object)"Invalid dropdown ID");
break;
}
}
}
public void ApplySettings()
{
if (((NetworkBehaviour)this).IsServer)
{
ApplySettingsClientRpc();
}
else
{
ApplySettingsServerRpc();
}
}
[ServerRpc(RequireOwnership = false)]
public void ApplySettingsServerRpc()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2348116511u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2348116511u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
ApplySettingsClientRpc();
}
}
}
[ClientRpc]
public void ApplySettingsClientRpc()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2903334129u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2903334129u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
{
((Component)StartOfRound.Instance.allPlayerScripts[playerID.Value]).GetComponent<Femmployee>().ApplySwapRegions();
}
}
}
[ServerRpc(RequireOwnership = false)]
public void SetBlendshapeNetworkVarServerRpc(int id, float[] shapeValues, int[] shapeIDs)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_012f: Unknown result type (might be due to invalid IL or missing references)
//IL_0139: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_011f: Unknown result type (might be due to invalid IL or missing references)
//IL_0104: Unknown result type (might be due to invalid IL or missing references)
//IL_010a: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1024183679u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, id);
bool flag = shapeValues != null;
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives));
if (flag)
{
((FastBufferWriter)(ref val2)).WriteValueSafe<float>(shapeValues, default(ForPrimitives));
}
bool flag2 = shapeIDs != null;
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag2, default(ForPrimitives));
if (flag2)
{
((FastBufferWriter)(ref val2)).WriteValueSafe<int>(shapeIDs, default(ForPrimitives));
}
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1024183679u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
FemmployeeModBase.mls.LogWarning((object)$"debugging ShapeValues for regionID {id}");
foreach (float num in shapeValues)
{
FemmployeeModBase.mls.LogWarning((object)$"{num}");
}
FemmployeeModBase.mls.LogWarning((object)" ");
FemmployeeModBase.mls.LogWarning((object)$"debugging shapeIDs for regionID {id}");
foreach (int num2 in shapeIDs)
{
FemmployeeModBase.mls.LogWarning((object)$"{num2}");
}
FemmployeeModBase.mls.LogWarning((object)" ");
FemmployeeModBase.mls.LogWarning((object)" ");
FemmployeeModBase.mls.LogWarning((object)"|||||| NEW LINE |||||||");
FemmployeeModBase.mls.LogWarning((object)" ");
FemmployeeModBase.mls.LogWarning((object)" ");
switch (id)
{
case 0:
ClearList(headBlendshapeValues);
AddValuesToList(headBlendshapeValues, shapeValues, shapeIDs);
break;
case 1:
ClearList(chestBlendshapeValues);
AddValuesToList(chestBlendshapeValues, shapeValues, shapeIDs);
break;
case 2:
ClearList(armsBlendshapeValues);
AddValuesToList(armsBlendshapeValues, shapeValues, shapeIDs);
break;
case 3:
ClearList(waistBlendshapeValues);
AddValuesToList(waistBlendshapeValues, shapeValues, shapeIDs);
break;
case 4:
ClearList(legsBlendshapeValues);
AddValuesToList(legsBlendshapeValues, shapeValues, shapeIDs);
break;
}
}
static void AddValuesToList(NetworkList<BlendshapeValuePair> list, float[] values, int[] ids)
{
for (int k = 0; k < values.Length; k++)
{
list.Add(new BlendshapeValuePair(values[k], ids[k]));
}
}
static void ClearList(NetworkList<BlendshapeValuePair> list)
{
while (list.Count > 0)
{
list.RemoveAt(0);
}
}
}
[ServerRpc(RequireOwnership = false)]
public void SetMaterialDataServerRpc(Color suitColorValue, float suitMetallicValue, float suitSmoothnessValue, Color skinColorValue, float skinMetallicValue, float skinSmoothnessValue)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_0112: Unknown result type (might be due to invalid IL or missing references)
//IL_011c: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
//IL_0102: Unknown result type (might be due to invalid IL or missing references)
//IL_0143: Unknown result type (might be due to invalid IL or missing references)
//IL_0147: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1865529678u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe(ref suitColorValue);
((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref suitMetallicValue, default(ForPrimitives));
((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref suitSmoothnessValue, default(ForPrimitives));
((FastBufferWriter)(ref val2)).WriteValueSafe(ref skinColorValue);
((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref skinMetallicValue, default(ForPrimitives));
((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref skinSmoothnessValue, default(ForPrimitives));
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1865529678u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
SetMaterialData(suitColorValue, skinMetallicValue, suitSmoothnessValue, skinColorValue, skinMetallicValue, skinSmoothnessValue);
}
}
}
public void SetMaterialData(Color suitColorValue, float suitMetallicValue, float suitSmoothnessValue, Color skinColorValue, float skinMetallicValue, float skinSmoothnessValue)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
NetworkMaterialProperties value = new NetworkMaterialProperties
{
colorValue = skinColorValue,
metallicValue = skinMetallicValue,
smoothnessValue = skinSmoothnessValue
};
NetworkMaterialProperties value2 = new NetworkMaterialProperties
{
colorValue = suitColorValue,
metallicValue = suitMetallicValue,
smoothnessValue = suitSmoothnessValue
};
suitMaterialValues.Value = value2;
skinMaterialValues.Value = value;
}
public void SaveSuitData()
{
List<FemmployeeUIWorker>[] array = new List<FemmployeeUIWorker>[5];
for (int i = 0; i < 5; i++)
{
array[i] = new List<FemmployeeUIWorker>();
foreach (FemmployeeUIWorker item in localUI.AllSliders[i])
{
if (item.objectID == i)
{
array[i].Add(item);
}
}
}
Femmployee.FemmployeeSaveData femmployeeSaveData = new Femmployee.FemmployeeSaveData
{
PartsList = new Femmployee.PartsList
{
HeadSync = headSync,
ChestSync = chestSync,
ArmsSync = armsSync,
WaistSync = waistSync,
LegSync = legSync
},
SliderValues =
{
{
"Head Sliders",
Tools.RetriveSliderData(array[0])
},
{
"Chest Sliders",
Tools.RetriveSliderData(array[1])
},
{
"Arms Sliders",
Tools.RetriveSliderData(array[2])
},
{
"Waist Sliders",
Tools.RetriveSliderData(array[3])
},
{
"Legs Sliders",
Tools.RetriveSliderData(array[4])
}
},
MultiplierValue = localUI.sliderMultiplier,
Multiplier = localUI.isMultiplierEnabled,
suitMaterialData = new Femmployee.MaterialData
{
colorValueR = suitMaterialValues.Value.colorValue.r,
colorValueG = suitMaterialValues.Value.colorValue.g,
colorValueB = suitMaterialValues.Value.colorValue.b,
metallicValue = suitMaterialValues.Value.metallicValue,
smoothnessValue = suitMaterialValues.Value.smoothnessValue
},
skinMaterialData = new Femmployee.MaterialData
{
colorValueR = skinMaterialValues.Value.colorValue.r,
colorValueG = skinMaterialValues.Value.colorValue.g,
colorValueB = skinMaterialValues.Value.colorValue.b,
metallicValue = skinMaterialValues.Value.metallicValue,
smoothnessValue = skinMaterialValues.Value.smoothnessValue
}
};
string contents = JsonConvert.SerializeObject((object)femmployeeSaveData, (Formatting)(FemmployeeModBase.useSaveFileFormatting.Value ? 1 : 0));
File.WriteAllText(FemmployeeModBase.saveFilePath, contents);
}
public Femmployee.FemmployeeSaveData SuitDataParser(string _suitData)
{
Femmployee.FemmployeeSaveData femmployeeSaveData = JsonConvert.DeserializeObject<Femmployee.FemmployeeSaveData>(_suitData);
int num = (localUI.isMultiplierEnabled ? (localUI.sliderMultiplier * 100) : 100);
Femmployee.FemmployeeSaveData femmployeeSaveData2 = femmployeeSaveData;
foreach (KeyValuePair<string, Dictionary<string, float>> sliderValue in femmployeeSaveData2.SliderValues)
{
foreach (KeyValuePair<string, float> item in sliderValue.Value)
{
Mathf.Clamp(item.Value, 0f, (float)num);
}
}
return femmployeeSaveData2;
}
public void LoadSuitData(Femmployee.FemmployeeSaveData suitData)
{
//IL_03bb: Unknown result type (might be due to invalid IL or missing references)
//IL_03f7: Unknown result type (might be due to invalid IL or missing references)
//IL_03f9: Unknown result type (might be due to invalid IL or missing references)
//IL_03fd: Unknown result type (might be due to invalid IL or missing references)
//IL_0439: Unknown result type (might be due to invalid IL or missing references)
//IL_043b: Unknown result type (might be due to invalid IL or missing references)
//IL_043e: Unknown result type (might be due to invalid IL or missing references)
//IL_0456: Unknown result type (might be due to invalid IL or missing references)
string[] array = new string[5] { "HeadSync", "ChestSync", "ArmsSync", "WaistSync", "LegSync" };
if ((Object)(object)settings.controller == (Object)(object)GameNetworkManager.Instance.localPlayerController)
{
for (int i = 0; i < array.Length; i++)
{
string partSync = (string)suitData.PartsList.GetType().GetProperty(array[i]).GetValue(suitData.PartsList);
localUI.regionDropdowns[i].value = localUI.regionDropdowns[i].options.FindIndex((OptionData option) => option.text == partSync);
}
localUI.isMultiplierEnabled = suitData.Multiplier;
localUI.sliderMultiplier = suitData.MultiplierValue;
localUI.multiplierDropdown.value = suitData.MultiplierValue - 1;
localUI.multiplierToggle.isOn = suitData.Multiplier;
localUI.suitMaterialSettings.RGBSliders[0].value = suitData.suitMaterialData.colorValueR;
localUI.suitMaterialSettings.RGBSliders[1].value = suitData.suitMaterialData.colorValueG;
localUI.suitMaterialSettings.RGBSliders[2].value = suitData.suitMaterialData.colorValueB;
localUI.suitMaterialSettings.metallicSlider.value = suitData.suitMaterialData.metallicValue;
localUI.suitMaterialSettings.smoothnessSlider.value = suitData.suitMaterialData.smoothnessValue;
localUI.skinMaterialSettings.RGBSliders[0].value = suitData.skinMaterialData.colorValueR;
localUI.skinMaterialSettings.RGBSliders[1].value = suitData.skinMaterialData.colorValueG;
localUI.skinMaterialSettings.RGBSliders[2].value = suitData.skinMaterialData.colorValueB;
localUI.skinMaterialSettings.metallicSlider.value = suitData.skinMaterialData.metallicValue;
localUI.skinMaterialSettings.smoothnessSlider.value = suitData.skinMaterialData.smoothnessValue;
for (int j = 0; j < 5; j++)
{
string key = array[j].Replace("Sync", "") + " Sliders";
foreach (FemmployeeUIWorker item in localUI.AllSliders[j])
{
if (item.objectID == j)
{
item.shapeSlider.maxValue = item.DefaultSliderMax * (float)suitData.MultiplierValue;
item.shapeSlider.value = suitData.SliderValues[key][item.blendshapes[0].BlendshapeName];
}
}
}
}
if (Tools.CheckIsServer())
{
headSync = suitData.PartsList.HeadSync;
chestSync = suitData.PartsList.ChestSync;
armsSync = suitData.PartsList.ArmsSync;
waistSync = suitData.PartsList.WaistSync;
legSync = suitData.PartsList.LegSync;
Color val = default(Color);
val.r = suitData.suitMaterialData.colorValueR;
val.g = suitData.suitMaterialData.colorValueG;
val.b = suitData.suitMaterialData.colorValueB;
Color suitColorValue = val;
val = default(Color);
val.r = suitData.skinMaterialData.colorValueR;
val.g = suitData.skinMaterialData.colorValueG;
val.b = suitData.skinMaterialData.colorValueB;
Color skinColorValue = val;
SetMaterialData(suitColorValue, suitData.suitMaterialData.metallicValue, suitData.suitMaterialData.smoothnessValue, skinColorValue, suitData.skinMaterialData.metallicValue, suitData.skinMaterialData.smoothnessValue);
}
else
{
string suitDataString = JsonConvert.SerializeObject((object)suitData, (Formatting)(FemmployeeModBase.useSaveFileFormatting.Value ? 1 : 0));
LoadSuitSaveDataServerRpc(suitDataString);
}
}
[ServerRpc(RequireOwnership = false)]
public void LoadSuitSaveDataServerRpc(string suitDataString)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
//IL_00d4: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2172041260u, val, (RpcDelivery)0);
bool flag = suitDataString != null;
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives));
if (flag)
{
((FastBufferWriter)(ref val2)).WriteValueSafe(suitDataString, false);
}
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2172041260u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
Femmployee.FemmployeeSaveData suitData = JsonConvert.DeserializeObject<Femmployee.FemmployeeSaveData>(suitDataString);
LoadSuitData(suitData);
}
}
public void SelfDestruct()
{
((Component)this).GetComponent<NetworkObject>().Despawn(true);
}
protected override void __initializeVariables()
{
if (_headSync == null)
{
throw new Exception("NetworkedSettings._headSync cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)_headSync).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)_headSync, "_headSync");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)_headSync);
if (_chestSync == null)
{
throw new Exception("NetworkedSettings._chestSync cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)_chestSync).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)_chestSync, "_chestSync");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)_chestSync);
if (_armsSync == null)
{
throw new Exception("NetworkedSettings._armsSync cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)_armsSync).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)_armsSync, "_armsSync");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)_armsSync);
if (_waistSync == null)
{
throw new Exception("NetworkedSettings._waistSync cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)_waistSync).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)_waistSync, "_waistSync");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)_waistSync);
if (_legSync == null)
{
throw new Exception("NetworkedSettings._legSync cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)_legSync).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)_legSync, "_legSync");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)_legSync);
if (headBlendshapeValues == null)
{
throw new Exception("NetworkedSettings.headBlendshapeValues cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)headBlendshapeValues).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)headBlendshapeValues, "headBlendshapeValues");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)headBlendshapeValues);
if (chestBlendshapeValues == null)
{
throw new Exception("NetworkedSettings.chestBlendshapeValues cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)chestBlendshapeValues).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)chestBlendshapeValues, "chestBlendshapeValues");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)chestBlendshapeValues);
if (armsBlendshapeValues == null)
{
throw new Exception("NetworkedSettings.armsBlendshapeValues cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)armsBlendshapeValues).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)armsBlendshapeValues, "armsBlendshapeValues");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)armsBlendshapeValues);
if (waistBlendshapeValues == null)
{
throw new Exception("NetworkedSettings.waistBlendshapeValues cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)waistBlendshapeValues).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)waistBlendshapeValues, "waistBlendshapeValues");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)waistBlendshapeValues);
if (legsBlendshapeValues == null)
{
throw new Exception("NetworkedSettings.legsBlendshapeValues cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)legsBlendshapeValues).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)legsBlendshapeValues, "legsBlendshapeValues");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)legsBlendshapeValues);
if (suitMaterialValues == null)
{
throw new Exception("NetworkedSettings.suitMaterialValues cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)suitMaterialValues).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)suitMaterialValues, "suitMaterialValues");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)suitMaterialValues);
if (skinMaterialValues == null)
{
throw new Exception("NetworkedSettings.skinMaterialValues cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)skinMaterialValues).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)skinMaterialValues, "skinMaterialValues");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)skinMaterialValues);
if (playerID == null)
{
throw new Exception("NetworkedSettings.playerID cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)playerID).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)playerID, "playerID");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)playerID);
if (hasInitialized == null)
{
throw new Exception("NetworkedSettings.hasInitialized cannot be null. All NetworkVariableBase instances must be initialized.");
}
((NetworkVariableBase)hasInitialized).Initialize((NetworkBehaviour)(object)this);
((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)hasInitialized, "hasInitialized");
base.NetworkVariableFields.Add((NetworkVariableBase)(object)hasInitialized);
((NetworkBehaviour)this).__initializeVariables();
}
[RuntimeInitializeOnLoadMethod]
internal static void InitializeRPCS_NetworkedSettings()
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Expected O, but got Unknown
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Expected O, but got Unknown
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Expected O, but got Unknown
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Expected O, but got Unknown
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Expected O, but got Unknown
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00bd: Expected O, but got Unknown
NetworkManager.__rpc_func_table.Add(1272767705u, new RpcReceiveHandler(__rpc_handler_1272767705));
NetworkManager.__rpc_func_table.Add(1759863977u, new RpcReceiveHandler(__rpc_handler_1759863977));
NetworkManager.__rpc_func_table.Add(2348116511u, new RpcReceiveHandler(__rpc_handler_2348116511));
NetworkManager.__rpc_func_table.Add(2903334129u, new RpcReceiveHandler(__rpc_handler_2903334129));
NetworkManager.__rpc_func_table.Add(1024183679u, new RpcReceiveHandler(__rpc_handler_1024183679));
NetworkManager.__rpc_func_table.Add(1865529678u, new RpcReceiveHandler(__rpc_handler_1865529678));
NetworkManager.__rpc_func_table.Add(2172041260u, new RpcReceiveHandler(__rpc_handler_2172041260));
}
private static void __rpc_handler_1272767705(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
int num = default(int);
ByteUnpacker.ReadValueBitPacked(reader, ref num);
target.__rpc_exec_stage = (__RpcExecStage)2;
((NetworkedSettings)(object)target).AssignValuesClientRpc(num);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_1759863977(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
int id = default(int);
ByteUnpacker.ReadValueBitPacked(reader, ref id);
bool flag = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives));
string value = null;
if (flag)
{
((FastBufferReader)(ref reader)).ReadValueSafe(ref value, false);
}
target.__rpc_exec_stage = (__RpcExecStage)1;
((NetworkedSettings)(object)target).SetNetworkVarServerRpc(id, value);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_2348116511(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
target.__rpc_exec_stage = (__RpcExecStage)1;
((NetworkedSettings)(object)target).ApplySettingsServerRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_2903334129(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
target.__rpc_exec_stage = (__RpcExecStage)2;
((NetworkedSettings)(object)target).ApplySettingsClientRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_1024183679(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
int id = default(int);
ByteUnpacker.ReadValueBitPacked(reader, ref id);
bool flag = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives));
float[] shapeValues = null;
if (flag)
{
((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref shapeValues, default(ForPrimitives));
}
bool flag2 = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag2, default(ForPrimitives));
int[] shapeIDs = null;
if (flag2)
{
((FastBufferReader)(ref reader)).ReadValueSafe<int>(ref shapeIDs, default(ForPrimitives));
}
target.__rpc_exec_stage = (__RpcExecStage)1;
((NetworkedSettings)(object)target).SetBlendshapeNetworkVarServerRpc(id, shapeValues, shapeIDs);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_1865529678(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Unknown result type (might be due to invalid IL or missing references)
//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
Color suitColorValue = default(Color);
((FastBufferReader)(ref reader)).ReadValueSafe(ref suitColorValue);
float suitMetallicValue = default(float);
((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref suitMetallicValue, default(ForPrimitives));
float suitSmoothnessValue = default(float);
((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref suitSmoothnessValue, default(ForPrimitives));
Color skinColorValue = default(Color);
((FastBufferReader)(ref reader)).ReadValueSafe(ref skinColorValue);
float skinMetallicValue = default(float);
((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref skinMetallicValue, default(ForPrimitives));
float skinSmoothnessValue = default(float);
((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref skinSmoothnessValue, default(ForPrimitives));
target.__rpc_exec_stage = (__RpcExecStage)1;
((NetworkedSettings)(object)target).SetMaterialDataServerRpc(suitColorValue, suitMetallicValue, suitSmoothnessValue, skinColorValue, skinMetallicValue, skinSmoothnessValue);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_2172041260(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_007b: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
bool flag = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives));
string suitDataString = null;
if (flag)
{
((FastBufferReader)(ref reader)).ReadValueSafe(ref suitDataString, false);
}
target.__rpc_exec_stage = (__RpcExecStage)1;
((NetworkedSettings)(object)target).LoadSuitSaveDataServerRpc(suitDataString);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
protected internal override string __getTypeName()
{
return "NetworkedSettings";
}
}
public static class Tools
{
public static void LogAll(object obj)
{
Type type = obj.GetType();
string name = type.Name;
FieldInfo[] fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public);
FieldInfo[] array = fields;
foreach (FieldInfo fieldInfo in array)
{
FemmployeeModBase.mls.LogWarning((object)$"Class: {name}, Variable: {fieldInfo.Name}, Value: {fieldInfo.GetValue(obj)}");
}
}
public static bool CheckIsServer()
{
if (NetworkManager.Singleton.IsServer)
{
return true;
}
return false;
}
public static Dictionary<string, float> RetriveSliderData(List<FemmployeeUIWorker> sliders)
{
Dictionary<string, float> dictionary = new Dictionary<string, float>();
foreach (FemmployeeUIWorker slider in sliders)
{
if (!dictionary.ContainsKey(slider.blendshapes[0].BlendshapeName))
{
dictionary.Add(slider.blendshapes[0].BlendshapeName, slider.shapeSlider.value);
}
}
return dictionary;
}
}
}
namespace ModelReplacement
{
public class Femmployee : BodyReplacementBase
{
public class FemmployeeSaveData
{
public PartsList PartsList { get; set; }
public Dictionary<string, Dictionary<string, float>> SliderValues { get; set; } = new Dictionary<string, Dictionary<string, float>>();
public int MultiplierValue { get; set; }
public bool Multiplier { get; set; }
public MaterialData suitMaterialData { get; set; }
public MaterialData skinMaterialData { get; set; }
}
public class PartsList
{
public string HeadSync { get; set; }
public string ChestSync { get; set; }
public string ArmsSync { get; set; }
public string WaistSync { get; set; }
public string LegSync { get; set; }
}
public class MaterialData
{
public float colorValueR { get; set; }
public float colorValueG { get; set; }
public float colorValueB { get; set; }
public float metallicValue { get; set; }
public float smoothnessValue { get; set; }
}
public FemmployeeSettings settings;
public FemmployeeConfigUI localModdedUI;
protected override GameObject LoadAssetsAndReturnModel()
{
string text = "Femmployee";
return Assets.MainAssetBundle.LoadAsset<GameObject>(text);
}
protected override void Awake()
{
((BodyReplacementBase)this).Awake();
}
protected override void OnDestroy()
{
((BodyReplacementBase)this).OnDestroy();
if (Tools.CheckIsServer())
{
settings.networkedSettings.SelfDestruct();
}
}
protected override void Start()
{
settings = base.replacementModel.GetComponent<FemmployeeSettings>();
settings.controller = ((BodyReplacementBase)this).controller;
settings.replacementModel = base.replacementModel;
settings.suitName = ((BodyReplacementBase)this).suitName;
if (Tools.CheckIsServer())
{
GameObject val = Object.Instantiate<GameObject>(FemmployeeModBase.networkedSettingsGo);
NetworkObject component = val.GetComponent<NetworkObject>();
NetworkedSettings component2 = val.GetComponent<NetworkedSettings>();
component.Spawn(false);
component.TrySetParent(base.replacementModel.gameObject, false);
component2.playerID.Value = (int)((BodyReplacementBase)this).controller.playerClientId;
}
localModdedUI = Object.FindObjectOfType<FemmployeeConfigUI>();
InitializeParts();
if (!((Object)(object)((BodyReplacementBase)this).controller != (Object)(object)GameNetworkManager.Instance.localPlayerController))
{
localModdedUI.femmployeeSuitPreview.settings.partsList = settings.partsList;
localModdedUI.localFemmployeeGo = ((Component)this).gameObject;
localModdedUI.PopulateDropdowns();
((MonoBehaviour)this).StartCoroutine(WaitForNetworkSettingsInitialization());
}
}
private IEnumerator WaitForNetworkSettingsInitialization()
{
yield return (object)new WaitUntil((Func<bool>)(() => (Object)(object)settings.networkedSettings != (Object)null));
yield return (object)new WaitUntil((Func<bool>)(() => settings.networkedSettings.hasInitialized.Value));
yield return (object)new WaitForSeconds(1f);
localModdedUI.femmployeeSuitPreview.LoadSaveData(this);
}
private void InitializeParts()
{
ScriptableObject[] array = Assets.MainAssetBundle.LoadAllAssets<ScriptableObject>();
ScriptableObject[] array2 = array;
foreach (ScriptableObject val in array2)
{
if (!(val is FemmployeePartsInitializationList femmployeePartsInitializationList))
{
continue;
}
for (int j = 0; j < femmployeePartsInitializationList.fullPartsList.Count; j++)
{
Dictionary<string, FemmployeePart> dictionary = new Dictionary<string, FemmployeePart>();
FemmployeePart[] array3 = femmployeePartsInitializationList.fullPartsList[j];
foreach (FemmployeePart femmployeePart in array3)
{
dictionary.Add(((Object)femmployeePart).name, femmployeePart);
}
settings.partsList.Add(dictionary);
}
}
}
public void ApplySwapRegions()
{
int num = (localModdedUI.isMultiplierEnabled ? (localModdedUI.sliderMultiplier * 100) : 100);
ApplyMeshesAndMaterials();
List<NetworkList<BlendshapeValuePair>> list = new List<NetworkList<BlendshapeValuePair>>
{
settings.networkedSettings.headBlendshapeValues,
settings.networkedSettings.chestBlendshapeValues,
settings.networkedSettings.armsBlendshapeValues,
settings.networkedSettings.waistBlendshapeValues,
settings.networkedSettings.legsBlendshapeValues
};
for (int i = 0; i < list.Count; i++)
{
SkinnedMeshRenderer val = settings.bodyRegionMeshRenderers[i];
foreach (BlendshapeValuePair item in list[i])
{
float num2 = Mathf.Clamp(item.ShapeValue, 0f, (float)num);
val.SetBlendShapeWeight(item.ShapeID, num2);
}
}
ApplyMaterialProperties();
}
private void ApplyMeshesAndMaterials()
{
for (int i = 0; i < settings.bodyRegionMeshRenderers.Length; i++)
{
settings.bodyRegionMeshRenderers[i].sharedMesh = settings.partsList[i][GetSyncValue(i)].mesh;
((Renderer)settings.bodyRegionMeshRenderers[i]).materials = settings.partsList[i][GetSyncValue(i)].materials;
}
}
private string GetSyncValue(int index)
{
return index switch
{
0 => settings.networkedSettings.headSync,
1 => settings.networkedSettings.chestSync,
2 => settings.networkedSettings.armsSync,
3 => settings.networkedSettings.waistSync,
4 => settings.networkedSettings.legSync,
_ => string.Empty,
};
}
private void ApplyMaterialProperties()
{
//IL_0060: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
SkinnedMeshRenderer[] bodyRegionMeshRenderers = settings.bodyRegionMeshRenderers;
foreach (SkinnedMeshRenderer val in bodyRegionMeshRenderers)
{
Material[] materials = ((Renderer)val).materials;
foreach (Material val2 in materials)
{
if (((Object)val2).name == "Suit (Instance)")
{
val2.color = settings.networkedSettings.suitMaterialValues.Value.colorValue;
val2.SetFloat("_Metallic", settings.networkedSettings.suitMaterialValues.Value.metallicValue);
val2.SetFloat("_Smoothness", settings.networkedSettings.suitMaterialValues.Value.smoothnessValue);
}
if (((Object)val2).name == "Skin (Instance)")
{
val2.color = settings.networkedSettings.skinMaterialValues.Value.colorValue;
val2.SetFloat("_Metallic", settings.networkedSettings.skinMaterialValues.Value.metallicValue);
val2.SetFloat("_Smoothness", settings.networkedSettings.skinMaterialValues.Value.smoothnessValue);
}
}
}
}
}
[BepInPlugin("com.TiltedHat.FemmployeeMod", "Femmployee Mod", "1.0.2")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class FemmployeeModBase : BaseUnityPlugin
{
public static FemmployeeModBase instance;
internal static InputClass InputActionsInstance = new InputClass();
public static ManualLogSource mls;
public static ConfigFile config;
public static GameObject networkedSettingsGo;
public static string saveFilePath = Path.Combine(Paths.BepInExRootPath, "plugins", "TiltedTomb-The_Femmployee_Mod", "FemmployeeSaveData.json");
public static ConfigEntry<bool> useSaveFileFormatting;
private static void InitConfig()
{
useSaveFileFormatting = config.Bind<bool>("Femmployee Mod Settings", "Use Save File formatting", false, "Enable for save file debugging. makes the mod generate the JSON with Formatting.Indented true.");
}
private void Awake()
{
//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
//IL_00cf: Expected O, but got Unknown
//IL_0101: Unknown result type (might be due to invalid IL or missing references)
//IL_010b: Expected O, but got Unknown
config = ((BaseUnityPlugin)this).Config;
InitConfig();
if ((Object)(object)instance == (Object)null)
{
instance = this;
}
Type[] types = Assembly.GetExecutingAssembly().GetTypes();
Type[] array = types;
foreach (Type type in array)
{
MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
MethodInfo[] array2 = methods;
foreach (MethodInfo methodInfo in array2)
{
object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false);
if (customAttributes.Length != 0)
{
methodInfo.Invoke(null, null);
}
}
}
Assets.PopulateAssets();
ModelReplacementAPI.RegisterSuitModelReplacement("Femmployee", typeof(Femmployee));
Harmony val = new Harmony("com.TiltedHat.FemmployeeMod");
val.PatchAll();
((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin com.TiltedHat.FemmployeeMod is loaded!");
mls = ((BaseUnityPlugin)this).Logger;
networkedSettingsGo = (GameObject)Assets.MainAssetBundle.LoadAsset("NetworkedSettings.prefab");
NetworkPrefabs.RegisterNetworkPrefab(networkedSettingsGo);
}
}
public static class Assets
{
public static string mainAssetBundleName = "femmployeemodbundle";
public static AssetBundle MainAssetBundle = null;
private static string GetAssemblyName()
{
return Assembly.GetExecutingAssembly().GetName().Name.Replace(" ", "_");
}
public static void PopulateAssets()
{
if ((Object)(object)MainAssetBundle == (Object)null)
{
Console.WriteLine(GetAssemblyName() + "." + mainAssetBundleName);
using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(GetAssemblyName() + "." + mainAssetBundleName);
MainAssetBundle = AssetBundle.LoadFromStream(stream);
}
}
}
[HarmonyPatch(typeof(StartOfRound))]
internal class StartOfRoundPatch
{
[HarmonyPatch("Start")]
[HarmonyPostfix]
private static void UICreationPatch()
{
AssetBundle mainAssetBundle = Assets.MainAssetBundle;
GameObject val = mainAssetBundle.LoadAsset<GameObject>("ModdedUI.prefab");
Object.Instantiate<GameObject>(val);
}
}
public class InputClass : LcInputActions
{
[InputAction("<Keyboard>/backslash", Name = "Femmployee UI")]
public InputAction FemmployeeUIToggle { get; set; }
}
public class NetworkMaterialProperties : INetworkSerializable
{
public Color colorValue;
public float metallicValue;
public float smoothnessValue;
public unsafe void NetworkSerialize<T>(BufferSerializer<T> serializer) where T : IReaderWriter
{
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
serializer.SerializeValue(ref colorValue);
((BufferSerializer<float>*)(&serializer))->SerializeValue<float>(ref metallicValue, default(ForPrimitives));
((BufferSerializer<float>*)(&serializer))->SerializeValue<float>(ref smoothnessValue, default(ForPrimitives));
}
}
}
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
internal sealed class IgnoresAccessChecksToAttribute : Attribute
{
public IgnoresAccessChecksToAttribute(string assemblyName)
{
}
}
}
namespace FemmployeeMod.NetcodePatcher
{
[AttributeUsage(AttributeTargets.Module)]
internal class NetcodePatchedAssemblyAttribute : Attribute
{
}
}