예제 #1
0
        public void GetSlmmMoveDirectionNotImplementedtest()
        {
            var slmmMoveDirectionFactoryService = ObjectsContainer.GetObject <ISlmmMoveDirectionFactoryService>();

            Assert.That(() => slmmMoveDirectionFactoryService.GetSlmmMoveDirection(DirectionEnum.Direction.SouthEast),
                        Throws.Exception.TypeOf <Exception>().With.Property("Message").EqualTo("Slmm Move not implemented for Direction : SouthEast"));
        }
        public void TestSingleDecor()
        {
            var container = new ObjectsContainer();

            container.AddDecor(new Chair());
            Assert.True(container.ShowDecor() is Chair);
        }
        public void TestNotSolid()
        {
            var container = new ObjectsContainer();

            container.AddDecor(new Carpet());
            Assert.False(container.IsSolid);
        }
예제 #4
0
        public void TestObjectReferenceSameInstance()
        {
            var nodeContainer = new NodeContainer();
            var instance      = new TestObject {
                Name = "Test"
            };
            var container = new ObjectsContainer {
                Instance1 = instance, Instance2 = instance
            };
            var containerNode = nodeContainer.GetOrCreateNode(container);

            Helper.TestNonCollectionObjectNode(containerNode, container, 2);

            var member1Node = containerNode.Members.First();

            Helper.TestMemberNode(containerNode, member1Node, container, instance, nameof(ObjectsContainer.Instance1), true);
            Helper.TestNonNullObjectReference(member1Node.TargetReference, instance, false);

            var member2Node = containerNode.Members.Last();

            Helper.TestMemberNode(containerNode, member2Node, container, instance, nameof(ObjectsContainer.Instance2), true);
            Helper.TestNonNullObjectReference(member2Node.TargetReference, instance, false);

            var reference1 = member1Node.TargetReference;
            var reference2 = member2Node.TargetReference;

            Assert.Equal(reference1.TargetGuid, reference2.TargetGuid);
            Assert.Equal(reference1.TargetNode, reference2.TargetNode);
            Assert.Equal(reference1.ObjectValue, reference2.ObjectValue);
        }
예제 #5
0
 public Cell(string background)
 {
     Enum.TryParse(background, true, out CellType type);
     Type            = type;
     Creature        = null;
     ObjectContainer = new ObjectsContainer();
 }
예제 #6
0
        public void TestObjectReferenceSameInstance()
        {
            var nodeContainer = new NodeContainer();
            var instance      = new TestObject {
                Name = "Test"
            };
            var container = new ObjectsContainer {
                Instance1 = instance, Instance2 = instance
            };
            var containerNode = nodeContainer.GetOrCreateNode(container);

            Helper.TestObjectContentNode(containerNode, container, 2);

            var member1Node = containerNode.Children.First();

            Helper.TestMemberContentNode(containerNode, member1Node, container, instance, nameof(ObjectsContainer.Instance1), true);
            Helper.TestNonNullObjectReference(member1Node.Content.Reference, instance);

            var member2Node = containerNode.Children.Last();

            Helper.TestMemberContentNode(containerNode, member2Node, container, instance, nameof(ObjectsContainer.Instance2), true);
            Helper.TestNonNullObjectReference(member2Node.Content.Reference, instance);

            var reference1 = member1Node.Content.Reference.AsObject;
            var reference2 = member2Node.Content.Reference.AsObject;

            Assert.AreEqual(reference1.TargetGuid, reference2.TargetGuid);
            Assert.AreEqual(reference1.TargetNode, reference2.TargetNode);
            Assert.AreEqual(reference1.ObjectValue, reference2.ObjectValue);
        }
        public void TestSolid()
        {
            var container = new ObjectsContainer();

            container.AddDecor(new Chair());
            Assert.True(container.IsSolid);
        }
        public void TestTransparency()
        {
            var container = new ObjectsContainer();

            container.AddDecor(new Table());
            container.AddDecor(new Vase());
            Assert.False(container.IsOpaque);
        }
        public void TestOpacity()
        {
            var container = new ObjectsContainer();

            container.AddDecor(new Wall());
            container.AddDecor(new PaintingFlowers());
            Assert.True(container.IsOpaque);
        }
        public void TestDecorsOrded()
        {
            var container = new ObjectsContainer();

            container.AddDecor(new PaintingFlowers());
            container.AddDecor(new Wall());
            Assert.True(container.ShowDecor() is PaintingFlowers);
        }
