示例#1
0
        public override void Initialize()
        {
            // initialize
            _uiManager.RegisterUi(new PlayCanvasController(_resolver, _canvasProvider.GetCanvas("play_canvas")));

            _onExitPlayClicked = _messager.Subscribe <ExitPlayClickedMessage>(message =>
            {
                SwitchState(new MenuState(_resolver));
            });

            _onRollDiceClicked = _messager.Subscribe <RollDiceClickedMessage>(message =>
            {
                var rollMagnitude = 250f;
                var rollDirection = new Vector3(Random.Range(-1f, 1f), 0, Random.Range(-1f, 1f));

                for (var i = 0; i < 3; i++)
                {
                    var fab                  = Object.Instantiate(_prefabProvider.GetPrefab("dice_d6_prefab"));
                    fab.transform.name       = "dice_" + Guid.NewGuid().ToString();
                    fab.transform.localScale = new Vector3(0.25f, 0.25f, 0.25f);
                    fab.transform.position   = new Vector3(Random.Range(-0.5f, 0.5f), 1, Random.Range(-0.5f, 0.5f));

                    var fabRigidBody = fab.GetComponent <Rigidbody>();
                    fabRigidBody.AddForce(rollDirection * rollMagnitude);
                    fabRigidBody.AddRelativeTorque(rollDirection * 10);
                }
            });

            var tokenFab = Object.Instantiate(_prefabProvider.GetPrefab("pog_prefab")).GetComponent <PogController>();

            tokenFab.Initialize("https://upload.wikimedia.org/wikipedia/commons/b/b0/PSM_V37_D105_English_tabby_cat.jpg");
            tokenFab.PickUp.Initialize(_resolver);
            tokenFab.name = "token";
            tokenFab.transform.position = new Vector3(0, 1, 0);
        }
示例#2
0
        public PoolingParticleManager(IoCResolver resolver)
        {
            _loops           = new List <ActiveParticleLoop>();
            _particleSystems = new Dictionary <string, ParticleSystem>();

            // resolve references
            resolver.Resolve(out _logger);
            resolver.Resolve(out _config);
            resolver.Resolve(out _prefabProvider);
            resolver.Resolve(out _unityReferenceMaster);

            // initialize properties
            _particleParent      = Object.Instantiate(_prefabProvider.GetPrefab("empty_prefab"));
            _particleParent.name = "pooled_particle_system_parent";

            _unityReferenceMaster.OnGamePausedChangedEvent += OnGamePausedChanged;
        }
示例#3
0
        public PoolingBehaviour Instantiate(string prefabName)
        {
            if (!_pools.ContainsKey(prefabName))
            {
                _pools.Add(prefabName, new ObjectPool(_logger, _prefabProvider.GetPrefab(prefabName)));
            }

            return(_pools[prefabName].Instantiate());
        }
示例#4
0
        public void Start()
        {
            /* RESOURCE LIST CREATION */
#if UNITY_EDITOR
            AssetDatabase.Refresh();
            FileServices.CreateResourcesList("Assets/Resources/resourceslist.txt");
#endif
            FileServices.LoadResourcesList("resourceslist");

            #region LOAD RESOURCES
            // logger and ioc
            _logger   = new Logger("info.log", false);
            _resolver = new IoCResolver(_logger);
            _resolver.RegisterItem(_logger);

            _config = new UserConfigurationManager(new UserConfigurationData
            {
                GameVolume  = 1f,
                MusicVolume = 1f
            });
            _resolver.RegisterItem(_config);

            // messager
            _messager = new Messager();
            _resolver.RegisterItem(_messager);

            // unity reference master
            _unity = GetComponent <UnityReferenceMaster>();
            _unity.DebugModeActive = false;
            _resolver.RegisterItem(_unity);

            // player
            var player = new UserAccountManager();
            _resolver.RegisterItem(player);

            // material provider
            var materialProvider = new MaterialProvider(_logger);
            MaterialLoader.LoadMaterial(materialProvider, "Materials");
            _resolver.RegisterItem(materialProvider);

            // texture provider
            var textureProvider = new TextureProvider(_logger);
            var spriteProvider  = new SpriteProvider(_logger);
            TextureLoader.LoadTextures(textureProvider, spriteProvider, "Textures");
            _resolver.RegisterItem(textureProvider);
            _resolver.RegisterItem(spriteProvider);

            // sound provider
            var soundProvider = new SoundProvider(_logger);
            SoundLoader.LoadSounds(_logger, soundProvider, "Sounds");
            _resolver.RegisterItem(soundProvider);

            // prefab provider
            var prefabProvider = new PrefabProvider(_logger);
            PrefabLoader.LoadPrefabs(prefabProvider);
            _resolver.RegisterItem(prefabProvider);

            // pooling
            var poolingObjectManager = new PoolingObjectManager(_logger, prefabProvider);
            _resolver.RegisterItem(poolingObjectManager);

            var soundPoolManager = new PoolingAudioPlayer(_logger, _config, _unity, prefabProvider.GetPrefab("audio_source_prefab"));
            _resolver.RegisterItem(soundPoolManager);

            _particles = new PoolingParticleManager(_resolver);
            _resolver.RegisterItem(_particles);

            // canvas provider
            var canvasProvider = new CanvasProvider(_logger);
            _unity.LoadCanvases(canvasProvider);
            _resolver.RegisterItem(canvasProvider);

            // data provider
            var gameDataProvider = new GameDataProvider(_logger);

            /* DATA GOES HERE */

            _resolver.RegisterItem(gameDataProvider);
            #endregion

            _uiManager = new UiManager();
            _resolver.RegisterItem(_uiManager);

            // lock the resolver (stop any new items being registered)
            _resolver.Lock();

            /* BEGIN STATE */
            _currentState = new MenuState(_resolver);
            _currentState.Initialize();

            /* SUBSCRIBE FOR GAME END */
            _onExit = _messager.Subscribe <ExitMessage>(OnExit);
        }