projectEli/Assets/Inventory System/ICWM Assets/Inventory/Scripts/Helper/StartStuff.cs

216 lines
10 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//********************************************************//
// //
// 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<GameObject> 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<GameObject>();
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<ItemsDrop>().CL.destroyItemDrop = playerItems[count];
if (count < m_PlayerItems.Length)
TransferItemToPlayerSlots(playerItems[count].GetComponent<ItemsDrop>().CL, playerItems[count]);
else
TransferItemToPlayerBackpack(playerItems[count].GetComponent<ItemsDrop>().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<ItemsDrop>().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<ItemsDrop>().CL = Helper.SetParameters(playerItem.GetComponent<ItemsDrop>().CL, playerItem);
playerItem.GetComponent<ItemsDrop>().CL.SetItemModdingParameters(false, playerItem.transform);
if (playerItem.GetComponent<ItemsDrop>().CL.IsRenderItem() && playerItem.GetComponent<ItemsDrop>().WithAttachments)
Helper.AddAttachmentsToItem(playerItem.GetComponent<ItemsDrop>().WeaponAttachments, playerItem.GetComponent<ItemsDrop>().CL, transform);
return playerItem;
}
#endregion
}
}
}