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); } }
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; } } }
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); } }