private static bool Prefix(StoreGui __instance) { string name = Traverse.Create(__instance).Field <Trader>("m_trader").Value.m_name; if (OdinPlus.traderNameList.Contains(name)) { var m_selectedItem = Traverse.Create(__instance).Field <Trader.TradeItem>("m_selectedItem").Value; int stack = Mathf.Min(m_selectedItem.m_stack, m_selectedItem.m_prefab.m_itemData.m_shared.m_maxStackSize); if (m_selectedItem == null || (m_selectedItem.m_price * stack - OdinData.Credits > 0)) { return(false); } int quality = m_selectedItem.m_prefab.m_itemData.m_quality; int variant = m_selectedItem.m_prefab.m_itemData.m_variant; if (Player.m_localPlayer.GetInventory().AddItem(m_selectedItem.m_prefab.name, stack, quality, variant, 0L, "") != null) { OdinData.RemoveCredits(m_selectedItem.m_price * stack); //? __instance.m_buyEffects.Create(__instance.gameObject.transform.position, Quaternion.identity, null, 1f); Player.m_localPlayer.ShowPickupMessage(m_selectedItem.m_prefab.m_itemData, m_selectedItem.m_prefab.m_itemData.m_stack); Traverse.Create(__instance).Method("FillList").GetValue(); Gogan.LogEvent("Game", "BoughtItem", m_selectedItem.m_prefab.name, 0L); } return(false); } return(true); }
// Token: 0x06000FB3 RID: 4019 RVA: 0x0006EB08 File Offset: 0x0006CD08 private void RandomTalk() { if (this.m_animator.GetBool("Stand") && !StoreGui.IsVisible() && Player.IsPlayerInRange(base.transform.position, this.m_greetRange)) { this.Say(this.m_randomTalk, "Talk"); this.m_randomTalkFX.Create(base.transform.position, Quaternion.identity, null, 1f); } }
private static void Postfix(StoreGui __instance, Trader trader) { if (OdinPlus.traderNameList.Contains(trader.m_name)) { OdinTrader.TweakGui(__instance, true); return; } return; }
public static void Hide(StoreGui __instance) { if (MerchantPanel == null) { return; } MerchantPanel.SetActive(false); }
public static void TweakGui(StoreGui __instance, bool set) { var go = __instance.gameObject; var sell = __instance.m_sellButton.transform.parent.gameObject; var icon = __instance.m_coinText.transform.parent.GetChild(0).GetComponent <Image>(); sell.gameObject.SetActive(!set); icon.sprite = !set ? OdinPlus.CoinsIcon : OdinPlus.OdinCreditIcon; GameObject.Find("/_GameMain/GUI/PixelFix/IngameGui(Clone)/Store_Screen/Store/topic").GetComponent <Text>().text = Localization.instance.Localize(set ? "OdinStore" : @"$store_topic"); }
// Token: 0x06000628 RID: 1576 RVA: 0x000349A7 File Offset: 0x00032BA7 public void Show(Trader trader) { if (this.m_trader == trader && StoreGui.IsVisible()) { return; } this.m_trader = trader; this.m_rootPanel.SetActive(true); this.FillList(); }
private bool CheckInput() { return((!Chat.instance || !Chat.instance.HasFocus()) && !Console.IsVisible() && !InventoryGui.IsVisible() && !StoreGui.IsVisible() && !Menu.IsVisible() && !Minimap.IsOpen() && !Player.m_localPlayer.InCutscene()); }
// Some logic from GameCamera class private bool canAdjustCameraDistance() { return((!Chat.instance || !Chat.instance.HasFocus()) && !Console.IsVisible() && !InventoryGui.IsVisible() && !StoreGui.IsVisible() && !Menu.IsVisible() && !Minimap.IsOpen() && attachedToPlayer && !getPlayerCharacter().InCutscene() ? !getPlayerCharacter().InPlaceMode() : false); }
private static void Prefix(StoreGui __instance) { var trader = Traverse.Create(__instance).Field <Trader>("m_trader").Value; if (OdinPlus.traderNameList.Contains(trader.m_name)) { OdinTrader.TweakGui(__instance, false); return; } return; }
static void Prefix(Player __instance, float ___m_lastToolUseTime, ref float ___m_placePressedTime) { __instance.m_placeDelay = placeDelay; if (!modEnabled.Value) { return; } string rightItem = __instance.GetRightItem()?.m_shared.m_name; if (rightItem == "$item_hammer") { if (!repeatBuildPlace.Value) { return; } __instance.m_placeDelay = repeatBuildPlaceDelay.Value; } else if (rightItem == "$item_hoe") { if (!repeatTerrainMod.Value) { return; } __instance.m_placeDelay = repeatTerrainModDelay.Value; } else if (rightItem == "$item_cultivator") { if (!repeatPlanting.Value) { return; } __instance.m_placeDelay = repeatPlantingDelay.Value; } if (!wasSelecting && (ZInput.GetButton("Attack") || ZInput.GetButton("JoyPlace")) && Time.time - ___m_lastToolUseTime > __instance.m_placeDelay) { if (InventoryGui.IsVisible() || Minimap.IsOpen() || StoreGui.IsVisible() || Hud.IsPieceSelectionVisible()) { wasSelecting = true; } else { ___m_placePressedTime = Time.time; } } else if (wasSelecting && !ZInput.GetButton("Attack") && !ZInput.GetButton("JoyPlace")) { wasSelecting = false; } }
private bool shouldUpdateRayVectors() { if ((Chat.instance != null && Chat.instance.HasFocus()) || Console.IsVisible() || TextInput.IsVisible()) { return(false); } return(inPlaceMode && !StoreGui.IsVisible() && !InventoryGui.IsVisible() && !Menu.IsVisible() && !(TextViewer.instance && TextViewer.instance.IsVisible()) && !Minimap.IsOpen() && !Hud.IsPieceSelectionVisible()); }
public static void Show_Postfix(StoreGui __instance) { if (__instance.transform.Find(nameof(MerchantPanel)) == null) { if (MerchantPanel != null) { Object.Destroy(MerchantPanel); } MerchantPanel = Object.Instantiate(EpicLoot.Assets.MerchantPanel, __instance.transform, false); MerchantPanel.AddComponent <MerchantPanel>(); } MerchantPanel.gameObject.SetActive(true); }
public void freeGemsTabJoy() { if (PopUpMessage.PopupVisible) { return; } GameObject windowShop = GameObject.Find("windowShop"); if (windowShop != null) { GameObject.Destroy(windowShop); } StoreGui.ShopFree(); }
private static void Postfix(StoreGui __instance, ref int __result) { var t = Traverse.Create(__instance).Field <Trader>("m_trader").Value; if (t == null) { return; } string name = t.m_name; if (OdinPlus.traderNameList.Contains(name)) { __result = OdinData.Credits; return; } }
private static int ItemValueDetour(ItemDrop.ItemData item, StoreGui store) { if (Buying is null) { Buying = ConfigurationManager.TraderBuyConfig.ToDictionary(x => x.ItemName.Value.Trim().ToUpperInvariant()); } string name = item.m_dropPrefab.name; string cleanedName = name.Trim().ToUpperInvariant(); if (Buying.TryGetValue(cleanedName, out TraderBuyingConfig config)) { Log.LogTrace($"Setting value for sold item '{name}:{config.Price.Value}'"); return(config.Price.Value); } else if (item.m_shared.m_value == 0) { Log.LogTrace($"Unable to find value for sold item '{name}'"); } return(item.m_shared.m_value); }
public static bool IgnoreKeyPresses(bool extra = false) { return(ZNetScene.instance == null || Player.m_localPlayer == null || Minimap.IsOpen() || Console.IsVisible() || TextInput.IsVisible() || ZNet.instance.InPasswordDialog() || Chat.instance?.HasFocus() == true || StoreGui.IsVisible() || InventoryGui.IsVisible() || Menu.IsVisible() || TextViewer.instance?.IsVisible() == true); }
public static void OnDestroy(StoreGui __instance) { MerchantPanel = null; }
private static void Prefix() { if (CheckPlayerNull() || Player.m_localPlayer.IsTeleporting() || global::Console.instance.m_chatWindow.gameObject.activeInHierarchy || Chat.instance.m_chatWindow.gameObject.activeInHierarchy || Player.m_localPlayer.InPlaceMode() || TextInput.IsVisible() || StoreGui.IsVisible() || InventoryGui.IsVisible() || Menu.IsVisible()) { return; } Vector3 dir = Traverse.Create(Player.m_localPlayer).Field <Vector3>("m_lookDir").Value; Vector3 rdir = Traverse.Create(Player.m_localPlayer).Field <Vector3>("m_moveDir").Value; dir.y = 0; rdir.y = 0; rdir = rdir.normalized; dir = dir.normalized; if (Input.GetKeyDown(KS_Dodge.Value.MainKey)) { Dodge(rdir); return; } if (KS_Dodge_Forward.Value.IsDown()) { Dodge(dir); } if (KS_Dodge_Backward.Value.IsDown()) { Dodge(dir * -1); } if (KS_Dodge_Right.Value.IsDown()) { Dodge(Quaternion.Euler(0, 90, 0) * dir); } if (KS_Dodge_Left.Value.IsDown()) { Dodge(Quaternion.Euler(0, 90, 0) * dir * -1); } }
public static bool Prefix(GameCamera __instance, ref bool ___m_mouseCapture) { if (Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.F1)) { ___m_mouseCapture = !___m_mouseCapture; } if (___m_mouseCapture && !InventoryGui.IsVisible() && !Menu.IsVisible() && !Minimap.IsOpen() && !StoreGui.IsVisible() && !Hud.IsPieceSelectionVisible() && !Manager.MenuOpen) { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; return(false); } Cursor.lockState = CursorLockMode.None; Cursor.visible = ZInput.IsMouseActive(); return(false); }
// Token: 0x06000582 RID: 1410 RVA: 0x0002F520 File Offset: 0x0002D720 private void Update() { if (Game.instance.IsShuttingDown()) { this.m_root.gameObject.SetActive(false); return; } if (this.m_root.gameObject.activeSelf) { this.m_hiddenFrames = 0; if ((Input.GetKeyDown(KeyCode.Escape) || ZInput.GetButtonDown("JoyMenu")) && !this.m_settingsInstance && !Feedback.IsVisible()) { if (this.m_quitDialog.gameObject.activeSelf) { this.OnQuitNo(); return; } if (this.m_logoutDialog.gameObject.activeSelf) { this.OnLogoutNo(); return; } this.m_root.gameObject.SetActive(false); return; } } else { this.m_hiddenFrames++; bool flag = !InventoryGui.IsVisible() && !Minimap.IsOpen() && !global::Console.IsVisible() && !TextInput.IsVisible() && !ZNet.instance.InPasswordDialog() && !StoreGui.IsVisible() && !Hud.IsPieceSelectionVisible(); if ((Input.GetKeyDown(KeyCode.Escape) || ZInput.GetButtonDown("JoyMenu")) && flag) { Gogan.LogEvent("Screen", "Enter", "Menu", 0L); this.m_root.gameObject.SetActive(true); this.m_menuDialog.gameObject.SetActive(true); this.m_logoutDialog.gameObject.SetActive(false); this.m_quitDialog.gameObject.SetActive(false); } } }
// Token: 0x0600024D RID: 589 RVA: 0x00012BD3 File Offset: 0x00010DD3 private bool InInventoryEtc() { return(InventoryGui.IsVisible() || Minimap.IsOpen() || StoreGui.IsVisible() || Hud.IsPieceSelectionVisible()); }
// Token: 0x0600024C RID: 588 RVA: 0x00012B4C File Offset: 0x00010D4C private bool TakeInput() { return(!GameCamera.InFreeFly() && ((!Chat.instance || !Chat.instance.HasFocus()) && !Menu.IsVisible() && !global::Console.IsVisible() && !TextInput.IsVisible() && !Minimap.InTextInput() && (!ZInput.IsGamepadActive() || !Minimap.IsOpen()) && (!ZInput.IsGamepadActive() || !InventoryGui.IsVisible()) && (!ZInput.IsGamepadActive() || !StoreGui.IsVisible())) && (!ZInput.IsGamepadActive() || !Hud.IsPieceSelectionVisible())); }
private static void Postfix(ref GameCamera __instance, float dt) { if (Configuration.Current.FirstPerson.IsEnabled) { // This is from game code, not sure if need it though if (__instance.m_freeFly) { __instance.UpdateFreeFly(dt); __instance.UpdateCameraShake(dt); return; } Player localPlayer = Player.m_localPlayer; if (Input.GetKeyDown(Configuration.Current.FirstPerson.hotkey)) { DynamicPerson.isFirstPerson = !DynamicPerson.isFirstPerson; if (DynamicPerson.isFirstPerson) { SetupFP(ref __instance, ref localPlayer); } else { // We are not in First Person any more, reload old values __instance.m_3rdOffset = DynamicPerson.noVPFP_3rdOffset; __instance.m_fpsOffset = DynamicPerson.noVPFP_fpsOffset; // Set the camera stuff to our constant stored values __instance.m_minDistance = CameraConstants.minDistance; __instance.m_maxDistance = CameraConstants.maxDistance; __instance.m_zoomSens = CameraConstants.zoomSens; // Default Field Of View value __instance.m_fov = 65f; // Make head stuff be normal again localPlayer.m_head.localScale = Vector3.one; localPlayer.m_eye.localScale = Vector3.one; } } // FOV of cameras needs to be reset too __instance.m_camera.fieldOfView = __instance.m_fov; __instance.m_skyCamera.fieldOfView = __instance.m_fov; if (localPlayer) { // Same game check if ((!Chat.instance || !Chat.instance.HasFocus()) && !Console.IsVisible() && !InventoryGui.IsVisible() && !StoreGui.IsVisible() && !Menu.IsVisible() && !Minimap.IsOpen() && !localPlayer.InCutscene() && !localPlayer.InPlaceMode()) { if (DynamicPerson.isFirstPerson) { // I dont think either of these two ifs needs explain.... if (Input.GetKeyDown(Configuration.Current.FirstPerson.raiseFOVHotkey)) { __instance.m_fov += 1f; Console.instance.AddString($"Changed fov to: {__instance.m_fov}"); } else if (Input.GetKeyDown(Configuration.Current.FirstPerson.lowerFOVHotkey)) { __instance.m_fov -= 1f; Console.instance.AddString($"Changed fov to: {__instance.m_fov}"); } } else { // Not first camera, just do main game thing float minDistance = __instance.m_minDistance; float axis = Input.GetAxis("Mouse ScrollWheel"); __instance.m_distance -= axis * __instance.m_zoomSens; float max = (localPlayer.GetControlledShip() != null) ? __instance.m_maxDistanceBoat : __instance.m_maxDistance; __instance.m_distance = Mathf.Clamp(__instance.m_distance, 0f, max); } } if (localPlayer.IsDead() && localPlayer.GetRagdoll()) { // THe weird death cam actually: // - Breaks body into ragdoll // - Gives momentum to pieces // - Then finds the average point of them all to make camera look at __instance.transform.LookAt(localPlayer.GetRagdoll().GetAverageBodyPosition()); } else if (DynamicPerson.isFirstPerson) { // Place camera at head level, plus a tiny bit more __instance.transform.position = localPlayer.m_head.position + new Vector3(0, 0.2f, 0); } else { // Not even sure why we need to reset the base transform // But game does it so... // ¯\_(ツ)_/¯ Vector3 position; Quaternion rotation; __instance.GetCameraPosition(dt, out position, out rotation); __instance.transform.position = position; __instance.transform.rotation = rotation; } __instance.UpdateCameraShake(dt); } } }
// Token: 0x06000ADF RID: 2783 RVA: 0x0004DFF4 File Offset: 0x0004C1F4 private void UpdateMouseCapture() { if (Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.F1)) { this.m_mouseCapture = !this.m_mouseCapture; } if (this.m_mouseCapture && !InventoryGui.IsVisible() && !Menu.IsVisible() && !Minimap.IsOpen() && !StoreGui.IsVisible() && !Hud.IsPieceSelectionVisible()) { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; return; } Cursor.lockState = CursorLockMode.None; Cursor.visible = ZInput.IsMouseActive(); }
public static void Postfix(GameCamera __instance, ref float ___m_distance, ref float ___m_zoomSens) { if (!isEnabled.Value || GameCamera.InFreeFly()) { return; } Player localPlayer = Player.m_localPlayer; if (!localPlayer) { return; } checkInteriorChange(localPlayer); ___m_zoomSens = cameraZoomSensitivity.Value; // Separate camera distances for different scenarios. if (canChangeCameraDistance) { if (cameraDistanceInteriorsEnabled.Value && playerInInterior) { targetDistance = cameraDistanceInteriors.Value; } else if (cameraDistanceShelterEnabled.Value && playerInShelter) { targetDistance = cameraDistanceShelter.Value; } else if (cameraDistanceBoatEnabled.Value && characterControlledShip) { targetDistance = cameraDistanceBoat.Value; } else if (cameraDistanceBoatEnabled.Value && characterStoppedShipControl) { targetDistance = cameraDistance.Value; } else if (cameraDistanceExteriorsEnabled.Value && (!playerInShelter && !playerInInterior)) { targetDistance = cameraDistance.Value; } canChangeCameraDistance = false; } if (smoothZoomEnabled.Value) { // Disable the games default zooming in and out. Otherwise, the distance will flicker. ___m_zoomSens = 0; if ((Chat.instance && Chat.instance.HasFocus() || (Console.IsVisible() || InventoryGui.IsVisible()) || (StoreGui.IsVisible() || Menu.IsVisible() || (Minimap.IsOpen() || localPlayer.InCutscene())) ? 0 : (!localPlayer.InPlaceMode() ? 1 : 0)) != 0) { float minDistance = __instance.m_minDistance; float maxDistance = localPlayer.GetControlledShip() != null ? cameraMaxDistanceBoat.Value : cameraMaxDistance.Value; float prevTargetDistance = targetDistance; targetDistance -= Input.GetAxis("Mouse ScrollWheel") * cameraZoomSensitivity.Value; targetDistance = Mathf.Clamp(targetDistance, minDistance, maxDistance); // Reset time when player changes zoom distance (scrollwheel) if (prevTargetDistance != targetDistance) { timePos = 0; } } targetDistanceHasBeenReached = checkLerpDuration(timePos); if (!targetDistanceHasBeenReached) { timePos += Time.deltaTime; moveToNewCameraDistance(timePos / timeDuration, ref ___m_distance); } } }
private static void SellableItemsDetour(Inventory inventory, List <ItemDrop.ItemData> sellableItems, StoreGui storeGui) { if (Buying is null) { Buying = ConfigurationManager.TraderBuyConfig.ToDictionary(x => x.ItemName.Value.Trim().ToUpperInvariant()); foreach (var key in Buying.Keys) { Log.LogTrace($"Enabling selling of: {key}"); } } //Future importance. //var trader = (Trader)AccessTools.Field(typeof(StoreGui), "m_trader").GetValue(storeGui); foreach (var item in inventory.GetAllItems()) { string name = item.m_dropPrefab.name; try { string cleanedName = name.Trim().ToUpperInvariant(); if (Buying.TryGetValue(cleanedName, out TraderBuyingConfig config) && config.Price.Value > 0) { sellableItems.Add(item); } else if (item.m_shared.m_value > 0) { sellableItems.Add(item); } } catch (Exception e) { Log.LogError("Error while checking modded buyers list.", e); } } }
// Token: 0x06000AE2 RID: 2786 RVA: 0x0004E194 File Offset: 0x0004C394 private void UpdateCamera(float dt) { if (this.m_freeFly) { this.UpdateFreeFly(dt); this.UpdateCameraShake(dt); return; } this.m_camera.fieldOfView = this.m_fov; this.m_skyCamera.fieldOfView = this.m_fov; Player localPlayer = Player.m_localPlayer; if (localPlayer) { if ((!Chat.instance || !Chat.instance.HasFocus()) && !global::Console.IsVisible() && !InventoryGui.IsVisible() && !StoreGui.IsVisible() && !Menu.IsVisible() && !Minimap.IsOpen() && !localPlayer.InCutscene() && !localPlayer.InPlaceMode()) { float minDistance = this.m_minDistance; float axis = Input.GetAxis("Mouse ScrollWheel"); this.m_distance -= axis * this.m_zoomSens; float max = (localPlayer.GetControlledShip() != null) ? this.m_maxDistanceBoat : this.m_maxDistance; this.m_distance = Mathf.Clamp(this.m_distance, minDistance, max); } if (localPlayer.IsDead() && localPlayer.GetRagdoll()) { Vector3 averageBodyPosition = localPlayer.GetRagdoll().GetAverageBodyPosition(); base.transform.LookAt(averageBodyPosition); } else { Vector3 position; Quaternion rotation; this.GetCameraPosition(dt, out position, out rotation); base.transform.position = position; base.transform.rotation = rotation; } this.UpdateCameraShake(dt); } }
public static bool Update(ref Menu __instance) { if (Game.instance.IsShuttingDown()) { __instance.m_root.gameObject.SetActive(false); return(false); } if (__instance.m_root.gameObject.activeSelf) { AccessTools.Field(typeof(Menu), "m_hiddenFrames").SetValue(__instance, 0); if ((Input.GetKeyDown(KeyCode.Escape) || ZInput.GetButtonDown("JoyMenu")) && !(GameObject)AccessTools.Field(typeof(Menu), "m_settingsInstance").GetValue(__instance) && !Feedback.IsVisible()) { if (__instance.m_quitDialog.gameObject.activeSelf) { __instance.OnQuitNo(); return(false); } if (__instance.m_logoutDialog.gameObject.activeSelf) { __instance.OnLogoutNo(); return(false); } StartTime(); __instance.m_root.gameObject.SetActive(false); return(false); } } else { int m_hiddenFrames = (int)AccessTools.Field(typeof(Menu), "m_hiddenFrames").GetValue(__instance); m_hiddenFrames++; AccessTools.Field(typeof(Menu), "m_hiddenFrames").SetValue(__instance, m_hiddenFrames); bool flag = !InventoryGui.IsVisible() && !Minimap.IsOpen() && !global::Console.IsVisible() && !TextInput.IsVisible() && !ZNet.instance.InPasswordDialog() && !StoreGui.IsVisible() && !Hud.IsPieceSelectionVisible(); if (((Input.GetKeyDown(KeyCode.Escape) || ZInput.GetButtonDown("JoyMenu")) || (!Application.isFocused && focusPause.Value && ZNet.instance.IsServer())) && flag) { __instance.m_root.gameObject.SetActive(true); __instance.m_menuDialog.gameObject.SetActive(true); if (ZNet.instance.IsServer()) { StopTime(); __instance.m_root.Find("OLD_menu").gameObject.SetActive(true); __instance.m_root.Find("Menu").gameObject.SetActive(false); } Gogan.LogEvent("Screen", "Enter", "Menu", 0L); __instance.m_logoutDialog.gameObject.SetActive(false); __instance.m_quitDialog.gameObject.SetActive(false); } } return(false); }