CapersProject/Assets/02.Scripts/Item/ItemDropTable.cs
Nam Tae Gun 7fb0da5888 #25, #26 아이템 직접 획득 방식 추가 및 선형적인 맵 구조 변경
+ Item관련 Excel, Json, So 수정
+ DropItemTable 로직 수정
+ 아이템 프리팹에서 Enable Interaction 체크하면 직접 룻팅, 해제하면 자동 룻팅
+ 체력회복 아이템 추가
+ 개발자 메뉴 상호작용 "F1" 키를 통해 접근 가능
+ 보스 맵은 마법진을 상호작용하면 보스전 시작
+ 맵 안에서 교전 중일 때, 투명 벽 쉐이더 추가
+ 맵 마다의 통로를 통해서 이동 가능
+ 선형적인 맵 구조에 맞게 리소스 및 위치 수정
+ 타이틀 화면으로 이동할 때 나타나는 오류 수정(CombatUiManager OnDisable 싱글톤 문제)

Closes #25, #26
2024-06-22 07:11:53 +09:00

46 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
using Random = UnityEngine.Random;
namespace BlueWater.Items
{
[Serializable]
public class ItemDropTable
{
[field: SerializeField]
public CharacterData CharacterData { get; set; }
// ItemDropTableScriptableObject 클래스에서 생성되기 떄문에 new() 필수
[field: SerializeField]
public List<DropItem> DropItems { get; set; } = new();
private List<ItemSlot> _itemSlots;
public ItemDropTable(CharacterData characterData)
{
CharacterData = characterData;
}
public List<ItemSlot> GetDroppedItemList()
{
_itemSlots = new List<ItemSlot>();
foreach (var element in DropItems)
{
CheckAndAddItem(element);
}
return _itemSlots;
}
private void CheckAndAddItem(DropItem dropItem)
{
var dropChance = Random.Range(0, 101);
if (dropChance > dropItem.DropRate) return;
var randomCount = Random.Range(dropItem.QuantityMin, dropItem.QuantityMax + 1);
_itemSlots.Add(new ItemSlot(dropItem.ItemIdx, randomCount));
}
}
}