// Token: 0x060069BE RID: 27070 RVA: 0x0024FC2C File Offset: 0x0024DE2C
        public override void Resolve(ResolveParams rp)
        {
            if (rp.singlePawnToSpawn != null && rp.singlePawnToSpawn.Spawned)
            {
                return;
            }
            Map     map = BaseGen.globalSettings.map;
            IntVec3 loc;

            if (!SymbolResolver_SingleHivePawn.TryFindSpawnCell(rp, out loc))
            {
                if (rp.singlePawnToSpawn != null)
                {
                    Find.WorldPawns.PassToWorld(rp.singlePawnToSpawn, PawnDiscardDecideMode.Decide);
                }
                return;
            }
            Pawn pawn;

            if (rp.singlePawnToSpawn == null)
            {
                PawnGenerationRequest value;
                if (rp.singlePawnGenerationRequest != null)
                {
                    value = rp.singlePawnGenerationRequest.Value;
                }
                else
                {
                    PawnKindDef pawnKindDef;
                    if ((pawnKindDef = rp.singlePawnKindDef) == null)
                    {
                        pawnKindDef = (from x in DefDatabase <PawnKindDef> .AllDefsListForReading
                                       where x.defaultFactionType == null || !x.defaultFactionType.isPlayer
                                       select x).RandomElement <PawnKindDef>();
                    }
                    PawnKindDef pawnKindDef2 = pawnKindDef;
                    Faction     faction      = rp.faction;
                    if (faction == null && pawnKindDef2.RaceProps.Humanlike)
                    {
                        if (pawnKindDef2.defaultFactionType != null)
                        {
                            faction = FactionUtility.DefaultFactionFrom(pawnKindDef2.defaultFactionType);
                            if (faction == null)
                            {
                                return;
                            }
                        }
                        else if (!(from x in Find.FactionManager.AllFactions
                                   where !x.IsPlayer
                                   select x).TryRandomElement(out faction))
                        {
                            return;
                        }
                    }
                    value = new PawnGenerationRequest(pawnKindDef2, faction, PawnGenerationContext.NonPlayer, map.Tile,
                                                      false, false, false, false, true, false, 1f, false, true, true, true, false, false, false, false, 0f);
                }
                pawn = PawnGenerator.GeneratePawn(value);
                if (rp.postThingGenerate != null)
                {
                    rp.postThingGenerate(pawn);
                }
            }
            else
            {
                pawn = rp.singlePawnToSpawn;
            }
            if (!pawn.Dead && rp.disableSinglePawn != null && rp.disableSinglePawn.Value)
            {
                pawn.mindState.Active = false;
            }
            //	Log.Message(pawn + " spawning at" + loc +" map "+map);
            GenSpawn.Spawn(pawn, loc, map, WipeMode.Vanish);
            if (rp.singlePawnLord != null)
            {
                rp.singlePawnLord.AddPawn(pawn);
            }
            if (rp.postThingSpawn != null)
            {
                rp.postThingSpawn(pawn);
            }
        }
        // Token: 0x060069BD RID: 27069 RVA: 0x0024FBF0 File Offset: 0x0024DDF0
        public override bool CanResolve(ResolveParams rp)
        {
            IntVec3 intVec;

            return(base.CanResolve(rp) && ((rp.singlePawnToSpawn != null && rp.singlePawnToSpawn.Spawned) || SymbolResolver_SingleHivePawn.TryFindSpawnCell(rp, out intVec)));
        }