/// <summary> /// 各メンバーの値を設定する。CalcValue()の前に呼び出して設定しないといけない。 /// </summary> public void SetValue(Color c, EngineDefineEx engineDefineEx, EngineConfig config, EnginePreset preset, bool ponder) { EngineDefines[(int)c] = engineDefineEx; EngineConfigs[(int)c] = config; EnginePresets[(int)c] = preset; Ponders[(int)c] = ponder; }
/// <summary> /// 初期化する。 /// </summary> public void Init() { EngineDefines = new EngineDefineEx[2]; /* { null, null } */ EngineConfigs = new EngineConfig[2]; /* { null, null } */ EnginePresets = new EnginePreset[2]; /* { null, null } */ Ponders = new bool[2]; /* { false , false } */ HashSize = new long[2]; /* { 0, 0 } */ Threads = new int[2]; /* { 0, 0 } */ }
private bool TryRefreshEngineLoadout(EngineStorage engineStorage, EnginePreset enginePreset) { if (OverrideLoadoutWasBlocked(engineStorage)) { return(false); } var acceleration = 0f; var topSpeed = 0f; var fuelEconomy = 0f; for (var slot = 0; slot < engineStorage.inventory.capacity; slot++) { var engineItemType = engineStorage.slotTypes[slot]; var item = engineStorage.inventory.GetSlot(slot); var itemValue = 0f; if (item != null && !item.isBroken) { var component = item.info.GetComponent <ItemModEngineItem>(); if (component != null) { itemValue = item.amount * engineStorage.GetTierValue(component.tier); } } if (engineItemType.BoostsAcceleration()) { acceleration += Math.Max(itemValue, enginePreset.acceleration); } if (engineItemType.BoostsFuelEconomy()) { fuelEconomy += Math.Max(itemValue, enginePreset.fuelEconomy); } if (engineItemType.BoostsTopSpeed()) { topSpeed += Math.Max(itemValue, enginePreset.topSpeed); } } engineStorage.isUsable = acceleration > 0 && topSpeed > 0 && fuelEconomy > 0; engineStorage.accelerationBoostPercent = acceleration / engineStorage.accelerationBoostSlots; engineStorage.fuelEconomyBoostPercent = fuelEconomy / engineStorage.fuelEconomyBoostSlots; engineStorage.topSpeedBoostPercent = topSpeed / engineStorage.topSpeedBoostSlots; engineStorage.SendNetworkUpdate(); engineStorage.GetEngineModule()?.RefreshPerformanceStats(engineStorage); return(true); }