//********************************************************// // // // Copyright © All rights reserved. MyNameIsVoo. 2020. // // // // REPRODUCTION FORBIDEN // // // //********************************************************// using UnityEngine; using System.Collections.Generic; using ItemsClassList; using ICWM.ItemSystem; namespace ICWM { namespace HelperSystem { public class StartStuff : MonoBehaviour { #region Attributes [Header("ATTRIBUTES")] [Space(5)] [SerializeField] private GameObject m_SpawnPointItems; [Header("PLAYER ITEMS")] [Space(5)] [SerializeField] private GameObject[] m_PlayerItems; [Header("ITEMS")] [Space(5)] [SerializeField] private GameObject[] m_Items; private List playerItems; private bool isStop = false; private bool isCreatedItems = false; private float deltaTime = 0.0f; private int count = 0; const float waitSeconds = 0.15f; #endregion private void Start() { playerItems = new List(); for (int i = 0; i < m_PlayerItems.Length; i++) playerItems.Add(CreateItem(m_PlayerItems[i])); for (int i = 0; i < m_Items.Length; i++) playerItems.Add(CreateItem(m_Items[i])); } private void Update() { if (!isCreatedItems) { // We need to create ClassList and then deactivate items (unhide) if (deltaTime >= 4f * waitSeconds) // Wait { isCreatedItems = true; deltaTime = 0.0f; } } else // Then we transfer to Inventory { if (deltaTime >= waitSeconds && !isStop) { if (count < playerItems.Count) { deltaTime = 0.0f; playerItems[count].GetComponent().CL.destroyItemDrop = playerItems[count]; if (count < m_PlayerItems.Length) TransferItemToPlayerSlots(playerItems[count].GetComponent().CL, playerItems[count]); else TransferItemToPlayerBackpack(playerItems[count].GetComponent().CL, playerItems[count]); ++count; } else { isStop = true; deltaTime = 0.0f; count = 0; playerItems = null; this.enabled = false; } } } deltaTime += Time.deltaTime; } #region PRIVATE private void TransferItemToPlayerSlots(ItemList itemCL, GameObject item) { if (!itemCL.IsBackpackItemSlot() && BackpackSystem.instance.RE4O_IsActive()) return; if (itemCL.tagItem == ItemList.TagItems.WEAPON) { if (!InventoryBase.instance.selectWeapon.IsActiveOnSling && InventoryBase.instance.selectWeapon.OnSling.transform.childCount == 0) { PlayerSystem.instance.isActiveSpawnOnSling = true; if (!InventoryBase.instance.selectWeapon.IsActiveOnHolster && !InventoryBase.instance.selectWeapon.IsActiveOnBack && !InventoryBase.instance.selectWeapon.IsActiveOnScabbard) // Если у нас нет оружия, то берем его в руки PlayerSystem.instance.takeWeapon = true; PlayerSystem.instance.CreateWeaponSlots(itemCL, null); } else if (!InventoryBase.instance.selectWeapon.IsActiveOnBack && InventoryBase.instance.selectWeapon.OnBack.transform.childCount == 0) { PlayerSystem.instance.isActiveSpawnOnBack = true; if (!InventoryBase.instance.selectWeapon.IsActiveOnHolster && !InventoryBase.instance.selectWeapon.IsActiveOnSling && !InventoryBase.instance.selectWeapon.IsActiveOnScabbard) // Если у нас нет оружия, то берем его в руки PlayerSystem.instance.takeWeapon = true; PlayerSystem.instance.CreateWeaponSlots(itemCL, null); } } else if (itemCL.tagItem == ItemList.TagItems.PISTOL) { if (!InventoryBase.instance.selectWeapon.IsActiveOnHolster && InventoryBase.instance.selectWeapon.Holster.transform.childCount == 0) { PlayerSystem.instance.isActiveSpawnOnHolster = true; if (!InventoryBase.instance.selectWeapon.IsActiveOnSling && !InventoryBase.instance.selectWeapon.IsActiveOnBack && !InventoryBase.instance.selectWeapon.IsActiveOnScabbard) // Если у нас нет оружия, то берем его в руки PlayerSystem.instance.takeWeapon = true; PlayerSystem.instance.CreateWeaponSlots(itemCL, null); } } else if (itemCL.tagItem == ItemList.TagItems.KNIFE) { if (!InventoryBase.instance.selectWeapon.IsActiveOnScabbard && InventoryBase.instance.selectWeapon.Scabbard.transform.childCount == 0) { PlayerSystem.instance.isActiveSpawnOnScabbard = true; if (!InventoryBase.instance.selectWeapon.IsActiveOnSling && !InventoryBase.instance.selectWeapon.IsActiveOnBack && !InventoryBase.instance.selectWeapon.IsActiveOnHolster) // Если у нас нет оружия, то берем его в руки PlayerSystem.instance.takeWeapon = true; PlayerSystem.instance.CreateWeaponSlots(itemCL, null); } } else { if (itemCL.tagItem == ItemList.TagItems.BODYHEADSET && !PlayerSystem.instance.isActiveHeadset) PlayerSystem.instance.SpawnBodyItems(itemCL); else if (itemCL.tagItem == ItemList.TagItems.BODYGOGGLES && !PlayerSystem.instance.isActiveGoggles) PlayerSystem.instance.SpawnBodyItems(itemCL); else if (itemCL.tagItem == ItemList.TagItems.BODYHELMET && !PlayerSystem.instance.isActiveHelmet) PlayerSystem.instance.SpawnBodyItems(itemCL); else if (itemCL.tagItem == ItemList.TagItems.BODYARMOR && !PlayerSystem.instance.isActiveBodyArmor) PlayerSystem.instance.SpawnBodyItems(itemCL); else if ((itemCL.tagItem == ClassList.TagItems.BODYPOCKETS && !BackpackSystem.instance.GetBackpackInfo().isActivePockets) || (itemCL.tagItem == ClassList.TagItems.BODYTACTICALRIG && !BackpackSystem.instance.GetBackpackInfo().isActiveTacticalRig) || (itemCL.tagItem == ClassList.TagItems.BODYBACKPACK && !BackpackSystem.instance.GetBackpackInfo().isActiveBackpack)) { BackpackSystem.instance.SpawnBodySet(itemCL); } } if (item && InventoryBase.instance.m_Hotbar.isActiveHotbar) InventoryBase.instance.m_Hotbar.UpdateHotbarSlots(item.GetComponent().CL); } private void TransferItemToPlayerBackpack(ItemList itemCL, GameObject item) { if (BackpackSystem.instance.GetBackpackInfo().IsHaveFreeSlotInTacticalRigOrPockets(itemCL.tagSize) != -1) { BackpackSystem.instance.CreateItemInTacticalRigOrPockets(itemCL); UpdatePlayerStatistics(itemCL); } else if (BackpackSystem.instance.GetBackpackInfo().IsHaveFreeSlotBackpack(itemCL.indexPos60x60)) { BackpackSystem.instance.CreateItemInBackpack(itemCL, BackpackSystem.instance.rootIconItemsBackpackSpawn.transform); UpdatePlayerStatistics(itemCL); } } private void UpdatePlayerStatistics(ItemList itemCL) { if (itemCL.isBullet) { InventoryBase.instance.RE4_amountOfBullet += itemCL.amountBullet; } else if (itemCL.isLatchkey) { InventoryBase.instance.PlayerStatistics.AmountMultools += itemCL.amountStack; } } private GameObject CreateItem(GameObject originalItem) { GameObject playerItem; playerItem = Instantiate(originalItem, m_SpawnPointItems.transform); playerItem.transform.localScale = Vector3.one; playerItem.transform.localPosition = m_SpawnPointItems.transform.localPosition; playerItem.SetActive(true); playerItem.GetComponent().CL = Helper.SetParameters(playerItem.GetComponent().CL, playerItem); playerItem.GetComponent().CL.SetItemModdingParameters(false, playerItem.transform); if (playerItem.GetComponent().CL.IsRenderItem() && playerItem.GetComponent().WithAttachments) Helper.AddAttachmentsToItem(playerItem.GetComponent().WeaponAttachments, playerItem.GetComponent().CL, transform); return playerItem; } #endregion } } }