Ejemplo n.º 1
0
        public void Dispose()
        {
            _screen.SetActive(false);
            _.GUIManager.DisposeScreen(_screen);
            _screen = null;

            _boardInformer.Border.OnBallCollides -= OnBallFallOff;
            Object.Destroy(_ball);
            Array.ForEach(_bounces, b => Object.Destroy(b.gameObject));
            _bounces = null;
        }
Ejemplo n.º 2
0
        public GameInstance(GameController controller, int settingsId, Action loadingCallback)
        {
            _controller    = controller;
            _boardInformer = Object.FindObjectOfType <BoardInformer>();

            _boardInformer.Border.OnBallCollides += OnBallFallOff;

            _screen = _.GUIManager.InitializeComponent <InGameScreen>();
            _screen.SetActive(true);

            var settings = _.DataProvider.GameSettings[settingsId];

            _bounces = new BounceBehaviour[settings.Bounces.Length];
            _.FileLoader.LoadAsset <GameObject>(settings.BallRMId, ball =>
            {
                _ball = (GameObject)Object.Instantiate(ball, _boardInformer.BallPoint);
                _ball.transform.localPosition = Vector3.zero;

                var loadedCount = 0;
                for (var index = 0; index < settings.Bounces.Length; index++)
                {
                    var local = index;
                    var param = settings.Bounces[local];
                    _.FileLoader.LoadAsset <GameObject>(param.RMId,
                                                        obj =>
                    {
                        var bounce = (GameObject)Object.Instantiate(obj, _boardInformer.BounceParent, false);
                        bounce.transform.position = param.Position;
                        bounce.transform.rotation = Quaternion.Euler(param.Rotation);

                        var behaviour   = bounce.AddComponent <BounceBehaviour>();
                        behaviour.Force = param.Force;

                        _bounces[local] = behaviour;
                        ++loadedCount;
                        if (loadedCount >= settings.Bounces.Length)
                        {
                            loadingCallback.SafeInvoke();
                        }
                    });
                }
            });
        }