예제 #1
0
        static bool Prefix(ColonistBar __instance, ref bool ___entriesDirty, ref List <Map> ___tmpMaps, ref List <Pawn> ___tmpPawns, ref List <Caravan> ___tmpCaravans, ref List <ColonistBar.Entry> ___cachedEntries, ref ColonistBarDrawLocsFinder ___drawLocsFinder, ref List <Vector2> ___cachedDrawLocs, ref float ___cachedScale)
        {
            if (!___entriesDirty)
            {
                return(false);
            }
            ___entriesDirty = false;
            ___cachedEntries.Clear();
            if (Find.PlaySettings.showColonistBar)
            {
                ___tmpMaps.Clear();
                ___tmpMaps.AddRange((IEnumerable <Map>)Find.Maps);
                ___tmpMaps.SortBy <Map, bool, int>((Func <Map, bool>)(x => !x.IsPlayerHome), (Func <Map, int>)(x => x.uniqueID));
                int group = 0;
                for (int index1 = 0; index1 < ___tmpMaps.Count; ++index1)
                {
                    ___tmpPawns.Clear();
                    ___tmpPawns.AddRange(___tmpMaps[index1].mapPawns.FreeColonists);
                    List <Thing> thingList = ___tmpMaps[index1].listerThings.ThingsInGroup(ThingRequestGroup.Corpse);
                    for (int index2 = 0; index2 < thingList.Count; ++index2)
                    {
                        if (!thingList[index2].IsDessicated())
                        {
                            Pawn innerPawn = ((Corpse)thingList[index2]).InnerPawn;
                            if (innerPawn != null && innerPawn.IsColonist)
                            {
                                ___tmpPawns.Add(innerPawn);
                            }
                        }
                    }
                    List <Pawn> allPawnsSpawned = ___tmpMaps[index1].mapPawns.AllPawnsSpawned;
                    for (int index2 = 0; index2 < allPawnsSpawned.Count; ++index2)
                    {
                        Corpse carriedThing = allPawnsSpawned[index2].carryTracker.CarriedThing as Corpse;
                        if (carriedThing != null && !carriedThing.IsDessicated() && carriedThing.InnerPawn.IsColonist)
                        {
                            ___tmpPawns.Add(carriedThing.InnerPawn);
                        }
                    }
                    PlayerPawnsDisplayOrderUtility.Sort(___tmpPawns);
                    for (int index2 = 0; index2 < ___tmpPawns.Count; ++index2)
                    {
                        ___cachedEntries.Add(new ColonistBar.Entry(___tmpPawns[index2], ___tmpMaps[index1], group));
                    }
                    if (!___tmpPawns.Any <Pawn>())
                    {
                        ___cachedEntries.Add(new ColonistBar.Entry((Pawn)null, ___tmpMaps[index1], group));
                    }
                    ++group;
                }
                ___tmpCaravans.Clear();
                ___tmpCaravans.AddRange((IEnumerable <Caravan>)Find.WorldObjects.Caravans);
                ___tmpCaravans.SortBy <Caravan, int>((Func <Caravan, int>)(x => x.ID));
                for (int index1 = 0; index1 < ___tmpCaravans.Count; ++index1)
                {
                    //change from original
                    if (___tmpCaravans[index1].IsPlayerControlled && ___tmpCaravans[index1].pawns.Count != 0)
                    {
                        ___tmpPawns.Clear();
                        ___tmpPawns.AddRange((IEnumerable <Pawn>)___tmpCaravans[index1].PawnsListForReading);
                        PlayerPawnsDisplayOrderUtility.Sort(___tmpPawns);
                        for (int index2 = 0; index2 < ___tmpPawns.Count; ++index2)
                        {
                            if (___tmpPawns[index2].IsColonist)
                            {
                                ___cachedEntries.Add(new ColonistBar.Entry(___tmpPawns[index2], (Map)null, group));
                            }
                        }
                        ++group;
                    }
                }
            }
            __instance.drawer.Notify_RecachedEntries();
            ___tmpPawns.Clear();
            ___tmpMaps.Clear();
            ___tmpCaravans.Clear();
            ___drawLocsFinder.CalculateDrawLocs(___cachedDrawLocs, out ___cachedScale);

            return(false);
        }
