feat: 젬 분류 사양과 장착 UI 반영
- 옵시디언 기준의 역할/발동 타입 분류를 스킬·젬 데이터와 장착 검증 로직에 반영 - 젬 보관 UI와 퀵슬롯 표시를 새 분류 및 실제 마나/쿨타임 계산 기준으로 갱신 - 테스트 스킬/젬 자산을 에디터 메뉴로 동기화하고 Unity 컴파일 및 플레이 검증 완료
This commit is contained in:
@@ -13,12 +13,14 @@ namespace Colosseum.Skills
|
||||
public enum SkillGemCategory
|
||||
{
|
||||
Common,
|
||||
Attack,
|
||||
Threat,
|
||||
Defense,
|
||||
Support,
|
||||
Control,
|
||||
Efficiency,
|
||||
Damage,
|
||||
Survival,
|
||||
Mana,
|
||||
Special,
|
||||
BuffPower,
|
||||
Duration,
|
||||
Area,
|
||||
Cost,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -66,9 +68,13 @@ namespace Colosseum.Skills
|
||||
[SerializeField] private SkillGemCategory category = SkillGemCategory.Common;
|
||||
|
||||
[Header("장착 제약")]
|
||||
[Tooltip("장착 가능한 기반 스킬 분류입니다. None 또는 All이면 제한하지 않습니다.")]
|
||||
[Tooltip("장착 가능한 스킬 역할 조합입니다. None 또는 All이면 역할 제한을 두지 않습니다.")]
|
||||
[SerializeField] private SkillRoleType allowedSkillRoles = SkillRoleType.All;
|
||||
[Tooltip("장착 가능한 스킬 발동 타입 조합입니다. None 또는 All이면 타입 제한을 두지 않습니다.")]
|
||||
[SerializeField] private SkillActivationType allowedSkillActivationTypes = SkillActivationType.All;
|
||||
[Tooltip("기존 테스트 자산과의 호환을 위한 기반 스킬 분류입니다. 새 사양에서는 역할/발동 타입을 우선 사용합니다.")]
|
||||
[SerializeField] private SkillBaseType allowedSkillTypes = SkillBaseType.All;
|
||||
[Tooltip("함께 장착할 수 없는 젬 분류")]
|
||||
[Tooltip("함께 장착할 수 없는 젬 효과 분류")]
|
||||
[SerializeField] private SkillGemCategory[] incompatibleCategories = Array.Empty<SkillGemCategory>();
|
||||
[Tooltip("함께 장착할 수 없는 특정 젬")]
|
||||
[SerializeField] private List<SkillGemData> incompatibleGems = new();
|
||||
@@ -107,6 +113,8 @@ namespace Colosseum.Skills
|
||||
public string Description => description;
|
||||
public Sprite Icon => icon;
|
||||
public SkillGemCategory Category => category;
|
||||
public SkillRoleType AllowedSkillRoles => allowedSkillRoles;
|
||||
public SkillActivationType AllowedSkillActivationTypes => allowedSkillActivationTypes;
|
||||
public SkillBaseType AllowedSkillTypes => allowedSkillTypes;
|
||||
public float ManaCostMultiplier => manaCostMultiplier;
|
||||
public float CooldownMultiplier => cooldownMultiplier;
|
||||
@@ -131,6 +139,15 @@ namespace Colosseum.Skills
|
||||
if (skill == null)
|
||||
return false;
|
||||
|
||||
bool usesRoleRestriction = allowedSkillRoles != SkillRoleType.None && allowedSkillRoles != SkillRoleType.All;
|
||||
bool usesActivationRestriction = allowedSkillActivationTypes != SkillActivationType.None &&
|
||||
allowedSkillActivationTypes != SkillActivationType.All;
|
||||
|
||||
if (usesRoleRestriction || usesActivationRestriction)
|
||||
{
|
||||
return skill.MatchesClassification(allowedSkillRoles, allowedSkillActivationTypes);
|
||||
}
|
||||
|
||||
if (allowedSkillTypes == SkillBaseType.None || allowedSkillTypes == SkillBaseType.All)
|
||||
return true;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user