예제 #11
0
        static void Main(string[] args)
        {
            StartUp.SlmmContainer.Configure(x => x.For <IMowerApiHttpClient>().Use <MowerApiHttpClient>()
                                            .Ctor <string>("basePath").Is(@"http://localhost:61177"));

            var httpClient = ObjectsContainer.GetObject <IMowerApiHttpClient>();
            var mower      = new SmartMowerMachine(1, 1, 10, 10, DirectionEnum.Direction.East);

            httpClient.Turn90AntiClockwise(mower);
        }
예제 #12
0
        public void GetSlmmMoveDirectiontest(DirectionEnum.Direction direction, string expectedType)
        {
            var mowerApiHttpClientMock = new Mock <IMowerApiHttpClient>();

            ObjectsContainer.InjectObject <IMowerApiHttpClient>(mowerApiHttpClientMock.Object);
            var slmmMoveDirectionFactoryService = ObjectsContainer.GetObject <ISlmmMoveDirectionFactoryService>();
            var res = slmmMoveDirectionFactoryService.GetSlmmMoveDirection(direction);

            Assert.AreEqual(expectedType, res.GetType().ToString());
        }
    void Start()
    {
        myRoom = GetComponentInParent <ObjectsContainer>();
        rnd    = new System.Random(myRoom.Seed);
        foreach (Pillar p in pillars)
        {
            p.SetPillarsRoomManager(this);
        }

        GenerateSolution();
        GenerateGUIPaths();
    }
예제 #14
0
        public static MesUnit [] GetByItem(Item item)
        {
            ObjectsContainer <string, string> ret = BusinessDomain.DataAccessProvider.GetUnitsForItem(item.Id);

            return(ret != null ?
                   new [] { new MesUnit {
                                Name = ret.Value1
                            }, new MesUnit {
                                Name = ret.Value2
                            } } :
                   new MesUnit [0]);
        }
예제 #15
0
        /// <summary>
        /// When a new game is launched
        /// </summary>
        public void SwitchToGame()
        {
            BeforeSwitch();

            AddNewGameObject(new GameBackground());

            ObjectsContainer objectsContainer = new ObjectsContainer();

            AddNewGameObject(objectsContainer);

            AddNewGameObject(new UserLife(objectsContainer.User));
        }
    private void Start()
    {
        if (instance == null)
        {
            instance = this;
        }
        else
        {
            Destroy(gameObject);
        }

        DontDestroyOnLoad(gameObject);
    }
    public override void Generate(int seed, bool isPlayer2)
    {
        rnd                   = new System.Random(seed);
        _regions              = new List <Region>();
        TileList              = new List <Tile>();
        Wall                  = new List <Tile>();
        Floor                 = new List <Tile>();
        Spawn                 = new List <Tile>();
        Decoration            = new List <Tile>();
        Entrance              = new List <Tile>();
        Exit                  = new List <Tile>();
        diaryImageList        = new List <Image>();
        _occupiedTile         = new List <Vector3Int>();
        _otherRoomCellsStack  = new Stack <Cell>();
        _actualRoomCellsStack = new Stack <Cell>();
        _cellMap              = new Dictionary <int, Cell>();
        _listCheckpoints      = new List <List <GameObject> >();
        _roomList             = new List <Room>();
        _isPlayer2            = isPlayer2;
        _mazeTransform        = new GameObject("RoomMaze").transform;
        ObjectsContainer objectsContainer = _mazeTransform.gameObject.AddComponent <ObjectsContainer>();

        objectsContainer.Seed = seed;
        Random.InitState(seed);
        rnd = new System.Random(seed);
        int random;

        while ((random = Random.Range(_minSetSpace, maxSpace)) % 3 != 0)
        {
            ;
        }
        _sizeX = _minSetSpace;            //TODO return to random value
        _sizeY = _minSetSpace;
        _requiredWidthSpace = _sizeX + 2; //due to the walls

        GenerateInternal();
        FindRoomNeighbor();
        ReshapeRooms();
        ReshapeRooms();
        ConnectNeighbor();
        GenerateTile();
        GenerateWall();
        SpawnAgent();
        removeOverlappingWallsAndFloor();
        SpawnResetLever();

        _lowestX = -1;//these are due to the presence of the wall
        _lowestY = -1;
    }
