Update
This commit is contained in:
parent
6721410da4
commit
74ec6ed775
@ -26,18 +26,18 @@ namespace SkinHide.Patches
|
|||||||
Is231Up = typeof(Player).GetProperty("IsYourPlayer").GetSetMethod() == null;
|
Is231Up = typeof(Player).GetProperty("IsYourPlayer").GetSetMethod() == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isyouplayer;
|
bool isYouPlayer;
|
||||||
|
|
||||||
if ((bool)Is231Up)
|
if ((bool)Is231Up)
|
||||||
{
|
{
|
||||||
isyouplayer = __instance.IsYourPlayer;
|
isYouPlayer = __instance.IsYourPlayer;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
isyouplayer = __instance == Singleton<GameWorld>.Instance.AllPlayers[0];
|
isYouPlayer = __instance == Singleton<GameWorld>.Instance.AllPlayers[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isyouplayer)
|
if (isYouPlayer)
|
||||||
{
|
{
|
||||||
SkinHidePlugin.Player = __instance.PlayerBody;
|
SkinHidePlugin.Player = __instance.PlayerBody;
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,9 @@ namespace SkinHide
|
|||||||
|
|
||||||
internal static List<PlayerBody> Bot = new List<PlayerBody>();
|
internal static List<PlayerBody> Bot = new List<PlayerBody>();
|
||||||
|
|
||||||
private readonly SettingsData settingsdata = new SettingsData();
|
private readonly SettingsData SettingsDatas = new SettingsData();
|
||||||
|
|
||||||
private readonly ReflectionData reflectiondata = new ReflectionData();
|
private readonly ReflectionData ReflectionDatas = new ReflectionData();
|
||||||
|
|
||||||
private bool PMVHideCache;
|
private bool PMVHideCache;
|
||||||
|
|
||||||
@ -42,47 +42,47 @@ namespace SkinHide
|
|||||||
{
|
{
|
||||||
Logger.LogInfo("Loaded: kmyuhkyuk-SkinHide");
|
Logger.LogInfo("Loaded: kmyuhkyuk-SkinHide");
|
||||||
|
|
||||||
string SkinHideSettings = "Skin Hide Settings";
|
string skinHideSettings = "Skin Hide Settings";
|
||||||
string SkinHidePartSettings = "隐藏部分设置 Skin Hide Part Settings";
|
string skinHidePartSettings = "隐藏部分设置 Skin Hide Part Settings";
|
||||||
string KBSSettings = "快捷键设置 Keyboard Shortcut Settings";
|
string kbsSettings = "快捷键设置 Keyboard Shortcut Settings";
|
||||||
|
|
||||||
settingsdata.KeyPlayerSkinHide = Config.Bind<bool>(SkinHideSettings, "玩家服装隐藏 Player Skin Hide", false);
|
SettingsDatas.KeyPlayerSkinHide = Config.Bind<bool>(skinHideSettings, "玩家服装隐藏 Player Skin Hide", false);
|
||||||
settingsdata.KeyBotSkinHide = Config.Bind<bool>(SkinHideSettings, "Bot服装隐藏 Bot Skin Hide", false);
|
SettingsDatas.KeyBotSkinHide = Config.Bind<bool>(skinHideSettings, "Bot服装隐藏 Bot Skin Hide", false);
|
||||||
|
|
||||||
settingsdata.KeyPlayerSkinHidePart = Config.Bind<Part>(SkinHidePartSettings, "Player", Part.All);
|
SettingsDatas.KeyPlayerSkinHidePart = Config.Bind<Part>(skinHidePartSettings, "Player", Part.All);
|
||||||
settingsdata.KeyBotSkinHidePart = Config.Bind<Part>(SkinHidePartSettings, "Bot", Part.All);
|
SettingsDatas.KeyBotSkinHidePart = Config.Bind<Part>(skinHidePartSettings, "Bot", Part.All);
|
||||||
|
|
||||||
settingsdata.KBSPlayerSkinHide = Config.Bind<KeyboardShortcut>(KBSSettings, "玩家服装隐藏快捷键 Player Skin Hide", KeyboardShortcut.Empty);
|
SettingsDatas.KBSPlayerSkinHide = Config.Bind<KeyboardShortcut>(kbsSettings, "玩家服装隐藏快捷键 Player Skin Hide", KeyboardShortcut.Empty);
|
||||||
settingsdata.KBSBotSkinHide = Config.Bind<KeyboardShortcut>(KBSSettings, "Bot服装隐藏快捷键 Bot Skin Hide", KeyboardShortcut.Empty);
|
SettingsDatas.KBSBotSkinHide = Config.Bind<KeyboardShortcut>(kbsSettings, "Bot服装隐藏快捷键 Bot Skin Hide", KeyboardShortcut.Empty);
|
||||||
|
|
||||||
new PlayerModelViewPatch().Enable();
|
new PlayerModelViewPatch().Enable();
|
||||||
new PlayerPatch().Enable();
|
new PlayerPatch().Enable();
|
||||||
|
|
||||||
reflectiondata.RefSlotViews = RefHelp.FieldRef<PlayerBody, object>.Create("SlotViews");
|
ReflectionDatas.RefSlotViews = RefHelp.FieldRef<PlayerBody, object>.Create("SlotViews");
|
||||||
reflectiondata.RefSlotList = RefHelp.FieldRef<object, IEnumerable<object>>.Create(reflectiondata.RefSlotViews.FieldType, "list_0");
|
ReflectionDatas.RefSlotList = RefHelp.FieldRef<object, IEnumerable<object>>.Create(ReflectionDatas.RefSlotViews.FieldType, "list_0");
|
||||||
reflectiondata.RefDresses = RefHelp.FieldRef<object, Dress[]>.Create(reflectiondata.RefSlotList.FieldType.GetGenericArguments()[0], "Dresses");
|
ReflectionDatas.RefDresses = RefHelp.FieldRef<object, Dress[]>.Create(ReflectionDatas.RefSlotList.FieldType.GetGenericArguments()[0], "Dresses");
|
||||||
reflectiondata.RefRenderers = RefHelp.FieldRef<Dress, Renderer[]>.Create("Renderers");
|
ReflectionDatas.RefRenderers = RefHelp.FieldRef<Dress, Renderer[]>.Create("Renderers");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update()
|
void Update()
|
||||||
{
|
{
|
||||||
if (settingsdata.KBSPlayerSkinHide.Value.IsDown())
|
if (SettingsDatas.KBSPlayerSkinHide.Value.IsDown())
|
||||||
{
|
{
|
||||||
settingsdata.KeyPlayerSkinHide.Value = !settingsdata.KeyPlayerSkinHide.Value;
|
SettingsDatas.KeyPlayerSkinHide.Value = !SettingsDatas.KeyPlayerSkinHide.Value;
|
||||||
}
|
}
|
||||||
if (settingsdata.KBSBotSkinHide.Value.IsDown())
|
if (SettingsDatas.KBSBotSkinHide.Value.IsDown())
|
||||||
{
|
{
|
||||||
settingsdata.KeyBotSkinHide.Value = !settingsdata.KeyBotSkinHide.Value;
|
SettingsDatas.KeyBotSkinHide.Value = !SettingsDatas.KeyBotSkinHide.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
//PlayerModelView Skin Hide
|
//PlayerModelView Skin Hide
|
||||||
if (PlayerModelView != null && settingsdata.KeyPlayerSkinHide.Value)
|
if (PlayerModelView != null && SettingsDatas.KeyPlayerSkinHide.Value)
|
||||||
{
|
{
|
||||||
Hide(PlayerModelView, settingsdata.KeyPlayerSkinHidePart.Value, true);
|
Hide(PlayerModelView, SettingsDatas.KeyPlayerSkinHidePart.Value, true);
|
||||||
|
|
||||||
PMVHideCache = true;
|
PMVHideCache = true;
|
||||||
}
|
}
|
||||||
else if (PlayerModelView != null && !settingsdata.KeyPlayerSkinHide.Value && PMVHideCache)
|
else if (PlayerModelView != null && !SettingsDatas.KeyPlayerSkinHide.Value && PMVHideCache)
|
||||||
{
|
{
|
||||||
Hide(PlayerModelView, Part.All, false);
|
Hide(PlayerModelView, Part.All, false);
|
||||||
|
|
||||||
@ -92,13 +92,13 @@ namespace SkinHide
|
|||||||
//Player Skin Hide
|
//Player Skin Hide
|
||||||
if (Player != null)
|
if (Player != null)
|
||||||
{
|
{
|
||||||
if (settingsdata.KeyPlayerSkinHide.Value)
|
if (SettingsDatas.KeyPlayerSkinHide.Value)
|
||||||
{
|
{
|
||||||
Hide(Player, settingsdata.KeyPlayerSkinHidePart.Value, true);
|
Hide(Player, SettingsDatas.KeyPlayerSkinHidePart.Value, true);
|
||||||
|
|
||||||
PlayerHideCache = true;
|
PlayerHideCache = true;
|
||||||
}
|
}
|
||||||
else if (!settingsdata.KeyPlayerSkinHide.Value && PlayerHideCache)
|
else if (!SettingsDatas.KeyPlayerSkinHide.Value && PlayerHideCache)
|
||||||
{
|
{
|
||||||
Hide(Player, Part.All, false);
|
Hide(Player, Part.All, false);
|
||||||
|
|
||||||
@ -111,16 +111,16 @@ namespace SkinHide
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Bot Skin Hide
|
//Bot Skin Hide
|
||||||
if (Bot.Count > 0 && settingsdata.KeyBotSkinHide.Value)
|
if (Bot.Count > 0 && SettingsDatas.KeyBotSkinHide.Value)
|
||||||
{
|
{
|
||||||
foreach (PlayerBody bot in Bot)
|
foreach (PlayerBody bot in Bot)
|
||||||
{
|
{
|
||||||
Hide(bot, settingsdata.KeyBotSkinHidePart.Value, true);
|
Hide(bot, SettingsDatas.KeyBotSkinHidePart.Value, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
BotHideCache = true;
|
BotHideCache = true;
|
||||||
}
|
}
|
||||||
else if (Bot.Count > 0 && !settingsdata.KeyBotSkinHide.Value && BotHideCache)
|
else if (Bot.Count > 0 && !SettingsDatas.KeyBotSkinHide.Value && BotHideCache)
|
||||||
{
|
{
|
||||||
foreach (PlayerBody bot in Bot)
|
foreach (PlayerBody bot in Bot)
|
||||||
{
|
{
|
||||||
@ -133,15 +133,15 @@ namespace SkinHide
|
|||||||
|
|
||||||
void Hide(PlayerBody playerbody, Part part, bool hide)
|
void Hide(PlayerBody playerbody, Part part, bool hide)
|
||||||
{
|
{
|
||||||
object slotviews = reflectiondata.RefSlotViews.GetValue(playerbody);
|
object slotViews = ReflectionDatas.RefSlotViews.GetValue(playerbody);
|
||||||
|
|
||||||
IEnumerable<object> slotlist = reflectiondata.RefSlotList.GetValue(slotviews);
|
IEnumerable<object> slotList = ReflectionDatas.RefSlotList.GetValue(slotViews);
|
||||||
|
|
||||||
List<Dress> dresses = new List<Dress>();
|
List<Dress> dresses = new List<Dress>();
|
||||||
|
|
||||||
foreach (object slot in slotlist)
|
foreach (object slot in slotList)
|
||||||
{
|
{
|
||||||
Dress[] dres = reflectiondata.RefDresses.GetValue(slot);
|
Dress[] dres = ReflectionDatas.RefDresses.GetValue(slot);
|
||||||
|
|
||||||
if (dres != null)
|
if (dres != null)
|
||||||
{
|
{
|
||||||
@ -154,31 +154,31 @@ namespace SkinHide
|
|||||||
|
|
||||||
IEnumerable<Dress> dress = dresses.Where(x => x.GetType() == typeof(Dress));
|
IEnumerable<Dress> dress = dresses.Where(x => x.GetType() == typeof(Dress));
|
||||||
|
|
||||||
IEnumerable<Renderer> renderers = dress.SelectMany(x => reflectiondata.RefRenderers.GetValue(x));
|
IEnumerable<Renderer> renDress = dress.SelectMany(x => ReflectionDatas.RefRenderers.GetValue(x));
|
||||||
|
|
||||||
IEnumerable<GameObject> skindress = dresses.Where(x => x.GetType() == typeof(SkinDress) || x.GetType() == typeof(ArmBandView)).Select(x => x.gameObject);
|
IEnumerable<GameObject> skinDress = dresses.Where(x => x.GetType() == typeof(SkinDress) || x.GetType() == typeof(ArmBandView)).Select(x => x.gameObject);
|
||||||
|
|
||||||
switch (part)
|
switch (part)
|
||||||
{
|
{
|
||||||
case Part.All:
|
case Part.All:
|
||||||
foreach (GameObject gameobject in skindress)
|
foreach (GameObject gameobject in skinDress)
|
||||||
{
|
{
|
||||||
gameobject.SetActive(!hide);
|
gameobject.SetActive(!hide);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (MeshRenderer renderer in renderers)
|
foreach (MeshRenderer renderer in renDress)
|
||||||
{
|
{
|
||||||
renderer.enabled = !hide;
|
renderer.enabled = !hide;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Part.Dress:
|
case Part.Dress:
|
||||||
foreach (MeshRenderer renderer in renderers)
|
foreach (MeshRenderer renderer in renDress)
|
||||||
{
|
{
|
||||||
renderer.enabled = !hide;
|
renderer.enabled = !hide;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Part.SkinDress:
|
case Part.SkinDress:
|
||||||
foreach (GameObject gameobject in skindress)
|
foreach (GameObject gameobject in skinDress)
|
||||||
{
|
{
|
||||||
gameobject.SetActive(!hide);
|
gameobject.SetActive(!hide);
|
||||||
}
|
}
|
||||||
|
@ -20,27 +20,27 @@ namespace SkinHide.Utils
|
|||||||
|
|
||||||
var declaringType = method.DeclaringType;
|
var declaringType = method.DeclaringType;
|
||||||
|
|
||||||
var DelegateMethod = delegateType.GetMethod("Invoke");
|
var delegateMethod = delegateType.GetMethod("Invoke");
|
||||||
var DelegateParameters = DelegateMethod.GetParameters();
|
var delegateParameters = delegateMethod.GetParameters();
|
||||||
var DelegateparameterTypes = DelegateParameters.Select(x => x.ParameterType).ToArray();
|
var delegateParameterTypes = delegateParameters.Select(x => x.ParameterType).ToArray();
|
||||||
|
|
||||||
Type ReturnType;
|
Type returnType;
|
||||||
bool NeedBox;
|
bool needBox;
|
||||||
|
|
||||||
if (DelegateMethod.ReturnType == typeof(object) && method.ReturnType.IsValueType)
|
if (delegateMethod.ReturnType == typeof(object) && method.ReturnType.IsValueType)
|
||||||
{
|
{
|
||||||
ReturnType = typeof(object);
|
returnType = typeof(object);
|
||||||
|
|
||||||
NeedBox = true;
|
needBox = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ReturnType = method.ReturnType;
|
returnType = method.ReturnType;
|
||||||
|
|
||||||
NeedBox = false;
|
needBox = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var dmd = new DynamicMethod("OpenInstanceDelegate_" + method.Name, ReturnType, DelegateparameterTypes);
|
var dmd = new DynamicMethod("OpenInstanceDelegate_" + method.Name, returnType, delegateParameterTypes);
|
||||||
|
|
||||||
var ilGen = dmd.GetILGenerator();
|
var ilGen = dmd.GetILGenerator();
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ namespace SkinHide.Utils
|
|||||||
ilGen.Emit(OpCodes.Castclass, parameterTypes[i]);
|
ilGen.Emit(OpCodes.Castclass, parameterTypes[i]);
|
||||||
}
|
}
|
||||||
//DelegateparameterTypes i == parameterTypes i
|
//DelegateparameterTypes i == parameterTypes i
|
||||||
else if (DelegateparameterTypes[i] == typeof(object) && isvaluetype)
|
else if (delegateParameterTypes[i] == typeof(object) && isvaluetype)
|
||||||
{
|
{
|
||||||
ilGen.Emit(OpCodes.Unbox_Any, parameterTypes[i]);
|
ilGen.Emit(OpCodes.Unbox_Any, parameterTypes[i]);
|
||||||
}
|
}
|
||||||
@ -105,7 +105,7 @@ namespace SkinHide.Utils
|
|||||||
ilGen.Emit(OpCodes.Callvirt, method);
|
ilGen.Emit(OpCodes.Callvirt, method);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NeedBox)
|
if (needBox)
|
||||||
{
|
{
|
||||||
ilGen.Emit(OpCodes.Box, method.ReturnType);
|
ilGen.Emit(OpCodes.Box, method.ReturnType);
|
||||||
}
|
}
|
||||||
@ -204,7 +204,7 @@ namespace SkinHide.Utils
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return default(F);
|
return default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -297,7 +297,7 @@ namespace SkinHide.Utils
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return default(F);
|
return default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user