Skip to content

Commit

Permalink
Merge master (@rsparkyc has been busy)
Browse files Browse the repository at this point in the history
  • Loading branch information
NathanKell committed Jun 20, 2017
2 parents 4e6debb + 57cb644 commit 56f3e84
Show file tree
Hide file tree
Showing 7 changed files with 61 additions and 37 deletions.
Binary file modified GameData/RP-0/Plugins/RP0.dll
Binary file not shown.
52 changes: 40 additions & 12 deletions Source/ProceduralAvionics/ModuleProceduralAvionics.cs
Expand Up @@ -30,6 +30,9 @@ class ModuleProceduralAvionics : ModuleAvionics, IPartMassModifier, IPartCostMod
public string avionicsConfigName;
private string oldAvionicsConfigName;

[KSPField(isPersistant = true)]
public string avionicsTechLevel;

[KSPField(isPersistant = true)]
public float maxDensityOfAvionics;

Expand Down Expand Up @@ -93,7 +96,7 @@ protected override float GetInternalMassLimit()
var max = GetMaximumControllableTonnage();
if (max == 0) {
//Sounds like we're not yet initiaziled, let's not change anything
Log("no max");
//Log("no max");
return proceduralMassLimit;
}
var min = GetMinimumControllableTonnage();
Expand Down Expand Up @@ -143,7 +146,9 @@ protected override string GetTonnageString()
public override void OnLoad(ConfigNode node)
{
try {
Log("OnLoad called");
if (GameSceneFilter.AnyInitializing.IsLoaded()) {
Log("Loading Avionics Configs");
ProceduralAvionicsTechManager.LoadAvionicsConfigs(node);
}
}
Expand All @@ -153,18 +158,37 @@ public override void OnLoad(ConfigNode node)
}
}

private bool started = false;
public new void Start()
{
Log("Start called");
started = true;

string config = ProceduralAvionicsTechManager.GetPurchasedConfigs()[0];
Log("Default config to use: ", config);

if (String.IsNullOrEmpty(avionicsTechLevel)) {
avionicsTechLevel = ProceduralAvionicsTechManager.GetMaxUnlockedTech(
String.IsNullOrEmpty(avionicsConfigName) ? config : avionicsConfigName);
Log("No tech level set, using ", avionicsTechLevel);
}

if (String.IsNullOrEmpty(avionicsConfigName)) {
Log("No config set, using ", config);
avionicsConfigName = config;
}

UpdateConfigSliders();
BindUIChangeCallbacks();

UpdateMaxValues();
UpdateCurrentConfig();

Log("Setting internal ksp fields");
SetInternalKSPFields();
Log("Done setting internal ksp fields");

if (cachedEventData != null) {
OnPartVolumeChanged(cachedEventData);
}

base.Start();
Log("Start finished");
Expand All @@ -189,6 +213,8 @@ private void MassLimitChanged(BaseField arg1, object arg2)

private void AvionicsConfigChanged(BaseField arg1, object arg2)
{
avionicsTechLevel = ProceduralAvionicsTechManager.GetMaxUnlockedTech(avionicsConfigName);

AvionicsConfigChanged();
ResetTo100();
}
Expand Down Expand Up @@ -282,6 +308,8 @@ private void UpdateCurrentConfig()
Log("Setting config to ", avionicsConfigName);
currentProceduralAvionicsConfig =
ProceduralAvionicsTechManager.GetProceduralAvionicsConfig(avionicsConfigName);
Log("Setting tech node to ", avionicsTechLevel);
currentProceduralAvionicsConfig.currentTechNodeName = avionicsTechLevel;
oldAvionicsConfigName = avionicsConfigName;
SetMinVolume(true);
}
Expand Down Expand Up @@ -343,12 +371,6 @@ private float GetResourceRateMultiplier()
#region private utiliy functions
private float GetControllableUtilizationPercentage()
{
/*
Log("Internal mass limit: ", GetInternalMassLimit());
Log("cachedVolume: ", cachedVolume);
Log("maxDensityOfAvionics: ", maxDensityOfAvionics);
Log("tonnageToMassRatio: ", tonnageToMassRatio);
*/
return GetInternalMassLimit() / (cachedVolume * maxDensityOfAvionics * tonnageToMassRatio * 2);
}

Expand Down Expand Up @@ -429,11 +451,17 @@ private void UpdateConfigSliders()
}

private float cachedVolume = float.MaxValue;
private BaseEventData cachedEventData = null;

