private void SortOutComps()
        {
            if (!switchedToChunkSilo)
            {
                CompRTQuantumChunkSilo compChunkSilo = parent.TryGetComp<CompRTQuantumChunkSilo>();
                if (compChunkSilo != null)
                {
                    foreach (ThingComp comp in parent.AllComps)
                    {
                        if (comp is CompRTQuantumChunkSilo)
                        {
                            comp.PostDeSpawn(comp.parent.Map);
                        }
                    }
                    parent.AllComps.RemoveAll(x => x is CompRTQuantumChunkSilo);
                    parent.def.comps.RemoveAll(x => x.compClass.ToString().Equals("RT_QuantumStorage.CompRTQuantumChunkSilo"));
                }
                if (parent.TryGetComp<CompRTQuantumStockpile>() == null)
                {
                    CompProperties_RTQuantumStockpile compPropsStockpile = new CompProperties_RTQuantumStockpile();
                    compPropsStockpile.compClass = typeof(CompRTQuantumStockpile);
                    List<CompProperties> componentsBackup = new List<CompProperties>();
                    foreach (CompProperties compProperties in parent.def.comps)
                    {
                        componentsBackup.Add(compProperties);
                    }
                    parent.def.comps.Clear();
                    parent.def.comps.Add(compPropsStockpile);
                    parent.InitializeComps();
                    foreach (CompProperties compProperties in componentsBackup)
                    {
                        parent.def.comps.Add(compProperties);
                    }

                    CompRTQuantumStockpile compStockpile = parent.TryGetComp<CompRTQuantumStockpile>();
                    compStockpile.PostSpawnSetup();
                    compStockpile.PostExposeData();
                }
            }
            else
            {
                CompRTQuantumStockpile compStockpile = parent.TryGetComp<CompRTQuantumStockpile>();
                if (compStockpile != null)
                {
                    foreach (ThingComp comp in parent.AllComps)
                    {
                        if (comp is CompRTQuantumStockpile)
                        {
                            comp.PostDeSpawn(comp.parent.Map);
                        }
                    }
                    parent.AllComps.RemoveAll(x => x is CompRTQuantumStockpile);
                    parent.def.comps.RemoveAll(x => x.compClass.ToString().Equals("RT_QuantumStorage.CompRTQuantumStockpile"));
                }
                if (parent.TryGetComp<CompRTQuantumChunkSilo>() == null)
                {
                    CompProperties_RTQuantumChunkSilo compPropsChunkSilo = new CompProperties_RTQuantumChunkSilo();
                    compPropsChunkSilo.compClass = typeof(CompRTQuantumChunkSilo);
                    List<CompProperties> componentsBackup = new List<CompProperties>();
                    foreach (CompProperties compProperties in parent.def.comps)
                    {
                        componentsBackup.Add(compProperties);
                    }
                    parent.def.comps.Clear();
                    parent.def.comps.Add(compPropsChunkSilo);
                    parent.InitializeComps();
                    foreach (CompProperties compProperties in componentsBackup)
                    {
                        parent.def.comps.Add(compProperties);
                    }

                    CompRTQuantumChunkSilo compChunkSilo = parent.TryGetComp<CompRTQuantumChunkSilo>();
                    compChunkSilo.PostSpawnSetup();
                    compChunkSilo.PostExposeData();
                }
            }
        }
        private void SortOutComps()
        {
            if (!switchedToChunkSilo)
            {
                CompRTQuantumChunkSilo compChunkSilo = parent.TryGetComp <CompRTQuantumChunkSilo>();
                if (compChunkSilo != null)
                {
                    foreach (ThingComp comp in parent.AllComps)
                    {
                        if (comp is CompRTQuantumChunkSilo)
                        {
                            comp.PostDeSpawn();
                        }
                    }
                    parent.AllComps.RemoveAll(x => x is CompRTQuantumChunkSilo);
                    parent.def.comps.RemoveAll(x => x.compClass.ToString().Equals("RT_QuantumStorage.CompRTQuantumChunkSilo"));
                }
                if (parent.TryGetComp <CompRTQuantumStockpile>() == null)
                {
                    CompProperties_RTQuantumStockpile compPropsStockpile = new CompProperties_RTQuantumStockpile();
                    compPropsStockpile.compClass = typeof(CompRTQuantumStockpile);
                    List <CompProperties> componentsBackup = new List <CompProperties>();
                    foreach (CompProperties compProperties in parent.def.comps)
                    {
                        componentsBackup.Add(compProperties);
                    }
                    parent.def.comps.Clear();
                    parent.def.comps.Add(compPropsStockpile);
                    parent.InitializeComps();
                    foreach (CompProperties compProperties in componentsBackup)
                    {
                        parent.def.comps.Add(compProperties);
                    }

                    CompRTQuantumStockpile compStockpile = parent.TryGetComp <CompRTQuantumStockpile>();
                    compStockpile.PostSpawnSetup();
                    compStockpile.PostExposeData();
                }
            }
            else
            {
                CompRTQuantumStockpile compStockpile = parent.TryGetComp <CompRTQuantumStockpile>();
                if (compStockpile != null)
                {
                    foreach (ThingComp comp in parent.AllComps)
                    {
                        if (comp is CompRTQuantumStockpile)
                        {
                            comp.PostDeSpawn();
                        }
                    }
                    parent.AllComps.RemoveAll(x => x is CompRTQuantumStockpile);
                    parent.def.comps.RemoveAll(x => x.compClass.ToString().Equals("RT_QuantumStorage.CompRTQuantumStockpile"));
                }
                if (parent.TryGetComp <CompRTQuantumChunkSilo>() == null)
                {
                    CompProperties_RTQuantumChunkSilo compPropsChunkSilo = new CompProperties_RTQuantumChunkSilo();
                    compPropsChunkSilo.compClass = typeof(CompRTQuantumChunkSilo);
                    List <CompProperties> componentsBackup = new List <CompProperties>();
                    foreach (CompProperties compProperties in parent.def.comps)
                    {
                        componentsBackup.Add(compProperties);
                    }
                    parent.def.comps.Clear();
                    parent.def.comps.Add(compPropsChunkSilo);
                    parent.InitializeComps();
                    foreach (CompProperties compProperties in componentsBackup)
                    {
                        parent.def.comps.Add(compProperties);
                    }

                    CompRTQuantumChunkSilo compChunkSilo = parent.TryGetComp <CompRTQuantumChunkSilo>();
                    compChunkSilo.PostSpawnSetup();
                    compChunkSilo.PostExposeData();
                }
            }
        }