예제 #18
0
        public void test(int currentX, int currentY, int maxX, int maxY, DirectionEnum.Direction direction, bool clockwise, int expectedCurrentX, bool expectedClockwise)
        {
            //Arrange
            var slmmService = ObjectsContainer.GetObject <ISlmmService>();

            slmmService.SmartMower = new SmartMowerMachine(currentX, currentY, maxX, maxY, direction);
            slmmService.Clockwise  = clockwise;
            var xCoordinateService = ObjectsContainer.GetObject <IXCoordinateService>();

            //Act
            xCoordinateService.CheckXValues(slmmService);

            //Assert
            Assert.AreEqual(expectedCurrentX, slmmService.SmartMower.CurrentX);
            Assert.AreEqual(expectedClockwise, slmmService.Clockwise);
        }
예제 #19
0
        public static void FillMap(List <List <string> > content)
        {
            for (var i = 0; i < content.Count; i++)
            {
                var background = content[i][0];
                var newCell    = new Cell(background);

                foreach (var dec in content[i].Skip(1))
                {
                    newCell.ObjectContainer.AddDecor(ObjectsContainer.ParseDecor(dec));
                }

                Map[i % Map.Wigth, i / Map.Wigth] = newCell;
                NoiseController.Noises[i % Map.Wigth, i / Map.Wigth] = new HashSet <Noise>();
            }
        }
예제 #20
0
        static void Main(string[] args)
        {
            var basePath = ConfigurationManager.AppSettings["baseUrl"];

            if (string.IsNullOrWhiteSpace(basePath))
            {
                throw new Exception("Missing basePath config");
            }
            StartUp.SlmmContainer.Configure(x => x.For <IMowerApiHttpClient>().Use <MowerApiHttpClient>()
                                            .Ctor <string>("basePath").Is(basePath));
            var slmmService = ObjectsContainer.GetObject <ISlmmService>();

            slmmService.SmartMower = new SmartMowerMachine();
            slmmService.SmartMower.ReadFromConfig();
            slmmService.StartMovingSlmm();
            Console.ReadLine();
        }
        public ISlmmMove GetSlmmMoveDirection(DirectionEnum.Direction direction)
        {
            switch (direction)
            {
            case DirectionEnum.Direction.North:
                return(ObjectsContainer.GetObjectByName <ISlmmMove>("SlmmMoveNorthService"));

            case DirectionEnum.Direction.South:
                return(ObjectsContainer.GetObjectByName <ISlmmMove>("SlmmMoveSouthService"));

            case DirectionEnum.Direction.East:
                return(ObjectsContainer.GetObjectByName <ISlmmMove>("SlmmMoveEastService"));

            case DirectionEnum.Direction.West:
                return(ObjectsContainer.GetObjectByName <ISlmmMove>("SlmmMoveWestService"));

            default:
                throw new Exception(String.Format("Slmm Move not implemented for Direction : {0}", direction));
            }
        }
예제 #22
0
        public void MoveOneSteptest(int currentX, int currentY, int maxX, int maxY, DirectionEnum.Direction direction, int expectedCurrentX, int expectedCurrentY, DirectionEnum.Direction expectedDirection, int expectedClockWise90, int expectedAntiClockWise90)
        {
            //Arrange
            var mowerHttpClientMock = new Mock<IMowerHttpClient>();
            ObjectsContainer.InjectObject<IMowerHttpClient>(mowerHttpClientMock.Object);
            var slmmService = ObjectsContainer.GetObject<ISlmmService>();
            slmmService.SmartMower = new SmartMowerMachine(currentX, currentY, maxX, maxY, direction);
            var slmmMoveService = ObjectsContainer.GetObjectByName<ISlmmMove>("SlmmMoveSouthService");

            //Act
            slmmMoveService.MoveOneStep(slmmService);

            //Assert
            Assert.AreEqual(expectedCurrentX, slmmService.SmartMower.CurrentX);
            Assert.AreEqual(expectedCurrentY, slmmService.SmartMower.CurrentY);
            Assert.AreEqual(expectedDirection, slmmService.SmartMower.Direction);

            mowerHttpClientMock.Verify(a => a.Turn90Clockwise(slmmService.SmartMower), Times.Exactly(expectedClockWise90));
            mowerHttpClientMock.Verify(a => a.Turn90AntiClockwise(slmmService.SmartMower), Times.Exactly(expectedAntiClockWise90));
        }
