Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="fractionColonist"></param>
        /// <param name="fractionPirate"></param>
        /// <returns>Истина, если это особый вид - пленник</returns>
        public bool SetFaction(string fractionColonist, string fractionPirate)
        {
            if (string.IsNullOrEmpty(Data) || !Data.Contains(" Class=\"Pawn\""))
            {
                return(false);
            }
            if (MainHelper.DebugMode)
            {
                File.WriteAllText(Loger.PathLog + "MailPawnB" + (++nnnn).ToString() + ".xml", Data);
            }

            bool col      = Data.Contains("<kindDef>Colonist</kindDef>");
            bool isAnimal = Data.Contains("<lastJobGiverThinkTree>Animal</lastJobGiverThinkTree>"); //похоже, с 1.1 этого тэга нет

            if (!isAnimal)
            {
                isAnimal =
                    !Data.Contains("<lastJobGiverThinkTree>Humanlike</lastJobGiverThinkTree>") && //похоже, с 1.1 этого тэга нет
                    GameXMLUtils.GetByTag(Data, "def") == GameXMLUtils.GetByTag(Data, "kindDef");
            }
            if (!isAnimal)
            {
                string fraction = fractionColonist;                            //col ? fractionColonist : fractionPirate;
                Data = GameXMLUtils.ReplaceByTag(Data, "faction", fraction);
                Data = GameXMLUtils.ReplaceByTag(Data, "kindDef", "Colonist"); //"Pirate"
                //if (MainHelper.DebugMode) Loger.Log(" Replace faction=>" + fraction);
            }
            //если это гости, то убираем у них это свойство - оно должно выставиться потом

            Data = GameXMLUtils.ReplaceByTag(Data, "guest", @"
    <hostFaction>null</hostFaction>
    <interactionMode>NoInteraction</interactionMode>
    <spotToWaitInsteadOfEscaping>(-1000, -1000, -1000)</spotToWaitInsteadOfEscaping>
    <lastPrisonBreakTicks>-1</lastPrisonBreakTicks>
  ");

            /*
             * Data = GameXMLUtils.ReplaceByTag(Data, "hostFaction", "null", "<guest>");
             * Data = GameXMLUtils.ReplaceByTag(Data, "prisoner", "False", "<guest>");*/

            /* попытка передавать заключенных не получилась
             * Data = GameXMLUtils.ReplaceByTag(Data, "hostFaction",
             *  (val) =>
             *  {
             *      if (MainHelper.DebugMode) Loger.Log(" Replace hostFaction "+ val + "=>" + fractionColonist);
             *      return val == "null" ? null : fractionColonist;
             *
             *  });
             */

            if (MainHelper.DebugMode)
            {
                File.WriteAllText(Loger.PathLog + "MailPawnA" + nnnn.ToString() + ".xml", Data);
            }
            return(!col && !isAnimal);
        }
Exemple #2
0
        /// <summary>
        /// Меняет у людей (всех пешек не животных) фракцию на фракцию игрока (иначе посе спавна без косяков не получается поменять у пешек фракцию на фракцию игрока).
        /// Возвращает истину, когда это был пират или пленник
        /// </summary>
        /// <param name="fractionColonist"></param>
        /// <returns>Истина, если это особый вид - пленник</returns>
        public bool SetFaction(string fractionColonist)
        {
            if (string.IsNullOrEmpty(Data) || !Data.Contains(" Class=\"Pawn\""))
            {
                return(false);
            }
            if (MainHelper.DebugMode)
            {
                File.WriteAllText(Loger.PathLog + "MailPawnB" + (++nnnn).ToString() + ".xml", Data);
            }

            //логика коррекции основывается на 3х группыах:
            //колонист, человек не колонист (пират или пленник), животное

            bool col = Data.Contains("<kindDef>Colonist</kindDef>");

            if (!col)
            {
                col = Data.Contains("ColonistGeneral</kindDef>");       //для мода с андроидами
            }
            bool isAnimal = GameXMLUtils.GetByTag(Data, "def") == GameXMLUtils.GetByTag(Data, "kindDef");

            //для всех людей устанавливаем фракцию игрока (у животных не меняем)

            if (!isAnimal)
            {
                string fraction = fractionColonist; //col ? fractionColonist : fractionPirate;
                Data = GameXMLUtils.ReplaceByTag(Data, "faction", fraction);
                if (!col)
                {
                    Data = GameXMLUtils.ReplaceByTag(Data, "kindDef", "Colonist");       //"Pirate"
                }
                //if (MainHelper.DebugMode) Loger.Log(" Replace faction=>" + fraction);
            }

            //если это гости, то убираем у них это свойство - оно должно выставиться потом

            Data = GameXMLUtils.ReplaceByTag(Data, "guest", @"
    <hostFaction>null</hostFaction>
    <interactionMode>NoInteraction</interactionMode>
    <spotToWaitInsteadOfEscaping>(-1000, -1000, -1000)</spotToWaitInsteadOfEscaping>
    <lastPrisonBreakTicks>-1</lastPrisonBreakTicks>
  ");

            /*
             * Data = GameXMLUtils.ReplaceByTag(Data, "hostFaction", "null", "<guest>");
             * Data = GameXMLUtils.ReplaceByTag(Data, "prisoner", "False", "<guest>");*/

            /* попытка передавать заключенных не получилась
             * Data = GameXMLUtils.ReplaceByTag(Data, "hostFaction",
             *  (val) =>
             *  {
             *      if (MainHelper.DebugMode) Loger.Log(" Replace hostFaction "+ val + "=>" + fractionColonist);
             *      return val == "null" ? null : fractionColonist;
             *
             *  });
             */

            //возвращаем true, если это человек и не колонист (пират или пленник)

            if (MainHelper.DebugMode)
            {
                File.WriteAllText(Loger.PathLog + "MailPawnA" + nnnn.ToString() + ".xml", Data);
            }
            return(!col && !isAnimal);
        }