/// <summary> /// Does the unit meet the vocation requirements? /// </summary> /// <param name="unit"> Unit required.</param> /// <param name="requiredVocation"> The required vocation for the current skill.</param> private static bool VocationRequirements(Unit unit, ScriptableObjectReference requiredVocation) { VocationBaseData primaryVocation = unit.primaryVocation; VocationBaseData secondaryVocation = unit.secondaryVocation; bool primaryVocationMet = CheckVocation(unit, requiredVocation, primaryVocation); bool secondaryVocationMet = CheckVocation(unit, requiredVocation, secondaryVocation); int requiredVocationLength = requiredVocation.values.Length; switch (requiredVocationLength) { // if there is only one requirement if either of the primary vocations meet the requirement then return true. case 1: if (primaryVocationMet || secondaryVocationMet) { return(true); } break; default: if (primaryVocationMet && secondaryVocationMet) { return(true); } break; } Debug.Log($"{unit.name} has not met the requirements"); return(false); }
/// <summary> /// Does one of the units vocations equal to one of the required vocations? /// </summary> /// <param name="unit"> Unit required.</param> /// <param name="requiredVocation"> The required vocation for the current skill.</param> /// <param name="unitVocation"> Units vocation being checked.</param> private static bool CheckVocation(Unit unit, ScriptableObjectReference requiredVocation, VocationBaseData unitVocation) { string vocationName = unitVocation.Name; int requiredVocationLength = requiredVocation.values.Length; for (int i = 0; i < requiredVocationLength; i++) { string requiredVocationName = requiredVocation.values[i].name; if (vocationName == requiredVocationName) { Debug.Log($"{unit.name} has met the requirements vocation requirement:{requiredVocationName}."); return(true); } continue; } return(false); }