public void changePlayerCurrentFloor(CurrentPlayerFloor floor) { myFloor = floor; if (myFloor == CurrentPlayerFloor.UpperFloor) { UpperFloor.SetActive(true); LowerFloor.SetActive(true); } else if (myFloor == CurrentPlayerFloor.LowerFloor) { LowerFloor.SetActive(true); UpperFloor.SetActive(false); } }
public IList <BuildingState> SafeFloorRearrangements() { var validForElevator = CurrentFloor.SafeChipGeneratorCombinations(); var safeToRelease = validForElevator.Where(a => CurrentFloor.Release(a).IsSafe()).ToList(); var safeRearrangements = new List <BuildingState>(); if (CanMoveDown) { var safeToReceive = safeToRelease.Where(a => LowerFloor.Merge(a).IsSafe()); foreach (var assembly in safeToReceive) { var newBuildingFloors = Floors.Select(a => a.Copy()).ToList(); var newThis = CurrentFloor.Release(assembly); var newLower = LowerFloor.Merge(assembly); newBuildingFloors[Elevator] = newThis; newBuildingFloors[Elevator - 1] = newLower; safeRearrangements.Add(new BuildingState(Elevator - 1, newBuildingFloors, StateDepth + 1)); } } if (CanMoveUp) { var safeToReceive = safeToRelease.Where(a => UpperFloor.Merge(a).IsSafe()); foreach (var assembly in safeToReceive) { var newBuildingFloors = Floors.Select(a => a.Copy()).ToList(); var newThis = CurrentFloor.Release(assembly); var newUpper = UpperFloor.Merge(assembly); newBuildingFloors[Elevator] = newThis; newBuildingFloors[Elevator + 1] = newUpper; safeRearrangements.Add(new BuildingState(Elevator + 1, newBuildingFloors, StateDepth + 1)); } } return(safeRearrangements); }