예제 #1
0
        private void StopTransmitingCommand_Execute()
        {
            SelectedItems.ForEach((el) => el.StopTransmiting());

            StartTransmitingCommand.RaiseCanExecuteChanged();
            StopTransmitingCommand.RaiseCanExecuteChanged();
            ShotCommand.RaiseCanExecuteChanged();
        }
예제 #2
0
            public override bool IsTransferable(ACommand c)
            {
                ShotCommand command = c as ShotCommand;

                if (command != null)
                {
                    cache.Cached(command, new ShotCommandV1_0(command.ANGLE, command.RANGE));
                    return(true);
                }
                return(false);
            }
예제 #3
0
        private void StartTransmitingCommand_Execute()
        {
            SelectedItems.ForEach((el) =>
            {
                el.StartTransmiting();
                el.TransmitToSelectedChannels = TransmitToSelectedChannels;
            });

            StartTransmitingCommand.RaiseCanExecuteChanged();
            StopTransmitingCommand.RaiseCanExecuteChanged();
            ShotCommand.RaiseCanExecuteChanged();
        }
예제 #4
0
        private void Status_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (e.PropertyName != "Status")
            {
                return;
            }

            StepForwardCommand.RaiseCanExecuteChanged();
            StepBackCommand.RaiseCanExecuteChanged();
            ShotCommand.RaiseCanExecuteChanged();
            RunCommand.RaiseCanExecuteChanged();
        }
예제 #5
0
        public ActionResult ExecuteCommand(string key, CoordInfo info)
        {
            Game game = games.Find(game => game.Key == key);

            var gameNullHandler         = new GameNullHandler();
            var registeredPlayerHandler = new RegisteredPlayerHandler();
            var finalHandler            = new FinalHandler();

            registeredPlayerHandler.SetNext(gameNullHandler).SetNext(finalHandler);

            if (!Request.Headers.ContainsKey("PlayerIdentifier"))
            {
                return(StatusCode(403));
            }
            if (!game.HasPlayerWithIdentifier(Request.Headers["PlayerIdentifier"]))
            {
                return(StatusCode(403));
            }

            string text = "";

            if (registeredPlayerHandler.Handle(game, text) == null)
            {
                return(StatusCode(403));
            }

            Command cmd = null;

            switch (info.CommandType)
            {
            case "mine":
                cmd = new MineCommand(info, Request.Headers["PlayerIdentifier"]);
                break;

            case "shot":
                cmd = new ShotCommand(info, Request.Headers["PlayerIdentifier"]);
                break;

            case "endTurn":
                cmd = new EndTurnCommand(info, Request.Headers["PlayerIdentifier"]);
                break;

            default:
                return(NotFound());
            }

            lock (games)
                game.AddExecuteCommand(cmd);

            return(StatusCode(200));
        }
예제 #6
0
    private void Update()
    {
        if (playerEntity && canShoot)
        {
            float _distancePlayer = Vector3.Distance(transform.position, playerEntity.transform.position);
            if (_distancePlayer <= distance)
            {
                var _shotCommand = new ShotCommand(this, playerEntity.transform);
                _shotCommand.Execute();

                transform.LookAt(playerEntity.transform);
            }
        }
    }
예제 #7
0
    //Shot action to apply the shot command when its possible to shoot and found a closest enemy
    private void OnShot()
    {
        if (canShoot)
        {
            Enemy _currentTarget = SeekClosestEnemy();
            if (_currentTarget)
            {
                ShotCommand _shotCommand = new ShotCommand(this, _currentTarget.transform);
                _shotCommand.Execute();

                //look to the current enemy
                transform.LookAt(_currentTarget.transform);
            }
        }
    }
예제 #8
0
        private void SelectedItemsChangedCommand_Execute(IList ts)
        {
            _selectedItems.Clear();

            foreach (var el in ts)
            {
                if (el is TracePeriodicViewData viewData)
                {
                    _selectedItems.Add(viewData);
                }
            }

            StartTransmitingCommand.RaiseCanExecuteChanged();
            StopTransmitingCommand.RaiseCanExecuteChanged();
            ShotCommand.RaiseCanExecuteChanged();
        }