コード例 #1
0
 public static Blueprint LoadFromFile(string fileName)
 {
     Blueprint blueprint = new Blueprint();
     try
     {
         Scribe.InitLoading(BlueprintFiles.FilePathForSavedBlueprint(fileName));
         try
         {
             Scribe_Deep.LookDeep(ref blueprint, "Blueprint", null);
         }
         catch (Exception e)
         {
             Messages.Message("Error when loading blueprint", MessageSound.RejectInput);
             Log.Error(e.ToString());
         }
     }
     catch (Exception e)
     {
         Log.Error(e.ToString());
     }
     finally
     {
         Scribe.mode = LoadSaveMode.Inactive;
     }
     return blueprint;
 }
コード例 #2
0
 public AssemblyBill(AssemblyBillStack stack, Blueprint bp)
 {
     _bp = bp;
     _stack = stack;
     _container = new ThingContainer(this);
     WorkAmount = _bp.WorkAmount;
 }
コード例 #3
0
        public Page_Drafting(Blueprint? bp = null)
        {
            _bp = bp ?? Blueprint.Default;

            drawPriority = 2000;
            clearNonEditWindows = true;
            absorbAllInput = true;
            forcePause = true;
            closeOnEscapeKey = true;
            doCloseX = true;
            SetCentered(WinSize.x, WinSize.y);

            headGraphicDefs = DefDatabase<GraphicDef>.AllDefs.Where((d) => d.isHead).OrderBy((a) => a.label).ToList();
            bodyGraphicDefs = DefDatabase<GraphicDef>.AllDefs.Where(d => !d.isHead).OrderBy(a => a.label).ToList();

            try
            {
                BodyIndex = bodyGraphicDefs.IndexOf(_bp.BodyGraphicDef);
                if (_bp.HeadGraphicDef != null)
                    HeadIndex = headGraphicDefs.IndexOf(_bp.HeadGraphicDef);
            }
            catch (Exception e)
            {
                Log.Error(e.ToString());
            }
        }
コード例 #4
0
 public Dialog_SaveBlueprint(ref Blueprint bp)
 {
     FileName = string.Empty;
     this.interactButLabel = "BlueprintSave".Translate();
     bottomAreaHeight = 85f;
     FileName = BlueprintFiles.UnusedDefaultName();
     _bp = bp;
 }
コード例 #5
0
 public Dialog_WorkPackageSelection(ref Blueprint bp, Func<WorkPackageDef, bool> displayableFunc)
 {
     _bp = bp;
     _displayableFunc = displayableFunc;
     drawPriority = 2000;
     clearNonEditWindows = false;
     absorbAllInput = true;
     forcePause = true;
     closeOnEscapeKey = true;
     doCloseX = true;
     base.SetCentered(WinSize.x, WinSize.y);
 }
コード例 #6
0
 public static void SaveToFile(ref Blueprint bp, string fileName)
 {
     try
     {
         Scribe.InitWriting(BlueprintFiles.FilePathForSavedBlueprint(fileName), "blueprint");
         bp.BpName = fileName;
         Scribe_Deep.LookDeep(ref bp, "Blueprint");
     }
     catch (Exception e)
     {
         Log.Error("Failed to save blueprint");
         throw e;
     }
     finally
     {
         Scribe.FinalizeWriting();
         Scribe.mode = LoadSaveMode.Inactive;
     }
 }
コード例 #7
0
 public MetaDataManager(Droid droid, Blueprint bp)
     : this(droid)
 {
     ExplodeOnDeath = bp.ExplodeOnDeath;
     ExplosionRadius = bp.ExplosionRadius;
 }
