コード例 #1
0
        public void ReloadShipController(GameObject provider, bool isRequired)
        {
            if (isRequired)
            {
                var newProvider = _providersPool.Pop();

                var newModel = new ShipModel(new ShipData()
                {
                    Provider     = newProvider,
                    Speed        = _data.Speed,
                    Acceleration = _data.Acceleration,
                    HP           = _data.HP,
                    Force        = _data.Force
                });

                var moveImplementation     = new AccelerationMove(newProvider.transform, newModel.Speed, newModel.Acceleration);
                var rotationImplementation = new RotationShip(newProvider.transform);

                GetShip.ReloadShip(moveImplementation, rotationImplementation, newModel);

                newProvider.GetComponent <IView>().ProviderDestroyed += GetShip.WatchToProviderDestroyed;
            }
            else
            {
                provider.GetComponent <IView>().ProviderDestroyed -= GetShip.WatchToProviderDestroyed;
                _providersPool.Push(provider);
            }
        }
コード例 #2
0
 private void StartMove()
 {
     _camera       = Camera.main;
     moveTransform = new AccelerationMove(_transform, _speed, _acceleration);
     rotation      = new RotationShip(_transform);
     _ship         = new Ship(moveTransform, rotation);
 }
コード例 #3
0
        private void Start()
        {
            _camera = Camera.main;
            var       moveTransform = new AccelerationMove(transform, _speed, _acceleration, GetComponent <Rigidbody2D>());
            var       rotation      = new RotationShip(transform);
            ShootShip shoot         = new ShootShip(_bullet, _barrel, _force);

            _ship = new Ship(moveTransform, rotation, shoot);
        }
コード例 #4
0
 public InputController(AccelerationMove moveTransform, RotationShip rotation, Camera camera, IWeapon weapon, MainControllers mainControllers, Data data, Transform playerTransform)
 {
     _ship            = new Ship(moveTransform, rotation);
     _camera          = camera;
     _weapon          = weapon;
     _mainControllers = mainControllers;
     _mainControllers.Add(this);
     _data            = data;
     _playerTransform = playerTransform;
 }
コード例 #5
0
        private void Start()
        {
            _camera = Camera.main;
            var moveTransform = new AccelerationMove(transform, _speed, _acceleration);
            var rotation      = new RotationShip(transform);

            _ship            = new Ship(moveTransform, rotation);
            _inputController = new InputController(_camera, transform, _ship, _barrel, _force, _bullet);
            _detectCollision.InjectDependencies(new Health(100));
        }
コード例 #6
0
        private void Start()
        {
            _hpController               = new HpController(_hp);
            _hpController.Damage        = _damage;
            _hpController.OnPlayerDead += DestroyPlayer;                   //Стоит вынести метод в отдельный класс?
            _hpController.OnHpChanged  += _hpController._hpModel.ReduceHp; //НЕ ЗНАЮ, ИМЕЕТ ЛИ СМЫСЛ ИСПОЛЬЗОВАТЬ ДЛЯ ЭТОГО СОБЫТИЕ.
                                                                           //И, где должен быть метод уменьшения хп? В модели или контроллере?
                                                                           //Имеет ли смысл добавлять методы в событие в классе, где оно объявлено (HpController), или это будет неправильным использоованием события?
            _camera = Camera.main;
            var moveTransform = new AccelerationMove(transform, _speed, _acceleration);
            var rotation      = new RotationShip(transform);

            _ship = new Ship(moveTransform, rotation);
        }
コード例 #7
0
        private void Start()
        {
            _player = new Player(_speed, _acceleration, _hp, this);
            _barrel = this.transform.Find("Barrel").gameObject;
            _fire   = _barrel.gameObject.AddComponent <Fire>();


            _camera = Camera.main;
            var moveTransform = new AccelerationMove(transform, _player.speed, _player.acceleration);
            var rotation      = new RotationShip(transform);

            _ship = new Ship(moveTransform, rotation);

            _inputController = new InputController(_ship, _fire);
            _shipController  = new ShipController(_ship, _camera, this.gameObject);

            _executes = new IExecute[] { _inputController, _shipController };
        }
コード例 #8
0
        private void InitializePlayer(Health health)
        {
            _health = health;
            _player = Object.Instantiate(_data.Player.PlayerPrefab);
            _data.Player.PlayerGO = _player.gameObject;
            _player.SetHealth(_health);
            _health.OnDeath += _player.Death;

            _playerTransform = _player.transform;

            _camera = Camera.main;
            _camera.transform.position = _playerTransform.position + new Vector3(0, 0, _data.Player.CameraOffset);

            var moveTranform = new AccelerationMove(_playerTransform, _data.Player.Speed, _data.Player.Acceleration);
            var rotation     = new RotationShip(_playerTransform);

            _weapon = new Weapon(_data, _playerTransform);

            var inputController = new InputController(moveTranform, rotation, _camera, _weapon, _mainControllers, _data, _playerTransform);
        }
コード例 #9
0
        public IController CreateShipFromData(ShipData data)
        {
            var spawnedShip = _providersPool.Pop();

            var shipModel = new ShipModel(
                new ShipData()
            {
                Provider     = spawnedShip,
                Speed        = data.Speed,
                Acceleration = data.Acceleration,
                HP           = data.HP,
                Force        = data.Force
            });

            var moveImplementation     = new AccelerationMove(spawnedShip.transform, shipModel.Speed, shipModel.Acceleration);
            var rotationImplementation = new RotationShip(spawnedShip.transform);

            GetShip = new Ship(moveImplementation, rotationImplementation, _weapon, shipModel);
            spawnedShip.GetComponent <IView>().ProviderDestroyed += GetShip.WatchToProviderDestroyed;

            GetShip.ReloadRequired += ReloadShipController;

            return(GetShip);
        }