public void RandomizeAreaSpriteGroups(SpriteGroupCollection spriteGroups) { // TODO: this needs to be updated??? foreach (var a in OverworldAreas.Where(x => OverworldAreaConstants.DoNotRandomizeAreas.Contains(x.AreaId) == false)) { List <SpriteRequirement> doNotUpdateSprites = spriteRequirementCollection .DoNotRandomizeSprites .Where(x => //x.CanSpawnInRoom(a) //&& a.Sprites.Select(y => y.SpriteId).ToList().Contains(x.SpriteId) ) .ToList(); var possibleSpriteGroups = spriteGroups.GetPossibleOverworldSpriteGroups(doNotUpdateSprites).ToList(); //Debug.Assert(possibleSpriteGroups.Count > 0); a.GraphicsBlockId = (byte)possibleSpriteGroups[rand.Next(possibleSpriteGroups.Count)].GroupId; } OverworldGroupRequirementCollection owReqs = new OverworldGroupRequirementCollection(); // force any areas we need to foreach (var sg in owReqs.OverworldRequirements) { foreach (var forcedR in OverworldAreas.Where(x => sg.Areas.Contains(x.AreaId))) { forcedR.GraphicsBlockId = (byte)sg.GroupId; } } }
public void SetupRequiredOverworldGroups() { OverworldGroupRequirementCollection owReqs = new OverworldGroupRequirementCollection(); var rGroup = owReqs.OverworldRequirements.Where(x => x.GroupId != null); foreach (var g in rGroup) { UsableOverworldSpriteGroups.Where(x => g.GroupId == x.GroupId).ToList() .ForEach((x) => { if (g.Subgroup0 == null && g.Subgroup1 == null && g.Subgroup2 == null && g.Subgroup3 == null) { // lazy x.PreserveSubGroup0 = true; x.PreserveSubGroup1 = true; x.PreserveSubGroup2 = true; x.PreserveSubGroup3 = true; } if (g.Subgroup0 != null) { x.SubGroup0 = (int)(g.Subgroup0 ?? x.SubGroup0); x.PreserveSubGroup0 = true; } if (g.Subgroup1 != null) { x.SubGroup1 = (int)(g.Subgroup1 ?? x.SubGroup1); x.PreserveSubGroup1 = true; } if (g.Subgroup2 != null) { x.SubGroup2 = (int)(g.Subgroup2 ?? x.SubGroup2); x.PreserveSubGroup2 = true; } if (g.Subgroup3 != null) { x.SubGroup3 = (int)(g.Subgroup3 ?? x.SubGroup3); x.PreserveSubGroup3 = true; } //if (g.GroupId != null) //{ // x.ForceRoomsToGroup.AddRange(g.Rooms); //} }); } }