示例#1
0
        public static void LaunchThingsOfType(ThingDef resDef, int debt, Map map, TradeShip trader)
        {
            while (true)
            {
                Thing thing;
                if (debt > 0)
                {
                    thing = null;
                    foreach (Building_OrbitalTradeBeacon item in Building_OrbitalTradeBeacon.AllPowered(map))
                    {
                        foreach (IntVec3 tradeableCell in item.TradeableCells)
                        {
                            foreach (Thing item2 in map.thingGrid.ThingsAt(tradeableCell))
                            {
                                if (item2.def != resDef)
                                {
                                    continue;
                                }
                                thing = item2;
                                goto IL_009d;
                            }
                        }
                    }
                    goto IL_009d;
                }
                return;

IL_009d:
                if (thing == null)
                {
                    break;
                }
                int num = Math.Min(debt, thing.stackCount);
                if (trader != null)
                {
                    trader.GiveSoldThingToTrader(thing, num, TradeSession.playerNegotiator);
                }
                else
                {
                    thing.SplitOff(num).Destroy();
                }
                debt -= num;
            }
            Log.Error("Could not find any " + resDef + " to transfer to trader.");
        }
示例#2
0
        public static void LaunchThingsOfType(ThingDef resDef, int debt, Map map, TradeShip trader)
        {
            while (debt > 0)
            {
                Thing thing = null;
                foreach (Building_OrbitalTradeBeacon current in Building_OrbitalTradeBeacon.AllPowered(map))
                {
                    foreach (IntVec3 current2 in current.TradeableCells)
                    {
                        foreach (Thing current3 in map.thingGrid.ThingsAt(current2))
                        {
                            if (current3.def == resDef)
                            {
                                thing = current3;
                                goto IL_CC;
                            }
                        }
                    }
                }
IL_CC:
                if (thing == null)
                {
                    Log.Error("Could not find any " + resDef + " to transfer to trader.");
                    break;
                }
                int num = Math.Min(debt, thing.stackCount);
                if (trader != null)
                {
                    trader.GiveSoldThingToTrader(thing, num, TradeSession.playerNegotiator);
                }
                else
                {
                    thing.SplitOff(num).Destroy(DestroyMode.Vanish);
                }
                debt -= num;
            }
        }