Exemplo n.º 1
0
        /// <summary>
        /// Создает игровой объект.
        /// Если это пешка не колонист, то делаем его пиратом заключённым.
        /// Если freePirate=true, то делаем враждебными пиратами всех из фракции игрока.
        /// </summary>
        public static Thing PrepareSpawnThingEntry(ThingEntry thing, Faction factionPirate, bool freePirate = false)
        {
            var factionColonistLoadID = Find.FactionManager.OfPlayer.GetUniqueLoadID();
            //var fractionRoyaltyLoadID = Find.FactionManager.FirstFactionOfDef(FactionDefOf.Empire)?.GetUniqueLoadID();
            var fractionRoyalty = Find.FactionManager.FirstFactionOfDef(FactionDefOf.Empire);

            //if (string.IsNullOrEmpty(fractionRoyaltyLoadID)) Loger.Log("Client fractionRoyaltyLoadID is not find");

            //var factionPirateLoadID = factionPirate.GetUniqueLoadID();
            RegisterReferencing(Find.FactionManager.OfPlayer);

            //меняем фракцию на игрока для всех
            thing.SetFaction(factionColonistLoadID, () =>
            {
                if (fractionRoyalty == null)
                {
                    Loger.Log("Client fractionRoyalty is not find");
                    return(null);
                }

                Loger.Log("Client fractionRoyalty RegisterReferencing");
                RegisterReferencing(fractionRoyalty);

                return(fractionRoyalty.GetUniqueLoadID());
            });
            Thing thin;

            thin = thing.CreateThing(false, 0, freePirate);
            return(thin);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Создает игровой объект.
        /// Если это пешка не колонист, то делаем его пиратом заключённым.
        /// Если freePirate=true, то делаем враждебными пиратами всех из фракции игрока.
        /// </summary>
        public static Thing PrepareSpawnThingEntry(ThingEntry thing, Faction factionPirate, bool freePirate = false)
        {
            var factionColonistLoadID = Find.FactionManager.OfPlayer.GetUniqueLoadID();

            //var factionPirateLoadID = factionPirate.GetUniqueLoadID();

            //меняем фракцию на игрока для всех
            thing.SetFaction(factionColonistLoadID);
            Thing thin;

            thin = thing.CreateThing(false, 0, freePirate);
            return(thin);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Создает игровой объект.
        /// Если это пешка не колонист, то делаем его пиратом заключённым.
        /// Если freePirate=true, то делаем враждебными пиратами всех из фракции игрока.
        /// revertPirate=true включает freePirate, если это бы не пират, и делает игроком, если был пиратом
        /// </summary>
        public static Thing PrepareSpawnThingEntry(ThingEntry thing, Faction factionPirate, bool freePirate = false /*, bool revertPirate = false*/)
        {
            var factionColonistLoadID = Find.FactionManager.OfPlayer.GetUniqueLoadID();
            var factionPirateLoadID   = factionPirate.GetUniqueLoadID();

            var   prisoner = thing.SetFaction(factionColonistLoadID, factionPirateLoadID);
            Thing thin;

            thin = thing.CreateThing(false);
            if (MainHelper.DebugMode)
            {
                Loger.Log("SetFaction...");
            }
            if (thin.def.CanHaveFaction)
            {
                if (MainHelper.DebugMode)
                {
                    Loger.Log("SetFaction...1");
                }

                /*
                 * if (revertPirate)
                 * {
                 *  if (thin is Pawn && thin.Faction == Find.FactionManager.OfPlayer)
                 *  {
                 *      thin.SetFaction(factionPirate);
                 *      var p = thin as Pawn;
                 *      if (!freePirate) p.guest.SetGuestStatus(factionPirate, true);
                 *  }
                 *  else
                 *      thin.SetFaction(Find.FactionManager.OfPlayer);
                 * }
                 * else*/
                {
                    if (thin is Pawn && (prisoner || freePirate && (/*((Pawn)thin).RaceProps.Humanlike ||*/ thin.Faction == Find.FactionManager.OfPlayer)))
                    {
                        if (MainHelper.DebugMode)
                        {
                            Loger.Log("SetFaction...2");
                        }
                        thin.SetFaction(factionPirate);
                        if (MainHelper.DebugMode)
                        {
                            Loger.Log("SetFaction...3");
                        }
                        var p = thin as Pawn;
                        if (MainHelper.DebugMode)
                        {
                            Loger.Log("SetFaction...4");
                        }
                        if (!freePirate && p.guest != null)
                        {
                            p.guest.SetGuestStatus(factionPirate, true);
                        }
                        if (MainHelper.DebugMode)
                        {
                            Loger.Log("SetFaction...5");
                        }
                    }
                    else
                    {
                        if (MainHelper.DebugMode)
                        {
                            Loger.Log("SetFaction...6");
                        }
                        thin.SetFaction(Find.FactionManager.OfPlayer);
                        if (MainHelper.DebugMode)
                        {
                            Loger.Log("SetFaction...7");
                        }
                    }
                }
            }
            return(thin);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Создает игровой объект.
        /// Если это пешка не колонист, то делаем его пиратом заключённым.
        /// Если freePirate=true, то делаем враждебными пиратами всех из фракции игрока.
        /// </summary>
        public static Thing PrepareSpawnThingEntry(ThingEntry thing, Faction factionPirate, bool freePirate = false)
        {
            var factionColonistLoadID = Find.FactionManager.OfPlayer.GetUniqueLoadID();
            //var factionPirateLoadID = factionPirate.GetUniqueLoadID();

            //меняем фракцию на игрока для всех
            var   prisoner = thing.SetFaction(factionColonistLoadID);
            Thing thin;

            thin = thing.CreateThing(false);
            if (MainHelper.DebugMode)
            {
                Loger.Log("SetFaction...");
            }
            if (thin.def.CanHaveFaction)
            {
                if (MainHelper.DebugMode)
                {
                    Loger.Log("SetFaction...1");
                }

                if (thin is Pawn && (prisoner || freePirate && thin.Faction == Find.FactionManager.OfPlayer))
                {
                    //а тут меняем фракцию на пиратов, для тех кому нужно
                    if (MainHelper.DebugMode)
                    {
                        Loger.Log("SetFaction...2");
                    }
                    thin.SetFaction(factionPirate);
                    if (MainHelper.DebugMode)
                    {
                        Loger.Log("SetFaction...3");
                    }
                    var p = thin as Pawn;
                    if (MainHelper.DebugMode)
                    {
                        Loger.Log("SetFaction...4");
                    }
                    if (!freePirate && p.guest != null)
                    {
                        p.guest.SetGuestStatus(factionPirate, true);
                    }
                    if (MainHelper.DebugMode)
                    {
                        Loger.Log("SetFaction...5");
                    }
                }
                else
                {
                    if (MainHelper.DebugMode)
                    {
                        Loger.Log("SetFaction...6");
                    }
                    thin.SetFaction(Find.FactionManager.OfPlayer);
                    if (MainHelper.DebugMode)
                    {
                        Loger.Log("SetFaction...7");
                    }
                }
            }
            return(thin);
        }