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"); }
public void HasComponent_StateUnderTest_ExpectedBehavior() { // Arrange HasComponents unitUnderTest = this.CreateHasComponents(); // Act bool result = unitUnderTest.HasComponent <ComponentHarvestable>(); // Assert Assert.IsTrue(result); }
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); }
/// <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); }
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); }
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); }
/// <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); } }
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; } } }