[KSPEvent]
public void OnPartVolumeChanged(BaseEventData eventData)
{
Log("OnPartVolumeChanged called");
if (!started) {
Log("Not yet started, returning");
cachedEventData = eventData;
return;
}
try {
float volume = (float)eventData.Get<double>("newTotalVolume");
Log("volume changed to ", volume);
Expand All @@ -456,6 +484,8 @@ public void OnPartVolumeChanged(BaseEventData eventData)
private void SetInternalKSPFields()
{
Log("Setting internal KSP fields");
Log("avionics tech level: ", avionicsTechLevel);

tonnageToMassRatio = CurrentProceduralAvionicsTechNode.tonnageToMassRatio;
costPerControlledTon = CurrentProceduralAvionicsTechNode.costPerControlledTon;
enabledProceduralW = CurrentProceduralAvionicsTechNode.enabledProceduralW;
Expand Down Expand Up @@ -624,9 +654,6 @@ void WindowFunction(int windowID)
ProceduralAvionicsConfig currentlyDisplayedConfigs =
ProceduralAvionicsTechManager.GetProceduralAvionicsConfig(guiAvionicsConfigName);
foreach (ProceduralAvionicsTechNode techNode in currentlyDisplayedConfigs.TechNodes.Values) {
if (!ProceduralAvionicsTechManager.TechIsEnabled) {
continue;
}
if (!techNode.IsAvailable) {
continue;
}
Expand Down Expand Up @@ -668,6 +695,7 @@ void WindowFunction(int windowID)
if (switchedConfig) {
Log("Configuration window changed, updating part window");
UpdateConfigSliders();
avionicsTechLevel = techNode.name;
currentlyDisplayedConfigs.currentTechNodeName = techNode.name;
currentProceduralAvionicsConfig = currentlyDisplayedConfigs;
avionicsConfigName = guiAvionicsConfigName;
Expand Down
3 changes: 1 addition & 2 deletions Source/ProceduralAvionics/ProceduralAvionicsConfig.cs
Expand Up @@ -11,8 +11,7 @@ public class ProceduralAvionicsConfig : IConfigNode
[Persistent]
public string name;

[Persistent]
public string currentTechNodeName;
public string currentTechNodeName;

public ProceduralAvionicsTechNode CurrentTechNode
{
Expand Down
35 changes: 16 additions & 19 deletions Source/ProceduralAvionics/ProceduralAvionicsTechManager.cs
Expand Up @@ -54,11 +54,6 @@ internal static void SetUnlockedTechState(string param)
}
}
}

//now, we can set the defaults to the higest unlocked
foreach (string configName in unlockedTech.Keys) {
allTechNodes.Find(tn => tn.name == configName).currentTechNodeName = unlockedTech[configName];
}
}

#endregion
Expand All @@ -75,23 +70,24 @@ internal static void SetUnlockedTechState(string param)

public static List<string> GetAvailableConfigs()
{
ProceduralAvionicsUtils.Log("Getting Available configs, procedural avionics has ", allTechNodes.Count, " nodes loaded");
List<string> availableConfigs = new List<string>();
if (TechIsEnabled) {
foreach (var config in allTechNodes) {
if (config.TechNodes.Values.Where(node => node.IsAvailable).Count() > 0) {
availableConfigs.Add(config.name);
}
foreach (var config in allTechNodes) {
if (!TechIsEnabled || (config.TechNodes.Values.Where(node => node.IsAvailable).Count() > 0)) {
availableConfigs.Add(config.name);
}
}
else {
availableConfigs = allTechNodes.Select(item => item.name).ToList();
}
return availableConfigs;
}

public static List<string> GetPurchasedConfigs()
{
return unlockedTech.Keys.ToList();
if (TechIsEnabled) {
return unlockedTech.Keys.ToList();
}
else {
return allTechNodes.Select(node => node.name).ToList();
}
}

internal static object GetUnlockedTechState()
Expand All @@ -110,9 +106,7 @@ internal static object GetUnlockedTechState()
return state;
}

internal static void SetMaxUnlockedTech(
string avionicsConfigName,
string techNodeName)
internal static void SetMaxUnlockedTech( string avionicsConfigName, string techNodeName)
{
ProceduralAvionicsUtils.Log("Unlocking ", techNodeName, " for ", avionicsConfigName);
if (!unlockedTech.ContainsKey(avionicsConfigName)) {
Expand All @@ -127,6 +121,11 @@ internal static object GetUnlockedTechState()

internal static string GetMaxUnlockedTech(string avionicsConfigName)
{
if (!TechIsEnabled) {
var techNodesForConfig = allTechNodes.Where(config => config.name == avionicsConfigName).FirstOrDefault();
int maxCost = techNodesForConfig.TechNodes.Values.Max(node => node.unlockCost);
return techNodesForConfig.TechNodes.Values.Where(node => node.unlockCost == maxCost).FirstOrDefault().name;
}
if (unlockedTech.ContainsKey(avionicsConfigName)) {
return unlockedTech[avionicsConfigName];
}
Expand All @@ -137,7 +136,5 @@ public static ProceduralAvionicsConfig GetProceduralAvionicsConfig(string config
{
return allTechNodes.Where(config => config.name == configName).FirstOrDefault();
}


}
}
4 changes: 2 additions & 2 deletions Source/Properties/AssemblyInfo.cs
Expand Up @@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.54.0.0")]
[assembly: AssemblyFileVersion("0.54.0.0")]
[assembly: AssemblyVersion("0.55.0.0")]
[assembly: AssemblyFileVersion("0.55.0.0")]
2 changes: 1 addition & 1 deletion bin/makeversion
@@ -1,4 +1,4 @@
#!/usr/bin/perl -w
#!/usr/bin/env perl
use 5.010;
use strict;
use warnings;
Expand Down
2 changes: 1 addition & 1 deletion bin/yml2mm
@@ -1,4 +1,4 @@
#!/usr/bin/perl
#!/usr/bin/env perl
use 5.010;
use strict;
use warnings;
Expand Down

0 comments on commit 56f3e84

Please sign in to comment.