示例#1
0
    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);
        }
    }
示例#2
0
        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);
        }