388 lines
16 KiB
C#
388 lines
16 KiB
C#
//********************************************************//
|
|
// //
|
|
// Copyright © All rights reserved. MyNameIsVoo. 2020. //
|
|
// //
|
|
// REPRODUCTION FORBIDEN //
|
|
// //
|
|
//********************************************************//
|
|
|
|
using System.Collections;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
using ItemsClassList;
|
|
using ICWM.IconSystem;
|
|
using ICWM.MenuSystem;
|
|
using ICWM.RenderSystem;
|
|
|
|
namespace ICWM
|
|
{
|
|
namespace HelperSystem
|
|
{
|
|
public class ModdingSystem : MonoBehaviour
|
|
{
|
|
#region Attributes
|
|
|
|
[Header("ATTRIBUTES")]
|
|
|
|
[ToolTipAttribute.Tooltip("The mode of displaying icons in the modding window. Ellipse mode - icons will move along an ellipse in a certain plane (screen place). Space mode - the icons will move in space with the weapon.")]
|
|
public IconRender.ModeRotate modeModdingRotate = IconRender.ModeRotate.SPACE;
|
|
|
|
[ToolTipAttribute.Tooltip("Reference to the button in the modding window. The button responds to the hide/unhide of icons.")]
|
|
public GameObject ToggleVisibleIcons; // For the modding button
|
|
|
|
[ToolTipAttribute.Tooltip("Reference to the button in the modding window. The button is responsible for the Tooltip mode in the modding window.")]
|
|
public GameObject ToggleRaycast; // For the modding button
|
|
//public GameObject ToggleVisibleCriticalIcons; // For the modding button
|
|
|
|
[Header("DEBUG")]
|
|
public bool isActiveModding = false;
|
|
public bool isActiveCarModding = false;
|
|
public bool isHideIcons = false;
|
|
|
|
public static ModdingSystem instance;
|
|
|
|
#endregion
|
|
|
|
private void Start()
|
|
{
|
|
instance = this;
|
|
IconRender.instance.modeRotate = modeModdingRotate;
|
|
if (!InventoryBase.instance.toolTip.IsModdingToolTip)
|
|
ToggleRaycast.SetActive(false);
|
|
}
|
|
|
|
#region PUBLIC
|
|
|
|
#region Button Event
|
|
|
|
public void HideIcons(int mode)
|
|
{
|
|
if (WeaponRender.instance.vspModel)
|
|
{
|
|
if (mode == 0)
|
|
{
|
|
Component[] p = WeaponRender.instance.vspModel.GetComponentsInChildren(typeof(LineRenderer), true);
|
|
|
|
if (ToggleVisibleIcons.GetComponentInChildren<Text>().text == "Hide all") // Скрываем все
|
|
{
|
|
if (p != null)
|
|
{
|
|
foreach (LineRenderer g in p)
|
|
g.enabled = false;
|
|
}
|
|
isHideIcons = true;
|
|
ToggleVisibleIcons.GetComponentInChildren<Text>().text = "Unhide all";
|
|
IconRender.instance.RootSpawnImage.SetActive(false);
|
|
}
|
|
else // Делаем видимыми
|
|
{
|
|
if (p != null)
|
|
{
|
|
foreach (LineRenderer g in p)
|
|
g.enabled = true;
|
|
}
|
|
isHideIcons = false;
|
|
ToggleVisibleIcons.GetComponentInChildren<Text>().text = "Hide all";
|
|
IconRender.instance.RootSpawnImage.SetActive(true);
|
|
}
|
|
}
|
|
else if (mode == 1)
|
|
{
|
|
if (ToggleRaycast.GetComponentInChildren<Text>().text == "Activate Rays") // Скрываем все
|
|
{
|
|
ToggleRaycast.GetComponentInChildren<Text>().text = "Deactivate Rays";
|
|
InventoryBase.instance.toolTip.isActiveRaycastHit = true;
|
|
|
|
if (ToggleVisibleIcons.GetComponentInChildren<Text>().text == "Hide all")
|
|
HideIcons(0);
|
|
else
|
|
{
|
|
ToggleVisibleIcons.GetComponent<Toggle>().isOn = false;
|
|
ToggleVisibleIcons.GetComponentInChildren<Text>().text = "Unhide all";
|
|
isHideIcons = true;
|
|
}
|
|
ToggleVisibleIcons.GetComponent<Toggle>().enabled = false;
|
|
|
|
InventoryBase.instance.toolTip.SeachMeshRenderer(0);
|
|
}
|
|
else // Делаем видимыми
|
|
{
|
|
ToggleRaycast.GetComponentInChildren<Text>().text = "Activate Rays";
|
|
InventoryBase.instance.toolTip.isActiveRaycastHit = false;
|
|
|
|
HideIcons(0);
|
|
ToggleVisibleIcons.GetComponent<Toggle>().enabled = true;
|
|
|
|
InventoryBase.instance.toolTip.SeachMeshRenderer(1);
|
|
}
|
|
}
|
|
//else if (mode == 1) // Critical
|
|
//{
|
|
// Component[] p = WeaponRender.instance.vspItem.GetComponentsInChildren(typeof(LineRenderer), true);
|
|
// if (ToggleVisibleCriticalIcons.GetComponentInChildren<Text>().text == "Hide critical")
|
|
// {
|
|
// if (p != null)
|
|
// {
|
|
// foreach (LineRenderer g in p)
|
|
// {
|
|
// if(g.GetComponent<Helpers>().IsCritical)
|
|
// g.enabled = false;
|
|
// }
|
|
// }
|
|
// IsHideIcons = true;
|
|
// ToggleVisibleCriticalIcons.GetComponentInChildren<Text>().text = "Unhide critical";
|
|
//
|
|
// ToggleVisibleIcons.GetComponent<Toggle>().isOn = true;
|
|
// ToggleVisibleIcons.GetComponentInChildren<Text>().text = "Unhide all";
|
|
//
|
|
// IconRender.instance.RootSpawnImage.SetActive(false);
|
|
// }
|
|
// else
|
|
// {
|
|
// if (p != null)
|
|
// {
|
|
// foreach (LineRenderer g in p)
|
|
// {
|
|
// if (g.GetComponent<Helpers>().IsCritical)
|
|
// g.enabled = true;
|
|
// }
|
|
// }
|
|
// IsHideIcons = false;
|
|
// ToggleVisibleCriticalIcons.GetComponentInChildren<Text>().text = "Hide critical";
|
|
//
|
|
// ToggleVisibleIcons.GetComponent<Toggle>().isOn = false;
|
|
// ToggleVisibleIcons.GetComponentInChildren<Text>().text = "Hide all";
|
|
//
|
|
// IconRender.instance.RootSpawnImage.SetActive(true);
|
|
// }
|
|
//}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Weapon Modding
|
|
|
|
public void Modding()
|
|
{
|
|
if (InventoryBase.instance.miniMenu && InventoryBase.instance.miniMenu.GetMiniMenu())
|
|
InventoryBase.instance.miniMenu.CloseMiniMenu();
|
|
|
|
// Reset icon state
|
|
if (ToggleVisibleIcons.GetComponent<Toggle>().isOn == true)
|
|
ToggleVisibleIcons.GetComponent<Toggle>().isOn = false;
|
|
if (ToggleRaycast.GetComponent<Toggle>().isOn == true)
|
|
ToggleRaycast.GetComponent<Toggle>().isOn = false;
|
|
|
|
if (IconRender.instance.RootSpawnImage)
|
|
IconRender.instance.RootSpawnImage.SetActive(true);
|
|
|
|
//
|
|
// Search for the desired button (small button on the upper right of the icon)
|
|
//
|
|
|
|
bool isFindClickButton = false; // Indicates that we found the button
|
|
Component[] h = GetComponentsInChildren(typeof(ButtonOptions), true);
|
|
if (h != null)
|
|
{
|
|
foreach (ButtonOptions n in h)
|
|
{
|
|
if ((n.isActive == true || n.isActiveMiniMenu) && n.CL.isActiveMiniMenu == true) // To which we clicked (which is active)
|
|
{
|
|
WeaponRender.instance.SetWeaponParameters(n.CL.itemModding, n.CL);
|
|
isFindClickButton = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
// If we did not find it, we will search among the open mini-menus
|
|
//
|
|
|
|
if (!isFindClickButton)
|
|
{
|
|
h = null;
|
|
h = GetComponentsInChildren(typeof(MenuRightClickButtonState), true); // Looking for all the menu buttons
|
|
if (h != null)
|
|
{
|
|
foreach (MenuRightClickButtonState n in h)
|
|
{
|
|
if (n.isActive == true)
|
|
{
|
|
WeaponRender.instance.SetWeaponParameters(n.CL.itemModding, n.CL);
|
|
n.isActive = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
// We need to enable the modding mode
|
|
//
|
|
|
|
h = null;
|
|
h = WeaponRender.instance.vspModel.GetComponentsInChildren(typeof(Helpers), true);
|
|
if (h != null)
|
|
{
|
|
foreach (Helpers g in h)
|
|
g.IsNotModdingMode = false;
|
|
}
|
|
else
|
|
Debug.Log("h = WeaponRender.instance.vspWeapon.GetComponentsInChildren(typeof(Helpers), true) = null");
|
|
|
|
ToggleVisibleIcons.GetComponentInChildren<Text>().text = "Hide all";
|
|
ToggleRaycast.GetComponentInChildren<Text>().text = "Activate Rays";
|
|
//ToggleVisibleCriticalIcons.GetComponentInChildren<Text>().text = "Hide critical";
|
|
|
|
InventoryBase.instance.scavenger.FreeObjects();
|
|
|
|
InventoryBase.instance.textSaveBack.text = "SAVE";
|
|
|
|
StartCoroutine(ActivateModdingScene());
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Car Modding
|
|
|
|
// Car modding etc...
|
|
public void CarModding(bool state, ItemList cl)
|
|
{
|
|
isActiveCarModding = true;
|
|
|
|
if (InventoryBase.instance.miniMenu && InventoryBase.instance.miniMenu.GetMiniMenu())
|
|
InventoryBase.instance.miniMenu.CloseMiniMenu();
|
|
|
|
// Reset icon state
|
|
if (ToggleVisibleIcons.GetComponent<Toggle>().isOn == true)
|
|
ToggleVisibleIcons.GetComponent<Toggle>().isOn = false;
|
|
ToggleVisibleIcons.GetComponentInChildren<Text>().text = "Hide all";
|
|
|
|
if (ToggleRaycast.GetComponent<Toggle>().isOn == true)
|
|
ToggleRaycast.GetComponent<Toggle>().isOn = false;
|
|
ToggleRaycast.GetComponentInChildren<Text>().text = "Activate Rays";
|
|
|
|
//if (ToggleVisibleCriticalIcons.GetComponent<Toggle>().isOn == true)
|
|
// ToggleVisibleCriticalIcons.GetComponent<Toggle>().isOn = false;
|
|
//ToggleVisibleCriticalIcons.GetComponentInChildren<Text>().text = "Hide critical";
|
|
|
|
if (IconRender.instance.RootSpawnImage)
|
|
IconRender.instance.RootSpawnImage.SetActive(true);
|
|
|
|
//
|
|
// Prepare the model for modding
|
|
//
|
|
|
|
if (cl.tagItem == ItemList.TagItems.MODDING)
|
|
{
|
|
cl.supportPlaneReserve = Instantiate(cl.supportPlane);
|
|
cl.supportPlaneReserve.transform.SetParent(cl.supportPlaneRoot, false);
|
|
cl.item.SetActive(false);
|
|
}
|
|
|
|
if (cl.itemModding)
|
|
{
|
|
Component[] p = cl.itemModding.GetComponentsInChildren(typeof(Helpers), true);
|
|
if (p != null)
|
|
{
|
|
foreach (Helpers g in p)
|
|
g.IsNotModdingMode = false;
|
|
}
|
|
else
|
|
Debug.Log("p = WeaponRender.instance.vspWeapon.GetComponentsInChildren(typeof(Helpers), true) = null");
|
|
|
|
//if (m_ToolTip.IsModdingToolTip) // Если включен этот режим
|
|
//{
|
|
// p = null;
|
|
// p = cl.itemModding.GetComponentsInChildren(typeof(Transform), true);
|
|
//
|
|
// if (p != null)
|
|
// {
|
|
// foreach (Transform n in p)
|
|
// {
|
|
// if (n.GetComponent<MeshRenderer>() || n.GetComponent<SkinnedMeshRenderer>())
|
|
// {
|
|
// if (n.GetComponent<ToolTip>() == null)
|
|
// n.gameObject.AddComponent<ToolTip>();
|
|
// }
|
|
// }
|
|
// }
|
|
//}
|
|
|
|
WeaponRender.instance.SetWeaponParameters(cl.itemModding, cl);
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("WeaponRender.instance.itemModding = false");
|
|
}
|
|
|
|
InventoryBase.instance.scavenger.FreeObjects();
|
|
|
|
InventoryManager.instance.isPauseInventory = state;
|
|
InventoryBase.instance.textSaveBack.text = "SAVE";
|
|
|
|
isActiveModding = true;
|
|
}
|
|
|
|
public void CloseCarModdingScene()
|
|
{
|
|
if (isActiveCarModding)
|
|
{
|
|
Destroy(WeaponRender.instance.CL.supportPlaneReserve);
|
|
//WeaponRender.instance.CL.Item.GetComponentInChildren<LineRenderer>().enabled = true;
|
|
//WeaponRender.instance.CL.Item.GetComponentInChildren<Helpers>().enabled = true;
|
|
WeaponRender.instance.CL.item.SetActive(true);
|
|
|
|
isActiveCarModding = false;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Set, Get, ...
|
|
|
|
public void SetActiveToggleButtons(bool isActive)
|
|
{
|
|
ToggleVisibleIcons.SetActive(isActive);
|
|
if (InventoryBase.instance.toolTip.IsModdingToolTip)
|
|
ToggleRaycast.SetActive(isActive);
|
|
//ToggleVisibleCriticalIcons.SetActive(isActive);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Reset, Close, ...
|
|
|
|
public void ResetModdingParameters()
|
|
{
|
|
isActiveModding = false;
|
|
isHideIcons = false;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region PRIVATE
|
|
|
|
#region Weapon Modding
|
|
|
|
private IEnumerator ActivateModdingScene()
|
|
{
|
|
yield return new WaitForSeconds(0.25f);
|
|
|
|
InventoryManager.instance.isPauseInventory = true;
|
|
|
|
isActiveModding = true;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
}
|