public void giveStatUpgrade(StatUpgrade statUpgrade) { statUpgrades.Add(statUpgrade); float pendingMaxHealth = statUpgrades.Sum(s => s.health) + baseHealth; if (pendingMaxHealth > maxHealth) { health += pendingMaxHealth - maxHealth; } else if (health > pendingMaxHealth) { health = pendingMaxHealth; } maxHealth = pendingMaxHealth; healthChanged.Invoke(); damage = statUpgrades.Sum(s => s.damage) + baseAttack; shotSpeed = statUpgrades.Sum(s => s.fireRate) + baseShotSpeed; speed = statUpgrades.Sum(s => s.speed) + baseSpeed; }
public UpgradeNode(UpgradeNode reference) { nodeID = Find.UniqueIDsManager.GetNextThingID(); label = reference.label; upgradeID = reference.upgradeID; rootNodeLabel = reference.rootNodeLabel; informationHighlighted = reference.informationHighlighted; disableIfUpgradeNodeEnabled = reference.disableIfUpgradeNodeEnabled; upgradeCategory = reference.upgradeCategory; values = reference.values; cannonsUnlocked = reference.cannonsUnlocked; cost = reference.cost; researchPrerequisites = reference.researchPrerequisites; prerequisiteNodes = reference.prerequisiteNodes; imageFilePath = reference.imageFilePath; gridCoordinate = reference.gridCoordinate; upgradeTime = reference.upgradeTime; }
private void DrawStats(StatUpgrade node) { float barWidth = screenWidth - LeftWindowEdge - EdgePadding * 2 - BottomDisplayedOffset - 1f; //219 foreach (StatUpgradeCategoryDef statUpgrade in ValidCategories()) { float hoveredValue = 0f; if (node != null && node.values.TryGetValue(statUpgrade, out float value)) { hoveredValue = value; } //Rect armorStatRect = new Rect(LeftWindowEdge + EdgePadding, BottomWindowEdge + EdgePadding, barWidth, 20f); //HelperMethods.FillableBarLabeled(armorStatRect, SelPawnUpgrade.ArmorPoints / MaxArmorValueDisplayed, "VehicleMaxArmor".Translate(), StatUpgradeCategory.Armor, // HelperMethods.FillableBarInnerTex, HelperMethods.FillableBarBackgroundTex, SelPawnUpgrade.ArmorPoints, armorAdded, armorAdded / MaxArmorValueDisplayed); //Rect speedStatRect = new Rect(LeftWindowEdge + EdgePadding, armorStatRect.y + 25f, barWidth, 20f); //HelperMethods.FillableBarLabeled(speedStatRect, SelPawnUpgrade.ActualMoveSpeed / MaxSpeedValueDisplayed, "VehicleMaxSpeed".Translate(), StatUpgradeCategory.Speed, // HelperMethods.FillableBarInnerTex, HelperMethods.FillableBarBackgroundTex, SelPawnUpgrade.ActualMoveSpeed, speedAdded, speedAdded / MaxSpeedValueDisplayed); //Rect cargoCapacityStatRect = new Rect(LeftWindowEdge + EdgePadding, speedStatRect.y + 25f, barWidth, 20f); //HelperMethods.FillableBarLabeled(cargoCapacityStatRect, SelPawnUpgrade.CargoCapacity / MaxCargoValueDisplayed, "VehicleCargoCapacity".Translate(), StatUpgradeCategory.CargoCapacity, // HelperMethods.FillableBarInnerTex, HelperMethods.FillableBarBackgroundTex, SelPawnUpgrade.CargoCapacity, cargoAdded, cargoAdded / MaxCargoValueDisplayed); //if (SelPawnUpgrade.CompFueledTravel != null) //{ // Rect fuelEfficiencyStatRect = new Rect(LeftWindowEdge + EdgePadding, cargoCapacityStatRect.y + 25f, barWidth, 20f); // HelperMethods.FillableBarLabeled(fuelEfficiencyStatRect, SelPawnUpgrade.CompFueledTravel.FuelEfficiency / MaxFuelEffValueDisplayed, // "VehicleFuelCost".Translate(), StatUpgradeCategory.FuelConsumptionRate, HelperMethods.FillableBarInnerTex, HelperMethods.FillableBarBackgroundTex, // SelPawnUpgrade.CompFueledTravel.FuelEfficiency, fuelEffAdded, fuelEffAdded / MaxFuelEffValueDisplayed); // Rect fuelCapacityStatRect = new Rect(LeftWindowEdge + EdgePadding, fuelEfficiencyStatRect.y + 25f, barWidth, 20f); // HelperMethods.FillableBarLabeled(fuelCapacityStatRect, SelPawnUpgrade.CompFueledTravel.FuelCapacity / MaxFuelCapValueDisplayed, // "VehicleFuelCapacity".Translate(), StatUpgradeCategory.FuelCapacity, HelperMethods.FillableBarInnerTex, HelperMethods.FillableBarBackgroundTex, // SelPawnUpgrade.CompFueledTravel.FuelCapacity, fuelCapAdded, fuelCapAdded / MaxFuelCapValueDisplayed); //} } }