コード例 #1
0
        public static bool GetAllChassis(bool showMechParts, ref List <ChassisDef> __result, SimGameState __instance)
        {
            __result = new List <ChassisDef>();
            ChassisHandler.ClearParts();
            List <string> allInventoryStrings = __instance.GetAllInventoryStrings();

            foreach (string text in allInventoryStrings)
            {
                int count = __instance.CompanyStats.GetValue <int>(text);
                if (count >= 1)
                {
                    string[] array = text.Split(new char[]
                    {
                        '.'
                    });
                    if (array[1] != "MECHPART")
                    {
                        BattleTechResourceType battleTechResourceType =
                            (BattleTechResourceType)Enum.Parse(typeof(BattleTechResourceType), array[1]);
                        if (battleTechResourceType == BattleTechResourceType.MechDef)
                        {
                            var cdef = array[2];
                            var mdef = array[2].Replace("chassisdef", "mechdef");

                            if (__instance.DataManager.Exists(BattleTechResourceType.ChassisDef, cdef) &&
                                __instance.DataManager.Exists(BattleTechResourceType.MechDef, mdef))
                            {
                                var mech = __instance.DataManager.MechDefs.Get(mdef);
                                __result.Add(mech.Chassis);
                                ChassisHandler.RegisterMechDef(mech);
                            }
                            else
                            {
                                Control.LogError($"ERROR: {cdef}/{mdef} not found");
                            }
                        }
                    }
                    else
                    {
                        if (__instance.DataManager.Exists(BattleTechResourceType.MechDef, array[2]))
                        {
                            var mdef = __instance.DataManager.MechDefs.Get(array[2]);
                            if (showMechParts)
                            {
                                var chassisDef = new ChassisDef(mdef.Chassis)
                                {
                                    DataManager = __instance.DataManager
                                };
                                chassisDef.Refresh();
                                chassisDef.MechPartCount = count;
                                chassisDef.MechPartMax   = __instance.Constants.Story.DefaultMechPartMax;
                                __result.Add(chassisDef);
                            }
                            ChassisHandler.RegisterMechDef(mdef, count);
                        }
                        else
                        {
                            Control.LogError($"ERROR: {array[2]} not found");
                            if (show)
                            {
                                Control.LogError($"AllMechDefs:");
                                foreach (var pair in __instance.DataManager.MechDefs)
                                {
                                    Control.LogError($"-- {pair.Key}: {(pair.Value == null ? "null" : "exist")}");
                                }

                                show = false;
                            }
                        }
                    }
                }
            }

            //ChassisHandler.ShowInfo();
            return(false);
        }