public pAvailableEnemyTypes(uint id, float cost, eEnemyRoleDifficulty diff, eEnemyRole role, float weight)
 {
     enemyID     = id;
     enemyCost   = cost;
     difficulty  = diff;
     this.role   = role;
     this.weight = weight;
 }
Exemplo n.º 2
0
        static EnemyRoleData CreateCustomData(eEnemyRoleDifficulty difficulty, eEnemyRole role, float cost, uint enemyId, float weightMult = 1)
        {
            EnemyRoleData data = new EnemyRoleData();

            data.Difficulty = difficulty;
            data.Enemy      = enemyId;
            data.Cost       = cost;
            data.Role       = role;
            data.Weight     = Mathf.Min(2f, Mathf.Max(0.2f, UnityEngine.Random.value * weightMult));
            return(data);
        }
        private static eEnemyGroupType GetValidGroupTypeFromRole(eEnemyRole role)
        {
            if (role.Equals(eEnemyRole.Scout))
            {
                return(eEnemyGroupType.Patrol);
            }

            if (role.Equals(eEnemyRole.Lurker))
            {
                return(eEnemyGroupType.PureSneak);
            }
            return(eEnemyGroupType.Hibernate);
        }
        private static void SetupRandomizedGroupsByIDs(LG_PopulateArea area, Dictionary <int, float> enemyIDs)
        {
            if (enemyIDs == null || enemyIDs.Count < 1)
            {
                LoggerWrapper.Log("No enemy population tweaks, aborting setup...");
                return;
            }

            HashSet <pAvailableEnemyTypes> validTypes;

            validTypes = GetValidGroups(enemyIDs);


            Dictionary <pAvailableEnemyTypes, float> weightedGroups = SetupWeighting(validTypes, enemyIDs);

            pAvailableEnemyTypes dataGroup = weightedGroups.RandomElementByWeight(e => e.Value).Key;


            LoggerWrapper.Log(dataGroup.ToString(), LogLevel.Debug);

            if (!enemyIDs.ContainsKey((int)dataGroup.enemyID))
            {
                return;
            }

            area.m_groupPlacement.groupData.Difficulty = dataGroup.difficulty;
            area.m_groupPlacement.groupData.Type       = GetValidGroupTypeFromRole(dataGroup.role);



            foreach (EnemyGroupCompositionData enemyGroupCompositionData in area.m_groupPlacement.groupData.Roles)
            {
                eEnemyRole role = dataGroup.role;
                EnsureValidRole(area.m_groupPlacement.groupData.Type, area.m_groupPlacement.groupData.Difficulty, ref role);
                enemyGroupCompositionData.Role = role;
            }


            LoggerWrapper.Log($"Setting enemyDataGroup: Diff:{area.m_groupPlacement.groupData.Difficulty} Role:{area.m_groupPlacement.groupData.Type} Type:{dataGroup.role}", LogLevel.Debug);
        }
 private static void EnsureValidRole(eEnemyGroupType type, eEnemyRoleDifficulty difficulty, ref eEnemyRole role)
 {
     if (type == eEnemyGroupType.Patrol)
     {
         role = eEnemyRole.Scout;
     }
 }