예제 #1
0
        public static KCT_BuildListVessel AddVesselToBuildList(KCT_BuildListVessel blv, Dictionary <String, int> inventory)
        {
            if (CurrentGameIsCareer())
            {
                float  totalCost = blv.cost;
                double prevFunds = Funding.Instance.Funds;
                double newFunds  = SpendFunds(totalCost);
                if (prevFunds == newFunds)
                {
                    KCTDebug.Log("Tried to add " + blv.shipName + " to build list but not enough funds.");
                    KCTDebug.Log("Vessel cost: " + blv.cost + ", Current funds: " + newFunds);
                    var msg = new ScreenMessage("Not Enough Funds To Build!", 4.0f, ScreenMessageStyle.UPPER_CENTER);
                    ScreenMessages.PostScreenMessage(msg, true);
                    return(blv);
                }
            }
            string type = "";

            if (blv.type == KCT_BuildListVessel.ListType.VAB)
            {
                KCT_GameStates.VABList.Add(blv);
                type = "VAB";
            }
            else if (blv.type == KCT_BuildListVessel.ListType.SPH)
            {
                KCT_GameStates.SPHList.Add(blv);
                type = "SPH";
            }
            if (inventory.Count > 0)
            {
                foreach (ConfigNode p in blv.ExtractedPartNodes)
                {
                    if (KCT_Utilities.RemovePartFromInventory(p, inventory))
                    {
                        blv.InventoryParts.Add(PartNameFromNode(p) + GetTweakScaleSize(p));
                    }
                }
            }
            KCTDebug.Log("Added " + blv.shipName + " to " + type + " build list. Cost: " + blv.cost);
            //KCTDebug.Log("Cost Breakdown (total, parts, fuel): " + blv.totalCost + ", " + blv.dryCost + ", " + blv.fuelCost);
            var message = new ScreenMessage("[KCT] Added " + blv.shipName + " to " + type + " build list.", 4.0f, ScreenMessageStyle.UPPER_CENTER);

            ScreenMessages.PostScreenMessage(message, true);
            return(blv);
        }