public NavHandleData(NavigationRequest req, NavEntity targetEntity) { entity = targetEntity; sourceRequest = req; entityID = targetEntity.entityID; _movementRequest = new MovementRequest { entityID = entityID }; isGroup = targetEntity.navEntityType == ENavEntityType.Group; if (isGroup) { _childEntityDataList = new List <NavHandleData>(); NavGroup group = (NavGroup)targetEntity; for (int i = 0; i < group.individualList.Count; i++) { _childEntityDataList.Add(new NavHandleData(req, group.individualList[i])); // 将成员添加进RVO的模拟列表中 Simulator.Instance.addAgent( group.individualList[i].controlledAgent.GetCurrentPosition().ToRVOVec2() , ENTITY_COLLIDER_RADIUS, 8, 1f, 2f, 1f, NavEntity.GetMaxSpeed(group.individualList[i].entityID), new RVO.Vector2(0, 0)); } } destination = req.destination; startPosition = targetEntity.controlledAgent.GetCurrentPosition(); }
public override bool HandlePacket(Peer peer, byte[] data) { var peerInfo = _playerManager.GetPeerInfo(peer); var champion = peerInfo?.Champion; if (peerInfo == null || !champion.CanMove()) { return(true); } var request = new MovementRequest(data); var vMoves = readWaypoints(request.moveData, request.coordCount, _game.Map); switch (request.type) { case MoveType.STOP: //TODO anticheat, currently it trusts client 100% peerInfo.Champion.setPosition(request.x, request.y); float x = ((request.x) - _game.Map.NavGrid.MapWidth) / 2; float y = ((request.y) - _game.Map.NavGrid.MapHeight) / 2; for (var i = 0; i < vMoves.Count; i++) { var v = vMoves[i]; v.X = (short)request.x; v.Y = (short)request.y; } break; case MoveType.EMOTE: //Logging->writeLine("Emotion"); return(true); case MoveType.ATTACKMOVE: peerInfo.Champion.MoveOrder = MoveOrder.MOVE_ORDER_ATTACKMOVE; break; case MoveType.MOVE: peerInfo.Champion.MoveOrder = MoveOrder.MOVE_ORDER_MOVE; break; } vMoves[0] = new Vector2(peerInfo.Champion.X, peerInfo.Champion.Y); peerInfo.Champion.SetWaypoints(vMoves); ApiEventManager.OnMoveSuccess.Publish(peerInfo.Champion, request.x, request.y); var u = _game.ObjectManager.GetObjectById(request.targetNetId) as AttackableUnit; if (u == null) { peerInfo.Champion.TargetUnit = null; return(true); } peerInfo.Champion.TargetUnit = u; return(true); }
private void OnGainVision(byte[] packet, Channel channel) { if (!_isOdin) { Send(Deserialize <MovementRequest>(MovementRequest.CreateCoop(_myNetId))); } }
public void AnalyseMovementToStoreShouldAddStoragePoint() { Store newStore; var storagePoints = new List <StoragePoint>(); var stores = new List <Store>(); var storageSystem = new Mock <IStorageSystem>(); storageSystem.SetupGet(s => s.StoragePoints).Returns(storagePoints); storageSystem.SetupGet(s => s.Stores).Returns(stores); storageSystem.SetupGet(s => s.DeliveryPoints).Returns(new List <StoragePoint>()); storageSystem.Setup(s => s.AddStore(It.IsAny <Store>())).Callback <Store>(addStore => { newStore = addStore; storageSystem.SetupGet(s => s.Stores).Returns(new List <Store> { newStore }); }); _useCase.StorageSystem = storageSystem.Object; var request = new MovementRequest { Ticket = Guid.NewGuid(), Info = "part in new store", Quantity = 1, Target = "B01", TargetCompartment = "1", Task = AutomationTasks.Transport, Source = "TV01", SourceCompartment = "1", Timestamp = DateTime.UtcNow }; request.Data.Add(new MovementData { Barcode = "12345" }); _useCase.Execute(request); storageSystem.Verify(s => s.AddStoragePoint(It.IsAny <StoragePoint>())); }
public void AnalyseNewStoragePointShouldAddStoragePoint() { StoragePoint newStoragePoint = null; var request = new MovementRequest { Ticket = Guid.NewGuid(), Info = "part in new storage point", Quantity = 1, Target = "TV01", TargetCompartment = "1", Task = AutomationTasks.Insert }; request.Data.Add(new MovementData { Barcode = "12345" }); var storageSystem = new Mock <IStorageSystem>(); storageSystem.Setup(s => s.AddStoragePoint(It.IsAny <StoragePoint>())).Callback <StoragePoint>(point => { newStoragePoint = point; storageSystem.SetupGet(s => s.StoragePoints).Returns(new List <StoragePoint> { newStoragePoint }); }); storageSystem.SetupGet(s => s.StoragePoints).Returns(new List <StoragePoint>()); _useCase.StorageSystem = storageSystem.Object; _useCase.Execute(request); storageSystem.Verify(s => s.AddStoragePoint(It.IsAny <StoragePoint>())); newStoragePoint.Name.Should().Be(request.Target); }
public void AnalyseMovementToStoreShouldReturnResponse() { var store = new Store { Name = "B01" }; store.Shelves.Add(new Shelf { Number = "1" }); var stores = new List <Store> { store }; var storagePoint = new StoragePoint { Name = "TV01" }; var storagePoints = new List <StoragePoint> { storagePoint }; var storageSystem = new Mock <IStorageSystem>(); storageSystem.SetupGet(s => s.Stores).Returns(stores); storageSystem.SetupGet((s => s.StoragePoints)).Returns(storagePoints); _useCase.StorageSystem = storageSystem.Object; var request = new MovementRequest { Ticket = Guid.NewGuid(), Info = "part to workstation", Quantity = 3, Target = "B01", TargetCompartment = "1", Task = AutomationTasks.Transport, Source = "TV01", SourceCompartment = "1", Timestamp = DateTime.UtcNow }; request.Data.Add(new MovementData { Barcode = "expected" }); _useCase.Execute(request); }
public void TransportSucceededCommandExecuteShouldCallSendTransportSucceededUseCase() { var useCase = new Mock <ISendTransportSucceededUseCase>(); var serviceLocator = new Mock <IServiceLocator>(); serviceLocator.Setup(l => l.GetInstance <ISendTransportSucceededUseCase>()).Returns(useCase.Object); ServiceLocator.SetLocatorProvider(() => serviceLocator.Object); var expectedData = new MovementData(); expectedData.Barcode = "expected Barcode"; expectedData.Index = "1"; var expectedSource = "expected source"; var expectedInfo = "expected info"; var expectedTargetShelf = "expected target shelf"; var expectedTarget = "expected target"; var expectedSourceShelf = "expected source shelf"; var expectedQuantity = 2; var expectedTicket = Guid.NewGuid(); var request = new MovementRequest { Info = expectedInfo, Quantity = expectedQuantity, Source = expectedSource, SourceCompartment = expectedSourceShelf, Target = expectedTarget, TargetCompartment = expectedTargetShelf, Task = AutomationTasks.Transport, Ticket = expectedTicket, Timestamp = DateTime.UtcNow }; request.Data.Add(expectedData); var viewModel = new MovementRequestViewModel(request); CommandRaised(viewModel); viewModel.SendTransportSucceededCommand.Execute(); useCase.Verify(u => u.Execute(request)); CheckExecutesShouldBeFalse(viewModel); CheckCommandRaises(); }
private void MovePartToWorkstation(Store store, StoragePoint storagePoint, MovementRequest request) { var shelf = store.Shelves.FirstOrDefault(s => s.Number == request.SourceCompartment); if (null == shelf) { shelf = new Shelf { Number = request.TargetCompartment, Store = store }; StorageSystem.AddShelfToStore(store, shelf); } var position = shelf.Parts.Count - 1; for (int i = 0; i < request.Quantity; i++) { if (position < shelf.Parts.Count) { var part = shelf.Parts.FirstOrDefault(p => p.Position == position); StorageSystem.RemovePartFromShelf(shelf, part); StorageSystem.AddPartToDeliveryPoint(storagePoint, part); } position--; } }
public void ExecuteShouldWriteResponseFile() { MovementResponse response = null; var sendResponseUseCase = new Mock <ISendResponseUseCase>(); sendResponseUseCase.Setup(s => s.Execute(It.IsAny <MovementResponse>())) .Callback <MovementResponse>(movementResponse => response = movementResponse); var expectedTicket = Guid.NewGuid(); var expectedTimestamp = DateTime.UtcNow; var expected = new MovementRequest() { Info = "info", Quantity = 2, Source = "source", Target = "target", Task = AutomationTasks.Transport, Ticket = expectedTicket, Timestamp = expectedTimestamp, SourceCompartment = "2", TargetCompartment = "3", }; expected.Data.Add(new MovementData { Barcode = "barcode", Index = "2" }); ISendStoragePointOccupiedUseCase useCase = new SendStoragePointOccupiedUseCase(sendResponseUseCase.Object); useCase.Execute(expected); response.Should().NotBeNull(); response.Info.Should().Be("Storage point occupied: info"); response.Quantity.Should().Be(2); response.Source.Should().Be("source"); response.Target.Should().Be("target"); response.Status.Should().Be(AutomationStatus.InsertionFailed); response.Ticket.Should().Be(expectedTicket); response.TimestampString.Should().Be(expectedTimestamp.ToString("dd.MM.yyyy hh:mm:ss")); response.SourceCompartment.Should().Be("2"); response.TargetCompartment.Should().Be("3"); }
public void AnalyseExistingStoragePointShouldNotAddStoragePoint() { var storagePoint = new StoragePoint { Name = "TV01" }; var storagePoints = new List <StoragePoint> { storagePoint }; var storageSystem = new Mock <IStorageSystem>(); storageSystem.SetupGet(s => s.StoragePoints).Returns(storagePoints); _useCase.StorageSystem = storageSystem.Object; var request = new MovementRequest { Ticket = Guid.NewGuid(), Info = "part in new storage point", Quantity = 1, Target = "TV01", TargetCompartment = "1", Task = AutomationTasks.Insert }; request.Data.Add(new MovementData { Barcode = "12345" }); _useCase.Execute(request); storageSystem.Verify(s => s.AddStoragePoint(It.IsAny <StoragePoint>()), Times.Never); }
public bool ApproveMovementRequest(MovementRequest obj) { bool result; IDbContextTransaction transaction = _context.Database.BeginTransaction(); var request = _movementrequest.GetMovementRequestByID(obj.ID); if (request != null) { try { request.ApprovedBy = obj.UpdatedBy; request.ApprovedDate = obj.ApprovedDate;//DateTime.Now.ToString("ddMMyyyy"); request.ApprovalStatus = obj.ApprovalStatus; request.UpdatedBy = obj.UpdatedBy; request.UpdatedDate = obj.UpdatedDate;//DateTime.Now; request.Notes = obj.Notes; _context.Entry(request).State = EntityState.Modified; _context.SaveChanges(); transaction.Commit(); result = true; } catch (Exception ex) { transaction.Rollback(); result = false; } } else { result = false; } return(result); }
public void execute(GameSession gameSession, byte[] bytes) { var newVector = new Vector(0, 0); if (gameSession.Player.UsingNewClient) { var simpleCmd = new SimpleCommand(bytes); simpleCmd.readShort(); var cmd = new MovementRequest(simpleCmd); cmd.readCommand(); newVector = new Vector(cmd.NewX, cmd.NewY); Console.WriteLine(JsonConvert.SerializeObject(newVector)); } else { var parser = new ByteParser(bytes); int currentPosX = parser.Int(); int targetPosY = parser.Int(); int targetPosX = parser.Int(); int currentPosY = parser.Int(); newVector = new Vector(targetPosX, targetPosY); } MovementController.Move(gameSession.Player, newVector); }
public HttpResponseMessage DeleteMovementRequest(HttpRequestMessage request, [FromBody] MovementRequest obj) { HttpResponseMessage response = new HttpResponseMessage(); obj.DeletedBy = User.Identity.Name; response = _movementProcess.DeleteMovementRequest(obj); return response; }
public static void DoMovement(Guid id, MovementRequest req) { if (_entityDic.ContainsKey(id)) { _entityDic[id].controlledAgent.AgentMove(req); } }
public bool DeleteMovementRequest(MovementRequest obj) { bool result; IDbContextTransaction transaction = _context.Database.BeginTransaction(); var movement = _movementrequest.GetMovementRequestByID(obj.ID); if (movement != null) { try { movement.DeletedBy = obj.DeletedBy; movement.DeletedDate = obj.DeletedDate;//DateTime.Now; foreach (var item in movement.MovementRequestDetail) { item.DeletedBy = obj.DeletedBy; item.DeletedDate = obj.DeletedDate;//DateTime.Now; } _context.Update(movement); _context.SaveChanges(); transaction.Commit(); result = true; } catch (Exception ex) { result = false; transaction.Rollback(); } } else { result = false; } return(result); }
public HttpResponseMessage DeleteMovementRequest(MovementRequest obj) { HttpResponseMessage result = default(HttpResponseMessage); string requestUri = "api/MovementRequest/DeleteMovementRequest/"; result = REST(requestUri, RESTConstants.POST, JsonConvert.SerializeObject(obj)); return(result); }
public bool Go(Directions direction) { map.Player.RequestedMovement = direction; request = MovementRequest.Given; while (request!= MovementRequest.Processed) System.Threading.Thread.Sleep(1); request = MovementRequest.No; return map.Player.SuccessfulMovement; }
public void AgentMove(MovementRequest movementReq) { transform.position += movementReq.velocity * Time.deltaTime; if (movementReq.velocity != Vector3.zero) { transform.forward = Vector3.Lerp(transform.forward, movementReq.velocity.normalized, Time.deltaTime); } }
public HttpResponseMessage DeleteMovementRequest(HttpRequestMessage request, [FromBody] MovementRequest obj) { var result = service.DeleteMovementRequest(obj); HttpResponseMessage response = new HttpResponseMessage(); response = request.CreateResponse(HttpStatusCode.OK, new { success = true, obj = result }); return(response); }
private void TabClick(object sender, MouseEventArgs e) { if (selection == null) { return; } MovementRequest?.Invoke(FindMatrixCoordinates(selection.Location), FindMatrixCoordinates(e.Location), selection.Name.Substring(0, 1)); }
public void AgentMove(MovementRequest movementReq) { //Debug.Log(movementReq.velocity); transform.position += movementReq.velocity * Time.deltaTime; if (movementReq.velocity != Vector3.zero) { transform.forward = Vector3.Lerp(transform.forward, movementReq.velocity.normalized, Time.deltaTime / 3f); } group.DebugDraw(); }
public void ConstructorWithInsertRequestShouldEnableSendInsertSucceededCommand() { var request = new MovementRequest { Task = AutomationTasks.Insert }; var viewModel = new MovementRequestViewModel(request); viewModel.SendInsertSucceededCommand.CanExecute().Should().BeTrue(); }
public Task <DomainMarsRover> UpdateMovement(MovementRequest newMovement) { return(Task.Run(() => { var marsRover = this._marsGetService.Get(newMovement.RoverId).Result; if (string.IsNullOrEmpty(marsRover?.RoverId)) { marsRover = new DomainMarsRover() { RoverId = newMovement.RoverId, CurrentPositionX = 0, CurrentPositionY = 0, Message = "New Mars Rover" }; } char[] instructions = newMovement.MovementInstruction.ToCharArray(); char[] cardinalPoints = { 'N', 'E', 'S', 'O' }; foreach (var instruction in instructions) { if (instruction.Equals('L') || instruction.Equals('R')) { marsRover.LastIndexDirection = this.getNewDirection(instruction, marsRover.LastIndexDirection); } else { // move mars rover! char currentCardinal = cardinalPoints[marsRover.LastIndexDirection]; if (currentCardinal == 'N') { // Y positivo marsRover.CurrentPositionY = marsRover.CurrentPositionY + 1; } else if (currentCardinal == 'S') { // Y negativo marsRover.CurrentPositionY = marsRover.CurrentPositionY + (-1); } else if (currentCardinal == 'E') { // X positivo marsRover.CurrentPositionX = marsRover.CurrentPositionX + 1; } else if (currentCardinal == 'O') { // X negativo marsRover.CurrentPositionX = marsRover.CurrentPositionX + (-1); } } } _cache.Set <Domain.MarsRover>(newMovement.RoverId, marsRover); return marsRover; })); }
public void ConstructorWithTransportRequestShouldEnableTransportCommands() { var request = new MovementRequest { Task = AutomationTasks.Transport }; var viewModel = new MovementRequestViewModel(request); viewModel.SendTransportSucceededCommand.CanExecute().Should().BeTrue(); viewModel.SendWrongPartCountCommand.CanExecute().Should().BeTrue(); }
public void Execute(MovementRequest request) { var response = new MovementResponse { Info = $"Storage point occupied: {request.Info}", Quantity = request.Quantity, Source = request.Source, Status = AutomationStatus.InsertionFailed, Target = request.Target, TargetCompartment = request.TargetCompartment, SourceCompartment = request.SourceCompartment, Ticket = request.Ticket, Timestamp = DateTime.UtcNow }; _sendResponseUseCase.Execute(response); }
public void Execute(MovementRequest request) { var response = new MovementResponse { Info = $"Order already exists: {request.Info}", Quantity = request.Quantity, Source = request.Source, Status = AutomationStatus.OrderAlreadyExists, Target = request.Target, TargetCompartment = request.TargetCompartment, SourceCompartment = request.SourceCompartment, Ticket = request.Ticket, Timestamp = DateTime.UtcNow }; _sendResponseUseCase.Execute(response); }
public void Execute(MovementRequest request) { var response = new MovementResponse { Info = $"Wrong part count: {request.Info}", Quantity = request.Quantity, Source = request.Source, Status = AutomationStatus.WrongPartCount, Target = request.Target, TargetCompartment = request.TargetCompartment, SourceCompartment = request.SourceCompartment, Ticket = request.Ticket, Timestamp = DateTime.UtcNow }; _sendResponseUseCase.Execute(response); }
public void AnalyseMovementToWorkstationShouldAddStoreAndShelf() { var expected = "12345"; Store newStore = null; StoragePoint newStoragePoint = null; var storagePoint = new StoragePoint { Name = "TV01" }; var storagePoints = new List <StoragePoint> { storagePoint }; var stores = new List <Store>(); var storageSystem = new Mock <IStorageSystem>(); storageSystem.SetupGet(s => s.StoragePoints).Returns(new List <StoragePoint>()); storageSystem.SetupGet(s => s.DeliveryPoints).Returns(storagePoints); storageSystem.Setup(s => s.AddDeliveryPoint(It.IsAny <StoragePoint>())).Callback <StoragePoint>(point => { newStoragePoint = point; storageSystem.SetupGet(s => s.DeliveryPoints).Returns(new List <StoragePoint> { newStoragePoint }); }); storageSystem.SetupGet(s => s.Stores).Returns(stores); storageSystem.Setup(s => s.AddStore(It.IsAny <Store>())).Callback <Store>(addStore => { newStore = addStore; storageSystem.SetupGet(s => s.Stores).Returns(new List <Store> { newStore }); }); _useCase.StorageSystem = storageSystem.Object; var request = new MovementRequest { Ticket = Guid.NewGuid(), Info = "part to workstation", Quantity = 1, Target = "AV01", TargetCompartment = "1", Task = AutomationTasks.Transport, Source = "B01", SourceCompartment = "1", Timestamp = DateTime.UtcNow }; request.Data.Add(new MovementData { Barcode = expected }); _useCase.Execute(request); storageSystem.Verify(s => s.AddStore(It.IsAny <Store>())); storageSystem.Verify(s => s.AddDeliveryPoint(It.IsAny <StoragePoint>())); newStore.Name.Should().Be("B01"); newStore.Shelves.Count.Should().Be(1); var shelf = newStore.Shelves.First(); shelf.Number.Should().Be("1"); shelf.Store.Should().Be(newStore); newStoragePoint.Name.Should().Be("AV01"); }
public void ConstructorWithDeleteRequestShouldSetTypeToDelete() { var expectedType = $"Delete"; var request = new MovementRequest { Task = AutomationTasks.Delete }; var viewModel = new MovementRequestViewModel(request); viewModel.Type.Should().Be(expectedType); }
public async Task <IActionResult> SaqueContaAsync([FromBody] MovementRequest saque) { var clienteDB = await GetClienteDbAsync(saque.Documento); if (clienteDB != null) { var operacao = _contaRepositorio.SaqueAsync(clienteDB.Id, saque.Valor); return(Ok(new { Operacao = "Saque", Conta = operacao })); } return(BadRequest(new { result = "Não foi Possível realizar a operação." })); }
private void MovePartToStore(Store store, MovementRequest request) { var storagePoint = StorageSystem.StoragePoints.FirstOrDefault(sp => sp.Name == request.Source); if (storagePoint == null) { storagePoint = new StoragePoint { Name = request.Source }; StorageSystem.AddStoragePoint(storagePoint); } var shelf = store.Shelves.FirstOrDefault(s => s.Number == request.TargetCompartment); if (null == shelf) { shelf = new Shelf { Number = request.TargetCompartment, Store = store }; StorageSystem.AddShelfToStore(store, shelf); } var position = shelf.Parts.Count; for (int i = 0; i < request.Quantity; i++) { Part part; var movementData = request.Data.FirstOrDefault(d => d.Index == (i + 1).ToString()); if (null != movementData) { part = storagePoint.Parts.FirstOrDefault(p => p.Barcode == movementData.Barcode); if (part == null) { part = new Part { Barcode = movementData.Barcode }; } } else { part = new Part { Barcode = $"Part on position {position}" }; } part.Position = position; StorageSystem.RemovePartFromStoragePoint(storagePoint, part); StorageSystem.AddPartToShelf(shelf, part); position++; } }
void Act() { bool skip = false; if (request == MovementRequest.No || request == MovementRequest.Processed) skip = true; else if (request == MovementRequest.Given) request = MovementRequest.Taken; else throw new Exception("Wrong request state "+request); animations.Clear(); for (int x = 0; x < map.Width; x++) for (int y = 0; y < map.Height; y++) { var creature = map[x, y]; if (creature == null) continue; CreatureCommand command; if (!map.GameOver && !skip) command = creature.Act(map, x, y); else command = new CreatureCommand { DeltaX = 0, DeltaY = 0, TransformTo = null }; animations.Add(new CreatureAnimation { Command=command, Creature = creature, Location = new Point(x * ElementSize, y * ElementSize) }); } animations = animations.OrderByDescending(z => z.Creature.GetDrawingPriority()).ToList(); }
void TimerTick(object sender, EventArgs args) { if (tickCount == 0) Act(); foreach (var e in animations) e.Location = new Point(e.Location.X + 4*e.Command.DeltaX, e.Location.Y + 4*e.Command.DeltaY); if (tickCount==7) { for (int x=0;x<map.Width;x++) for (int y=0;y<map.Height;y++) map[x,y]=null; foreach(var e in animations) { var x=e.Location.X/32; var y=e.Location.Y/32; var nextCreature = e.Command.TransformTo == null ? e.Creature : e.Command.TransformTo; if (map[x, y] == null) map[x, y] = nextCreature; else { bool newDead = nextCreature.DeadInConflict(map[x, y]); bool oldDead = map[x, y].DeadInConflict(nextCreature); if (newDead && oldDead) map[x, y] = null; else if (!newDead && oldDead) map[x, y] = nextCreature; else if (!newDead && !oldDead) throw new Exception(string.Format("Существа {0} и {1} претендуют на один и тот же участок карты", nextCreature.GetType().Name, map[x, y].GetType().Name)); } } } tickCount++; if (tickCount == 8) { tickCount = 0; if (request == MovementRequest.Taken) request = MovementRequest.Processed; } Invalidate(); }
/// <summary> /// Initialises the request /// </summary> /// <param name="movement">Underlying movement</param> public JumpRequest( MovementRequest movement ) { m_Movement = movement; }