Пример #1
0
 private void GenerateAreaTrainerEncounters()
 {
     // Check for every trainer pivot index if there are trees with moderate encounter and low encounter available in the area
     TrainerModerateEncounterTree = new TreeEncounterAvailable[PivotCount];
     TrainerLowEncounterTree      = new TreeEncounterAvailable[PivotCount];
     for (int i = 0; i < PivotCount; i++)
     {
         var TrainerModerateTrees = TrainerModerateTreeIndex[i];
         TrainerModerateEncounterTree[i] = GetAvailableModerate(TrainerModerateTrees);
         TrainerLowEncounterTree[i]      = GetAvailableLow(TrainerModerateTrees);
     }
 }
Пример #2
0
        private void GenerateAreaTrainerEncounters()
        {
            // Check for every trainer pivot index if there are trees with low encounter and moderate encounter available in the area
            TrainerModerateEncounterTree = new TreeEncounterAvailable[10];
            TrainerLowEncounterTree      = new TreeEncounterAvailable[10];
            for (int pivotindex = 0; pivotindex < 10; pivotindex++)
            {
                var TrainerModerateTrees = TrainerModerateTreeIndex[pivotindex];

                var ModerateValid   = ValidTreeIndex.Any(t => TrainerModerateTrees.Contains(t));
                var ModerateInvalid = InvalidTreeIndex.Any(t => TrainerModerateTrees.Contains(t));
                if (ModerateValid)
                {
                    // There is a valid tree with an index for moderate encounters
                    TrainerModerateEncounterTree[pivotindex] = TreeEncounterAvailable.ValidTree;
                }
                else if (ModerateInvalid)
                {
                    // There is a tree with an index for moderate encounters but is invalid
                    TrainerModerateEncounterTree[pivotindex] = TreeEncounterAvailable.InvalidTree;
                }
                else
                {
                    // No trees for moderate encounters
                    TrainerModerateEncounterTree[pivotindex] = TreeEncounterAvailable.Impossible;
                }

                var LowValid   = ValidTreeIndex.Except(TrainerModerateTrees).Any();
                var LowInvalid = InvalidTreeIndex.Except(TrainerModerateTrees).Any();
                if (LowValid)
                {
                    // There is a valid tree with an index for low encounters
                    TrainerLowEncounterTree[pivotindex] = TreeEncounterAvailable.ValidTree;
                }
                else if (LowInvalid)
                {
                    // There is a tree with an index for low encounters but is invalid
                    TrainerLowEncounterTree[pivotindex] = TreeEncounterAvailable.InvalidTree;
                }
                else
                {
                    // No trees for low encounters
                    TrainerLowEncounterTree[pivotindex] = TreeEncounterAvailable.Impossible;
                }
            }
        }
Пример #3
0
        private static void CreatePivotLists(TreeCoordinates[] valid, TreeCoordinates[] invalid, out TreeEncounterAvailable[] moderate, out TreeEncounterAvailable[] low)
        {
            // For legality purposes, only the tree index is needed.
            // Group the trees data by their index; trees that share indexes are indistinguishable from one another
            var TreeIndexValid   = valid.Select(t => t.Index).Distinct().ToArray();
            var TreeIndexInvalid = invalid.Select(t => t.Index).Distinct().Except(TreeIndexValid).ToArray();

            Array.Sort(TreeIndexValid);
            Array.Sort(TreeIndexInvalid);

            // Check for every trainer pivot index if there are trees with moderate encounter and low encounter available in the area
            moderate = new TreeEncounterAvailable[PivotCount];
            low      = new TreeEncounterAvailable[PivotCount];
            for (int i = 0; i < PivotCount; i++)
            {
                var TrainerModerateTrees = TrainerModerateTreeIndex[i];
                moderate[i] = GetIsAvailableModerate(TrainerModerateTrees, TreeIndexValid, TreeIndexInvalid);
                low[i]      = GetIsAvailableLow(TrainerModerateTrees, TreeIndexValid, TreeIndexInvalid);
            }
        }