예제 #2
0
        public static void Listener(ColonistBar __instance, ref List <ColonistBar.Entry>
                                    ___cachedEntries, ref ColonistBarDrawLocsFinder ___drawLocsFinder, ref List <Vector2>
                                    ___cachedDrawLocs, ref float ___cachedScale)
        {
            try
            {
                for (int i = 0; i < ___cachedDrawLocs.Count; i++)
                {
                    if (___cachedEntries[i].pawn == null && ___cachedEntries[i].map.Parent is MapParent_ZLevel)
                    {
                        //ZLogger.Message("Rect: " + ___cachedDrawLocs[i].x + " - " + ___cachedDrawLocs[i].y + " - "
                        //	+ __instance.Size.x + " - " + __instance.Size.y);
                        Rect rect = new Rect(___cachedDrawLocs[i].x + (__instance.Size.x / 2f),
                                             ___cachedDrawLocs[i].y + (__instance.Size.y / 2f), __instance.Size.x / 2, __instance.Size.y / 2);
                        Texture2D AbandonButtonTex = ContentFinder <Texture2D> .Get("UI/Buttons/Abandon", true);

                        Matrix4x4 matrix = GUI.matrix;
                        Color     color2 = GUI.color;
                        GUI.DrawTexture(rect, AbandonButtonTex);
                        GUI.color  = color2;
                        GUI.matrix = matrix;
                        if (Mouse.IsOver(rect))
                        {
                            if (Input.GetMouseButtonDown(0) && ___cachedEntries[i].map != null)
                            {
                                Map map = ___cachedEntries[i].map;
                                Find.WindowStack.Add(new Dialog_MessageBox("ZAbandonConfirmation".Translate(), "Yes".Translate(), delegate()
                                {
                                    var comp        = map.GetComponent <MapComponentZLevel>();
                                    var pathToWrite = Path.Combine(Path.Combine(GenFilePaths.ConfigFolderPath,
                                                                                "SavedMaps"), map.Tile + " - " + comp.Z_LevelIndex + ".xml");
                                    if (map.listerThings.AllThings.Count > 0)
                                    {
                                        BlueprintUtility.SaveEverything(pathToWrite, map, "SavedMap");
                                        ZLogger.Message("Removing map: " + map);
                                    }
                                    var parent   = map.Parent as MapParent_ZLevel;
                                    var ZTracker = Current.Game.GetComponent <ZLevelsManager>();
                                    parent.Abandon();
                                    ZTracker.ZLevelsTracker[map.Tile].ZLevels.Remove(comp.Z_LevelIndex);

                                    foreach (var map2 in Find.Maps)
                                    {
                                        var comp2 = map2.GetComponent <MapComponentZLevel>();
                                        if (ZTracker.ZLevelsTracker[map2.Tile] != null)
                                        {
                                            foreach (var d in ZTracker.ZLevelsTracker[map2.Tile].ZLevels)
                                            {
                                                ZLogger.Message(map2 + ": " + d.Key + " - " + d.Value);
                                            }
                                        }
                                    }
                                }, "No".Translate(), null, null, false, null, null));
                            }
                            else if (Input.GetMouseButtonDown(1) && ___cachedEntries[i].map != null)
                            {
                                Map map = ___cachedEntries[i].map;
                                Find.WindowStack.Add(new Dialog_MessageBox("ZAbandonPermanentlyConfirmation".Translate(), "Yes".Translate(), delegate()
                                {
                                    var comp = map.GetComponent <MapComponentZLevel>();
                                    try
                                    {
                                        var pathToDelete = Path.Combine(Path.Combine(GenFilePaths.ConfigFolderPath,
                                                                                     "SavedMaps"), map.Tile + " - " + comp.Z_LevelIndex + ".xml");
                                        var file = new FileInfo(pathToDelete);
                                        file.Delete();
                                    }
                                    catch
                                    {
                                    }

                                    var parent   = map.Parent as MapParent_ZLevel;
                                    var ZTracker = Current.Game.GetComponent <ZLevelsManager>();
                                    parent.Abandon();
                                    ZTracker.ZLevelsTracker[map.Tile].ZLevels.Remove(comp.Z_LevelIndex);

                                    foreach (var map2 in Find.Maps)
                                    {
                                        var comp2 = map2.GetComponent <MapComponentZLevel>();
                                        if (ZTracker.ZLevelsTracker[map2.Tile] != null)
                                        {
                                            foreach (var d in ZTracker.ZLevelsTracker[map2.Tile].ZLevels)
                                            {
                                                ZLogger.Message(map2 + ": " + d.Key + " - " + d.Value);
                                            }
                                        }
                                    }
                                }, "No".Translate(), null, null, false, null, null));
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
예제 #3
0
            public static void Listener(ColonistBar __instance, ref List <ColonistBar.Entry> ___cachedEntries, ref ColonistBarDrawLocsFinder ___drawLocsFinder, ref List <Vector2> ___cachedDrawLocs, ref float ___cachedScale)
            {
                try
                {
                    if (!Settings.hideInactiveSurrogates)
                    {
                        return;
                    }

                    List <ColonistBar.Entry> toDel = null;
                    //Suppresssion de la barre du haut des surrogates non actifs
                    for (int i = 0; i < ___cachedEntries.Count; i++)
                    {
                        ColonistBar.Entry e = ___cachedEntries[i];
                        if (e.pawn.IsSurrogateAndroid(false, true))
                        {
                            if (toDel == null)
                            {
                                toDel = new List <ColonistBar.Entry>();
                            }

                            toDel.Add(e);
                        }
                    }
                    if (toDel != null)
                    {
                        for (int i = 0; i < toDel.Count; i++)
                        {
                            ColonistBar.Entry e = toDel[i];
                            ___cachedEntries.Remove(e);
                        }

                        __instance.drawer.Notify_RecachedEntries();

                        ___drawLocsFinder.CalculateDrawLocs(___cachedDrawLocs, out ___cachedScale);
                    }
                }
                catch (Exception e)
                {
                    Log.Message("[ATPP] Colonistbar.CheckRecacheEntries " + e.Message + " " + e.StackTrace);
                }
            }
예제 #4
0
            public static void Listener(ColonistBar __instance, ref List <ColonistBar.Entry> ___cachedEntries, ref ColonistBarDrawLocsFinder ___drawLocsFinder,
                                        ref List <Vector2> ___cachedDrawLocs, ref float ___cachedScale)
            {
                try
                {
                    if (!Settings.hideInactiveSurrogates)
                    {
                        return;
                    }

                    List <ColonistBar.Entry> toDel = null;

                    foreach (var e in ___cachedEntries.Where(e => e.pawn.IsSurrogateAndroid(false, true)))
                    {
                        if (toDel == null)
                        {
                            toDel = new List <ColonistBar.Entry>();
                        }

                        toDel.Add(e);
                    }

                    if (toDel == null)
                    {
                        return;
                    }

                    {
                        foreach (var e in toDel)
                        {
                            ___cachedEntries.Remove(e);
                        }

                        __instance.drawer.Notify_RecachedEntries();

                        ___drawLocsFinder.CalculateDrawLocs(___cachedDrawLocs, out ___cachedScale);
                    }
                }
                catch (Exception e)
                {
                    Log.Message("[ATPP] Colonistbar.CheckRecacheEntries " + e.Message + " " + e.StackTrace);
                }
            }