Example #1
0
 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();
 }
Example #2
0
        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);
        }
Example #3
0
 private void OnGainVision(byte[] packet, Channel channel)
 {
     if (!_isOdin)
     {
         Send(Deserialize <MovementRequest>(MovementRequest.CreateCoop(_myNetId)));
     }
 }
Example #4
0
        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>()));
        }
Example #5
0
        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);
        }
Example #6
0
        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");
        }
Example #10
0
        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);
        }
Example #12
0
        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;
 }
Example #14
0
 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);
        }
Example #17
0
 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;
 }
Example #18
0
 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);
     }
 }
Example #19
0
        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);
        }
Example #20
0
        private void TabClick(object sender, MouseEventArgs e)
        {
            if (selection == null)
            {
                return;
            }

            MovementRequest?.Invoke(FindMatrixCoordinates(selection.Location), FindMatrixCoordinates(e.Location), selection.Name.Substring(0, 1));
        }
Example #21
0
 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();
        }
Example #23
0
        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);
        }
Example #28
0
        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);
        }
Example #30
0
        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++;
            }
        }
Example #32
0
        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();
        }
Example #33
0
 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;
 }