示例#1
0
        public PoolingObjectManager(Logger logger, PrefabProvider prefabProvider)
        {
            _pools = new Dictionary <string, ObjectPool>();

            _logger         = logger;
            _prefabProvider = prefabProvider;
        }
示例#2
0
        public static void LoadPrefabs(PrefabProvider prefabProvider)
        {
            var prefabs = Resources.LoadAll <GameObject>("Prefabs/");

            foreach (var prefab in prefabs)
            {
                prefabProvider.AddPrefab(prefab);
            }
        }
示例#3
0
 public Background(PrefabProvider provider)
 {
     m_provider = provider;
     CreateBG();
 }
示例#4
0
 public Game(PrefabProvider provider)
 {
     m_provider = provider;
     CreatRandomFigure();
     m_Background = new Background(provider);
 }
示例#5
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);
        }
        private static void AssignProperty(SerializedObject obj, SerializedProperty property)
        {
            property.GetFieldInfoAndStaticType(out Type fieldType);

            var  root            = obj.targetObject as Component;
            bool hasPrefabInName = property.name.Contains("prefab", StringComparison.InvariantCultureIgnoreCase);

            string targetName = typeof(T).Name + " " + property.name;

            if (typeof(ScriptableObject).IsAssignableFrom(typeof(T)))
            {
                targetName = obj.targetObject.name + " " + targetName;
            }

            if (property.isArray)
            {
                if (property.arraySize != 0)
                {
                    return;
                }

                // Nasty trick incoming
                property.InsertArrayElementAtIndex(0);
                SerializedProperty elementProperty = property.GetArrayElementAtIndex(0);
                elementProperty.GetFieldInfoAndStaticType(out Type element);
                property.DeleteArrayElementAtIndex(0);
                // Nasty trick over

                if (typeof(Component).IsAssignableFrom(element))
                {
                    List <Component> all;

                    if (root != null && !hasPrefabInName)
                    {
                        all = root.GetComponentsInChildren(element, true).ToList();

                        if (all.Count == 0)
                        {
                            all = PrefabProvider.GetAll(element, targetName);
                        }
                    }
                    else
                    {
                        all = PrefabProvider.GetAll(element, targetName);
                    }

                    property.arraySize = all.Count;

                    for (int i = 0; i < all.Count; i++)
                    {
                        property.GetArrayElementAtIndex(i).objectReferenceValue = all[i];
                    }
                }
                else if (typeof(Object).IsAssignableFrom(element))
                {
                    List <Object> all = ObjectProvider.GetAll(element, targetName);

                    property.arraySize = all.Count;
                    for (var i = 0; i < all.Count; i++)
                    {
                        property.GetArrayElementAtIndex(i).objectReferenceValue = all[i];
                    }
                }
            }
            else
            {
                if (property.propertyType != SerializedPropertyType.ObjectReference)
                {
                    return;
                }

                if (property.objectReferenceValue != null)
                {
                    return;
                }

                if (typeof(Component).IsAssignableFrom(fieldType))
                {
                    if (root != null && !hasPrefabInName)
                    {
                        Component[] children = root.GetComponentsInChildren(fieldType, true);

                        if (children.Length != 0)
                        {
                            (property.objectReferenceValue, _) = NameProcessor.GetMatching(children, targetName);
                            return;
                        }
                    }

                    property.objectReferenceValue = PrefabProvider.GetOne(fieldType, targetName);
                }
                else if (typeof(GameObject).IsAssignableFrom(fieldType))
                {
                    property.objectReferenceValue = PrefabProvider.GetOne(targetName);
                }
                else if (typeof(Object).IsAssignableFrom(fieldType))
                {
                    property.objectReferenceValue = ObjectProvider.GetOne(fieldType, targetName);
                }
            }
        }
 void Awake()
 {
     instnace = this;
 }
示例#8
0
    void Start()
    {
        PrefabProvider provider = gameObject.GetComponent <PrefabProvider>();

        m_game = new Game(provider);
    }