Exemple #1
0
        public void TestHasComponentSerialization()
        {
            // Arrange
            HasComponents unitUnderTest = this.CreateHasComponents();

            // Act
            byte[] data = ProtoUtil.Serialize(unitUnderTest);

            Assert.IsNotNull(data, "Serialization failed");

            HasComponents deserialized = ProtoUtil.Deserialize <HasComponents>(data);

            // Assert
            Assert.IsNotNull(deserialized, "Deserialization failed");

            Assert.IsTrue(unitUnderTest.HasComponent <DropWhenCompletelyHarvested>());
            Assert.IsNotNull(unitUnderTest.GetExactComponent <DropWhenCompletelyHarvested>());
            Assert.IsNotNull(unitUnderTest.GetComponent <DropWhenCompletelyHarvested>());
            Assert.IsNotNull(unitUnderTest.GetComponent <ComponentHarvestable>());

            Assert.IsTrue(deserialized.HasComponent <DropWhenCompletelyHarvested>());
            Assert.IsNotNull(deserialized.GetExactComponent <DropWhenCompletelyHarvested>());
            Assert.IsNotNull(deserialized.GetComponent <DropWhenCompletelyHarvested>());
            Assert.IsNotNull(deserialized.GetComponent <ComponentHarvestable>());
            Assert.IsNotNull(deserialized.GetExactComponent <ComponentSelectable>(), "Components didn't serialize properly");
            Assert.IsNotNull(deserialized.GetExactComponent <ComponentRenderer>(), "Components didn't serialize properly");
        }
Exemple #2
0
        public void HasComponent_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            HasComponents unitUnderTest = this.CreateHasComponents();

            // Act
            bool result = unitUnderTest.HasComponent <ComponentHarvestable>();

            // Assert
            Assert.IsTrue(result);
        }
Exemple #3
0
        private HasComponents CreateHasComponents()
        {
            HasComponents     components = new HasComponents(true);
            ComponentRenderer renderer   = new ComponentRenderer();

            renderer.AddVisual(new StaticTexture(9, RenderLayer.DirtBase));

            components.AddComponent(new ComponentSelectable(SelectionType.Tile));
            components.AddComponent(new DropWhenCompletelyHarvested(new List <Item>(), string.Empty, string.Empty));
            components.AddComponent(renderer);
            return(components);
        }
Exemple #4
0
        /// <summary>
        /// Returns true if the <see cref="ComponentSelectable"/> is already selected.
        /// </summary>
        /// <param name="selectable"></param>
        /// <returns></returns>
        private bool IsSelectableSelected(HasComponents selectable)
        {
            foreach (HasComponents item in InputHistory.Selected)
            {
                if (selectable.Equals(item))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #5
0
        public void GetComponent_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            HasComponents unitUnderTest = this.CreateHasComponents();

            // Act
            ComponentSelectable  result  = unitUnderTest.GetComponent <ComponentSelectable>();
            ComponentHarvestable result2 = unitUnderTest.GetComponent <ComponentHarvestable>();

            // Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result2);
        }
Exemple #6
0
        public void AddComponent_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            HasComponents unitUnderTest           = this.CreateHasComponents();
            DropWhenCompletelyHarvested component = new DropWhenCompletelyHarvested(new List <Item>(), "", "");

            // Act
            unitUnderTest.ClearComponents();
            unitUnderTest.AddComponent(component);

            // Assert
            Assert.IsTrue(unitUnderTest.HasComponent <DropWhenCompletelyHarvested>());
            Assert.IsTrue(unitUnderTest.GetExactComponent <DropWhenCompletelyHarvested>() != null);
            Assert.IsTrue(unitUnderTest.GetComponent <DropWhenCompletelyHarvested>() != null);
            Assert.IsTrue(unitUnderTest.GetComponent <ComponentHarvestable>() != null);
        }
Exemple #7
0
        /// <summary>
        /// Swaps the old visuals with the new.
        /// Can handle null inputs.
        /// </summary>
        /// <param name="oldVisual">Should have a <see cref="ComponentHasTexture"/> component.</param>
        /// <param name="newVisual">Should have a <see cref="ComponentHasTexture"/> component.</param>
        private void UpdateVisuals(HasComponents oldVisual, HasComponents newVisual)
        {
            ComponentRenderer renderComponent = this.GetExactComponent <ComponentRenderer>();

            if (oldVisual != null)
            {
                //Remove old visuals
                ComponentHasTexture oldTextureComponent = oldVisual.GetExactComponent <ComponentHasTexture>();
                renderComponent.RemoveVisuals(oldTextureComponent.Visuals);
            }

            if (newVisual != null)
            {
                //Add new visuals
                ComponentHasTexture newTextureComponent = newVisual.GetExactComponent <ComponentHasTexture>();
                renderComponent.AddVisuals(newTextureComponent.Visuals);
            }
        }
Exemple #8
0
        private void Move(HasComponents selectable, Point2D target)
        {
            if (World.Dimensions[RenderInfo.Dimension][target.X, target.Y].IsWalkable)
            {
                switch (selectable)
                {
                case Living living:
                    ComponentSelectable positionData = living.GetExactComponent <ComponentSelectable>();
                    Point2D             start        = positionData.MapLocation;
                    if (start != target)
                    {
                        List <PathLink>   pth;
                        ComponentMovement movementComponent = living.GetExactComponent <ComponentMovement>();

                        //Handle reroute
                        if (movementComponent.QueuedMovement.Count > 0)
                        {
                            //Get a path to the nearest/next tile so that path finding and the screen location sync up.
                            PathLink previous = movementComponent.QueuedMovement.Peek();
                            movementComponent.QueuedMovement.Clear();
                            movementComponent.QueuedMovement.Enqueue(previous);
                            pth = MainPathFinder.GetRoute(RenderInfo.Dimension, previous.Destination, target);
                        }
                        //No reroute
                        else
                        {
                            pth = MainPathFinder.GetRoute(RenderInfo.Dimension, positionData.MapLocation, target);
                        }

                        Extensions.EnqueueCollection(movementComponent.QueuedMovement, pth);
                    }
                    break;

                default:
                    break;
                }
            }
        }