Esempio n. 1
0
 public static void Create()
 {
     if (I == null)
     {
         I = new T();
         SingletonBase.AddInstance(I);
     }
 }
Esempio n. 2
0
        public void AreSingletonHashcodeInstancesSame()
        {
            var singletonOne = SingletonBase.GetInstance <SingletonBase>();
            var singletonTwo = SingletonBase.GetInstance <SingletonBase>();

            Assert.IsInstanceOfType(singletonOne, typeof(SingletonBase));
            Assert.IsInstanceOfType(singletonTwo, typeof(SingletonBase));
            Assert.AreEqual(singletonOne.GetHashCode(), singletonTwo.GetHashCode());
        }
Esempio n. 3
0
        public void AreSingletonInstancesSame()
        {
            var singletonOne = SingletonBase.GetInstance <SingletonBase>();
            var singletonTwo = SingletonBase.GetInstance <SingletonBase>();;

            Assert.IsInstanceOfType(singletonOne, typeof(SingletonBase));
            Assert.IsInstanceOfType(singletonTwo, typeof(SingletonBase));
            Assert.AreSame(singletonOne, singletonTwo);
        }
Esempio n. 4
0
        public void AreTwoInheritedInstancesFromSingletonAreSame()
        {
            var singletonOne = SingletonBase.GetInstance <ChildOneSingleton>();
            var singletonTwo = SingletonBase.GetInstance <ChildTwoSingleton>();

            Assert.AreEqual(singletonOne.TestMethod(), singletonTwo.TestMethod());
            Console.WriteLine(singletonOne.TestMethod());
            Assert.IsInstanceOfType(singletonOne, typeof(ChildOneSingleton));
            Assert.IsInstanceOfType(singletonTwo, typeof(ChildOneSingleton));
            Assert.AreSame(singletonOne, singletonTwo);
        }
 static public int LateUpdate(IntPtr l)
 {
     try {
         SingletonBase self = (SingletonBase)checkSelf(l);
         self.LateUpdate();
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
 static public int InitCoroutine(IntPtr l)
 {
     try {
         SingletonBase self = (SingletonBase)checkSelf(l);
         var           ret  = self.InitCoroutine();
         pushValue(l, true);
         pushValue(l, ret);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Esempio n. 7
0
    public void Add(int batchIndex, SingletonBase singleton)
    {
        var batch = _batches[batchIndex];

        if (batch == null)
        {
            batch = new SingletonBatch();
            _batches[batchIndex] = batch;
        }

        batch.Add(singleton);

        ++_count;
    }
Esempio n. 8
0
        public void AreSingletonInstancesSame_MultipleThread()
        {
            var thread_count = 100;
            var threads      = new List <Thread>();
            var instances    = new List <SingletonBase>();

            for (int i = 0; i < thread_count; i++)
            {
                var thread = new Thread(() =>
                {
                    instances.Add(SingletonBase.GetInstance <SingletonBase>());
                });
                threads.Add(thread);
                thread.Start();
            }

            threads.ForEach(x => x.Join());

            instances.ForEach(x => Assert.AreSame(instances[0], x));
        }
Esempio n. 9
0
 public void Add(int batchIndex, SingletonBase singleton)
 {
     _singletons.Add(batchIndex, singleton);
 }
Esempio n. 10
0
 public void Add(SingletonBase singleton)
 {
     _singletons.Add(singleton);
 }
 public void Dispose()
 {
     SingletonBase <TestSingleton> .Reset();
 }
        public void CanCreateSingleton()
        {
            var singleton = SingletonBase <TestSingleton> .GetOrCreateInstance();

            Assert.NotNull(singleton);
        }
Esempio n. 13
0
    private IEnumerator DoReset(bool need_clear_cache, bool need_predownload)
    {
        isReset = true;
        if (MonoBehaviourSingleton <UIManager> .IsValid())
        {
            MonoBehaviourSingleton <UIManager> .I.SetDisable(UIManager.DISABLE_FACTOR.RESET, true);
        }
        if (MonoBehaviourSingleton <TransitionManager> .IsValid())
        {
            yield return((object)MonoBehaviourSingleton <TransitionManager> .I.Out(TransitionManager.TYPE.BLACK));
        }
        if (MonoBehaviourSingleton <SoundManager> .IsValid() && MonoBehaviourSingleton <SoundManager> .I.playingBGMID != 0)
        {
            MonoBehaviourSingleton <SoundManager> .I.requestBGMID = 0;
            MonoBehaviourSingleton <SoundManager> .I.fadeOutTime  = 1f;
            yield return((object)new WaitForSeconds(1f));
        }
        if (MonoBehaviourSingleton <PredownloadManager> .IsValid())
        {
            Object.DestroyImmediate(MonoBehaviourSingleton <PredownloadManager> .I);
        }
        if (MonoBehaviourSingleton <LoadingProcess> .IsValid())
        {
            Object.DestroyImmediate(MonoBehaviourSingleton <LoadingProcess> .I);
        }
        if (MonoBehaviourSingleton <DataTableManager> .IsValid())
        {
            MonoBehaviourSingleton <DataTableManager> .I.Clear();

            Object.DestroyImmediate(MonoBehaviourSingleton <DataTableManager> .I);
        }
        if (MonoBehaviourSingleton <ResourceManager> .IsValid())
        {
            MonoBehaviourSingleton <ResourceManager> .I.CancelAll();

            while (MonoBehaviourSingleton <ResourceManager> .I.isLoading)
            {
                yield return((object)null);
            }
        }
        MonoBehaviourSingleton <ResourceManager> .I.Reset();

        SceneManager.LoadScene("Empty");
        if (need_clear_cache)
        {
            if (Singleton <StringTable> .IsValid() && MonoBehaviourSingleton <UIManager> .IsValid() && MonoBehaviourSingleton <UIManager> .I.loading != null)
            {
                MonoBehaviourSingleton <UIManager> .I.loading.ShowSystemMessage(StringTable.Get(STRING_CATEGORY.COMMON, 20u));
            }
            yield return((object)UnloadUnusedAssets(true));

            PlayerPrefs.SetInt("AppMain.Reset", (need_clear_cache ? 1 : 0) | (need_predownload ? 2 : 0));
            yield return((object)this.StartCoroutine(ResourceManager.ClearCache()));

            yield return((object)new WaitForSeconds(1f));

            if (need_predownload && Singleton <StringTable> .IsValid() && MonoBehaviourSingleton <UIManager> .IsValid() && MonoBehaviourSingleton <UIManager> .I.loading != null)
            {
                this.get_gameObject().AddComponent <PredownloadManager>();
                while (MonoBehaviourSingleton <PredownloadManager> .I.totalCount == 0)
                {
                    yield return((object)null);
                }
                int total = MonoBehaviourSingleton <PredownloadManager> .I.totalCount;
                int count = -1;
                while (count < total)
                {
                    if (count != MonoBehaviourSingleton <PredownloadManager> .I.loadedCount)
                    {
                        count = MonoBehaviourSingleton <PredownloadManager> .I.loadedCount;
                        MonoBehaviourSingleton <UIManager> .I.loading.ShowSystemMessage(StringTable.Format(STRING_CATEGORY.COMMON, 21u, count, total));
                    }
                    yield return((object)null);
                }
                MonoBehaviourSingleton <UIManager> .I.loading.ShowSystemMessage(null);

                MonoBehaviourSingleton <ResourceManager> .I.Reset();
            }
            PlayerPrefs.SetInt("AppMain.Reset", 0);
        }
        this.get_gameObject().BroadcastMessage("OnApplicationQuit", 1);
        MonoBehaviour[] monos = this.GetComponents <MonoBehaviour>();
        for (int i = base._transform.get_childCount() - 1; i >= 0; i--)
        {
            base._transform.GetChild(i).get_gameObject().SetActive(false);
        }
        MonoBehaviour[] array = monos;
        foreach (MonoBehaviour mono in array)
        {
            if (mono != this)
            {
                mono.set_enabled(false);
            }
        }
        SetMainCamera(null);
        for (int j = base._transform.get_childCount() - 1; j >= 0; j--)
        {
            GameObject game_object = base._transform.GetChild(j).get_gameObject();
            Object.DestroyImmediate(game_object);
        }
        MonoBehaviour[] array2 = monos;
        foreach (MonoBehaviour mono2 in array2)
        {
            if (mono2 != this)
            {
                Object.DestroyImmediate(mono2);
            }
        }
        CreateDefaultCamera();
        yield return((object)new WaitForEndOfFrame());

        yield return((object)new WaitForEndOfFrame());

        yield return((object)new WaitForEndOfFrame());

        SingletonBase.RemoveAllInstance();
        yield return((object)Resources.UnloadUnusedAssets());

        GC.Collect();
        yield return((object)new WaitForEndOfFrame());

        yield return((object)new WaitForEndOfFrame());

        yield return((object)new WaitForEndOfFrame());

        MonoBehaviourSingleton <AppMain> .I.startScene = "Title";
        Start();
    }