コード例 #8
0
        public static Droid GenerateDroid(Blueprint bp, Faction faction)
        {
            Droid droid = (Droid)ThingMaker.MakeThing(bp.KindDef.race);

            droid.SetFactionDirect(faction);
            droid.kindDef = bp.KindDef;
            droid.RaceProps.corpseDef = ThingDef.Named("MD2DroidCorpse");

            #region Trackers
            droid.thinker = new Pawn_Thinker(droid);
            droid.playerController = new Pawn_PlayerController(droid);
            droid.inventory = new Pawn_InventoryTracker(droid);
            droid.pather = new Pawn_PathFollower(droid);
            droid.jobs = new Pawn_JobTracker(droid);
            droid.health = new Pawn_HealthTracker(droid);
            droid.ageTracker = new Pawn_AgeTracker(droid);
            droid.filth = new Pawn_FilthTracker(droid);
            droid.mindState = new Pawn_MindState(droid);
            droid.equipment = new Pawn_EquipmentTracker(droid);
            droid.apparel = new Pawn_ApparelTracker(droid);
            droid.natives = new Pawn_NativeVerbs(droid);
            droid.meleeVerbs = new Pawn_MeleeVerbs(droid);
            droid.carryHands = new Pawn_CarryHands(droid);
            droid.ownership = new Pawn_Ownership(droid);
            droid.skills = new Pawn_SkillTracker(droid);
            droid.story = new Pawn_StoryTracker(droid);
            droid.workSettings = new Pawn_WorkSettings(droid);
            droid.guest = new Pawn_GuestTracker(droid);
            droid.needs = new Pawn_NeedsTracker(droid);
            droid.stances = new Pawn_StanceTracker(droid);

            typeof(Pawn_NeedsTracker).GetMethod("AddNeed", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(droid.needs, new object[] { DefDatabase<NeedDef>.GetNamed("Mood") });
            #endregion

            droid.gender = droid.RaceProps.hasGenders ? Gender.Male : Gender.None;

            droid.ageTracker.SetChronologicalBirthDate(GenDate.CurrentYear, GenDate.DayOfMonth);
            droid.story.skinColor = PawnSkinColors.PaleWhiteSkin;
            droid.story.crownType = CrownType.Narrow;
            droid.story.headGraphicPath = GraphicDatabaseHeadRecords.GetHeadRandom(Gender.Male, droid.story.skinColor, droid.story.crownType).GraphicPath;
            droid.story.hairColor = PawnHairColors.RandomHairColor(droid.story.skinColor, droid.ageTracker.AgeBiologicalYears);
            droid.story.name = new PawnName()
            {
                first = "Droid",
                last = "Droid",
                nick = bp.Name
            };

            #region Managers

            droid.meta = new MetaDataManager(droid, bp);
            droid.utilities = new UtilityManager(droid);

            WorkPackageDef maintenance = WorkPackageDef.Named("MD2MaintenancePackage");
            WorkPackageDef firefighting = WorkPackageDef.Named("MD2FirefighterPackage");
            List<WorkPackageDef> list = bp.WorkPackages;
            if (!list.Contains(maintenance)) list.Add(maintenance);
            if (!list.Contains(firefighting)) list.Add(firefighting);
            droid.work = new WorkManager(list, droid);

            droid.backstory = new BackstoryManager(droid);
            droid.backstory.SpawnSetup();

            droid.drawManager = new DrawManager(bp.BodyGraphicDef, bp.HeadGraphicDef, droid);
            droid.drawManager.SpawnSetup();

            droid.parts = new PartsManager(droid);
            #endregion

            foreach (SkillRecord sk in droid.skills.skills)
            {
                sk.level = (bp.StartingSkillLevel > 20) ? 20 : (bp.StartingSkillLevel <= 0) ? 1 : bp.StartingSkillLevel;
                sk.passion = bp.SkillPassion;
            }
            droid.workSettings.EnableAndInitialize();

            foreach (var def in DefDatabase<WorkTypeDef>.AllDefs)
            {
                if (droid.work.Contains(def))
                {
                    droid.workSettings.SetPriority(def, 4);
                }
                else
                {
                    droid.workSettings.SetPriority(def, 0);
                    droid.workSettings.Disable(def);
                }
            }

            return droid;
        }
コード例 #9
0
 public MetaDataManager(Droid droid, Blueprint bp) : this(droid)
 {
     ExplodeOnDeath  = bp.ExplodeOnDeath;
     ExplosionRadius = bp.ExplosionRadius;
 }