예제 #23
0
    private void MakeLaserBeam()
    {
        lastBullet    = Instantiate(laserPrefab, shootSource.position, shootSource.rotation);
        trajectory[0] = shootSource.position;

        objectsContainer = lastBullet.GetComponent <ObjectsContainer>();

        if (Physics.Raycast(trajectory[0], (transform.forward * maxDistance), out laserHit, maxDistance))
        {
            trajectory[1] = laserHit.point;
            objectsContainer.objects[0].GetComponent <ScaleAnimator>().scalingTime *= 10;
        }
        else
        {
            trajectory[1] = trajectory[0] + (transform.forward * maxDistance);
        }

        objectsContainer.objects[0].transform.position = trajectory[1];

        lineRenderer = lastBullet.GetComponentInChildren <LineRenderer>();
        lineRenderer.SetPositions(trajectory);
    }
예제 #24
0
        public void TestObjectReferenceSameInstance()
        {
            var nodeContainer = new NodeContainer();
            var instance = new TestObject { Name = "Test" };
            var container = new ObjectsContainer { Instance1 = instance, Instance2 = instance };
            var containerNode = nodeContainer.GetOrCreateNode(container);
            Helper.TestNonCollectionObjectContentNode(containerNode, container, 2);

            var member1Node = containerNode.Children.First();
            Helper.TestMemberContentNode(containerNode, member1Node, container, instance, nameof(ObjectsContainer.Instance1), true);
            Helper.TestNonNullObjectReference(member1Node.Content.Reference, instance, false);

            var member2Node = containerNode.Children.Last();
            Helper.TestMemberContentNode(containerNode, member2Node, container, instance, nameof(ObjectsContainer.Instance2), true);
            Helper.TestNonNullObjectReference(member2Node.Content.Reference, instance, false);

            var reference1 = member1Node.Content.Reference.AsObject;
            var reference2 = member2Node.Content.Reference.AsObject;
            Assert.AreEqual(reference1.TargetGuid, reference2.TargetGuid);
            Assert.AreEqual(reference1.TargetNode, reference2.TargetNode);
            Assert.AreEqual(reference1.ObjectValue, reference2.ObjectValue);
        }
        private bool UpdateDocumentsUsage(long?maxId = null)
        {
            if (numbersUsagePerLocation == null ||
                numbersUsageStarts == null)
            {
                return(false);
            }

            if (maxId == null)
            {
                maxId = Operation.GetMaxId();
            }

            hasEmptyRange = false;

            for (int i = 0; i < allStartNumbersPerLocation.Count; i++)
            {
                foreach (OperationNumberingInfo numberingInfo in allStartNumbersPerLocation[i].Value)
                {
                    long endNumber = maxId.Value;
                    long endRange  = endNumber;
                    if (i + 1 < allStartNumbersPerLocation.Count)
                    {
                        OperationNumberingInfo nextInfo = allStartNumbersPerLocation [i + 1].Value.FirstOrDefault(n => n.OperationType == numberingInfo.OperationType);
                        if (nextInfo != null)
                        {
                            endRange = nextInfo.StartNumber - 1;
                            if (nextInfo.StartNumber > 0)
                            {
                                endNumber = nextInfo.StartNumber - 1;
                            }
                        }
                    }

                    long usedNumbers            = 0;
                    long startNumber            = numberingInfo.StartNumber + 1;
                    OperationNumbersUsage usage = numbersUsagePerLocation.FirstOrDefault(n => numberingInfo.LocationId == n.LocationId && numberingInfo.OperationType == n.OperationType);
                    if (usage != null)
                    {
                        usedNumbers = usage.UsedNumbers;
                        startNumber = Math.Max(startNumber, usage.LastUsedNumber);
                    }

                    ObjectsContainer <OperationType, long> firtNextNumber = numbersUsageStarts.FirstOrDefault(n => numberingInfo.StartNumber < n.Value2 && numberingInfo.OperationType == n.Value1);
                    if (firtNextNumber != null)
                    {
                        endNumber = Math.Min(endNumber, firtNextNumber.Value2 - 1);
                    }

                    double numbersLeft = Math.Max(endNumber - startNumber, 0);
                    if (numbersLeft < OperationNumberingInfo.MINIMAL_NUMBERS_PER_LOCATION)
                    {
                        hasEmptyRange = true;
                    }

                    long rangeSize = Math.Max(endRange - numberingInfo.StartNumber, 0);
                    if (rangeSize == 0)
                    {
                        MessageError.ShowDialog(string.Format(Translator.GetString("The selected numbers parameters are not valid! Please select ranges which will generate document numbers lower than {0}."), maxId.Value.ToString("N", formatBigNumber)));
                        throw new ArgumentOutOfRangeException();
                    }

                    numberingInfo.Usage            = (rangeSize - numbersLeft) / rangeSize;
                    numberingInfo.UsageDescription = string.Format(Translator.GetString("{0} used, {1} left"),
                                                                   usedNumbers.ToString("N", formatBigNumber),
                                                                   numbersLeft.ToString("N", formatBigNumber));
                }
            }

            frmMessage.Visible = hasEmptyRange;

            IListModel model = gridDocumentNumbers.Model;

            gridDocumentNumbers.Model = null;
            gridDocumentNumbers.Model = model;
            return(true);
        }
    void Start()
    {
        myRoom       = GetComponent <ObjectsContainer>();
        rnd          = new System.Random(myRoom.Seed);
        shuffleOrder = new List <int> {
            0, 1, 2, 3, 4, 5, 6, 7, 8
        };
        firstWinnerIndexes  = new List <int>();
        secondWinnerIndexes = new List <int>();
        selectedPictures    = new List <int>();
        currentPicture      = 0;

        //Select 2 pictures from 6
        while (selectedPictures.Count < 2)
        {
            int selectedPicture;
            do
            {
                selectedPicture = rnd.Next(0, 6);
            } while (selectedPictures.Contains(selectedPicture));
            selectedPictures.Add(selectedPicture);
        }

        //Select the 3 winning pieces for the first picture
        while (firstWinnerIndexes.Count < 3)
        {
            int selected;
            do
            {
                selected = rnd.Next(0, 9);
            } while (firstWinnerIndexes.Contains(selected));
            firstWinnerIndexes.Add(selected);
        }

        //Select the 3 winning pieces for the second picture
        while (secondWinnerIndexes.Count < 3)
        {
            int selected;
            do
            {
                selected = rnd.Next(0, 9);
            } while (secondWinnerIndexes.Contains(selected));
            secondWinnerIndexes.Add(selected);
        }

        //Setup yhe diary
        for (int i = 0; i < diaryPictures.Length; i++)
        {
            Transform diarypicture = diaryPictures[i].transform;
            if (selectedPictures.Contains(i))
            {
                if (selectedPictures.IndexOf(i) == 0)
                {
                    for (int j = 0; j < diarypicture.childCount; j++)
                    {
                        if (firstWinnerIndexes.Contains(j))
                        {
                            diarypicture.GetChild(j).gameObject.SetActive(true);
                        }
                        else
                        {
                            diarypicture.GetChild(j).gameObject.SetActive(false);
                        }
                    }
                }
                else if (selectedPictures.IndexOf(i) == 1)
                {
                    for (int j = 0; j < diarypicture.childCount; j++)
                    {
                        if (secondWinnerIndexes.Contains(j))
                        {
                            diarypicture.GetChild(j).gameObject.SetActive(true);
                        }
                        else
                        {
                            diarypicture.GetChild(j).gameObject.SetActive(false);
                        }
                    }
                }
            }
            else
            {
                List <int> fakeWinnerIndexes = new List <int>();
                while (fakeWinnerIndexes.Count < 3)
                {
                    int selected;
                    do
                    {
                        selected = rnd.Next(0, 9);
                    } while (fakeWinnerIndexes.Contains(selected));
                    fakeWinnerIndexes.Add(selected);
                }
                for (int j = 0; j < diarypicture.childCount; j++)
                {
                    if (fakeWinnerIndexes.Contains(j))
                    {
                        diarypicture.GetChild(j).gameObject.SetActive(true);
                    }
                    else
                    {
                        diarypicture.GetChild(j).gameObject.SetActive(false);
                    }
                }
            }
        }
        SetUpRoom();
    }