Ejemplo n.º 1
0
    private static void VesselTransferViewer(List<string> SelectedResources, SMAddon.XFERDirection xferMode, Vector2 ViewerScrollPosition)
    {
      float scrollX = WindowTransfer.Position.x + (xferMode == SMAddon.XFERDirection.SourceToTarget ? 20 : 320);
      float scrollY = WindowTransfer.Position.y + 30 - ViewerScrollPosition.y;
      string step = "begin";
      try
      {
        step = "begin button loop";
        foreach (ModDockedVessel modDockedVessel in SMAddon.smController.DockedVessels)
        {
          // Build the part button title...
          step = "vessel button title";
          string strDescription = GetResourceDescription(SelectedResources, modDockedVessel);

          // set the conditions for a button style change.
          int btnWidth = 265;
          if (!SMSettings.RealismMode)
            btnWidth = 180;

          // Set style based on viewer and toggled state.
          step = "Set style";
          GUIStyle style = GetVesselButtonStyle(xferMode, modDockedVessel);

          GUILayout.BeginHorizontal();

          // Now let's account for any target buttons already pressed. (sources and targets for resources cannot be the same)
          GUI.enabled = IsVesselSelectable(SelectedResources[0], xferMode, modDockedVessel);

          step = "Render part Buttons";
          if (GUILayout.Button(string.Format("{0}", strDescription), style, GUILayout.Width(btnWidth), GUILayout.Height(20)))
          {
            VesselButtonToggled(xferMode, modDockedVessel);
          }
          Rect rect = GUILayoutUtility.GetLastRect();
          if (Event.current.type == EventType.Repaint && rect.Contains(Event.current.mousePosition))
          {
            SMHighlighter.IsMouseOver = true;
            SMHighlighter.MouseOverMode = xferMode;
            SMHighlighter.MouseOverRect = new Rect(scrollX + rect.x, scrollY + rect.y, rect.width, rect.height);
            SMHighlighter.MouseOverpart = null;
            SMHighlighter.MouseOverparts = modDockedVessel.VesselParts;
          }

          // Reset Button enabling.
          GUI.enabled = true;

          //step = "Render dump/fill buttons";
          if (!SMSettings.RealismMode)
          {
            if (SelectedResources.Count > 1)
              GUI.enabled = (TransferResource.CalcResourceRemaining(modDockedVessel.VesselParts, SelectedResources[0]) > 0 || TransferResource.CalcResourceRemaining(modDockedVessel.VesselParts, SelectedResources[1]) > 0) ? true : false;
            else
              GUI.enabled = TransferResource.CalcResourceRemaining(modDockedVessel.VesselParts, SelectedResources[0]) > 0 ? true : false;
            var style1 = xferMode == SMAddon.XFERDirection.SourceToTarget ? SMStyle.ButtonSourceStyle : SMStyle.ButtonTargetStyle;
            if (GUILayout.Button(string.Format("{0}", "Dump"), style1, GUILayout.Width(45), GUILayout.Height(20)))
            {
              SMController.DumpPartsResource(modDockedVessel.VesselParts, SelectedResources[0]);
              if (SelectedResources.Count > 1)
                SMController.DumpPartsResource(modDockedVessel.VesselParts, SelectedResources[1]);
            }

            var style2 = xferMode == SMAddon.XFERDirection.SourceToTarget ? SMStyle.ButtonSourceStyle : SMStyle.ButtonTargetStyle;
            if (SelectedResources.Count > 1)
              GUI.enabled = TransferResource.CalcRemainingCapacity(modDockedVessel.VesselParts, SelectedResources[0]) > 0 || TransferResource.CalcRemainingCapacity(modDockedVessel.VesselParts, SelectedResources[0]) > 0 ? true : false;
            else
              GUI.enabled = TransferResource.CalcRemainingCapacity(modDockedVessel.VesselParts, SelectedResources[0]) > 0 ? true : false;
            if (GUILayout.Button(string.Format("{0}", "Fill"), style2, GUILayout.Width(30), GUILayout.Height(20)))
            {
              SMController.FillPartsResource(modDockedVessel.VesselParts, SelectedResources[0]);
              if (SelectedResources.Count > 1)
                SMController.FillPartsResource(modDockedVessel.VesselParts, SelectedResources[1]);
            }
            GUI.enabled = true;
          }
          GUILayout.EndHorizontal();
        }
      }
      catch (Exception ex)
      {
        if (!SMAddon.frameErrTripped)
        {
          Utilities.LogMessage("Error in Windowtransfer.VesselTransferViewer (" + xferMode.ToString() + ") at step:  " + step + ".  Error:  " + ex.ToString(), "Error", true);
          SMAddon.frameErrTripped = true;
        }
      }
    }
Ejemplo n.º 2
0
 private static void VesselButtonToggled(SMAddon.XFERDirection xferMode, ModDockedVessel modVessel)
 {
   string step = "Vessel Button Toggled";
   try
   {
     if (xferMode == SMAddon.XFERDirection.SourceToTarget)
     {
       // Now lets update the list...
       if (SMAddon.smController.SelectedVesselsSource.Contains(modVessel))
         SMAddon.smController.SelectedVesselsSource.Remove(modVessel);
       else
         SMAddon.smController.SelectedVesselsSource.Add(modVessel);
       SMAddon.smController.SelectedPartsSource = SMAddon.smController.GetSelectedVesselsParts(SMAddon.smController.SelectedVesselsSource, SMAddon.smController.SelectedResources);
     }
     else
     {
       if (SMAddon.smController.SelectedVesselsTarget.Contains(modVessel))
         SMAddon.smController.SelectedVesselsTarget.Remove(modVessel);
       else
         SMAddon.smController.SelectedVesselsTarget.Add(modVessel);
       SMAddon.smController.SelectedPartsTarget = SMAddon.smController.GetSelectedVesselsParts(SMAddon.smController.SelectedVesselsTarget, SMAddon.smController.SelectedResources);
     }
     WindowManifest.ReconcileSelectedXferParts(SMAddon.smController.SelectedResources);
     step = "Set Xfer amounts?";
     foreach (TransferResource modResource in SMAddon.smController.ResourcesToXfer)
     {
       modResource.srcXferAmount = TransferResource.CalcMaxResourceXferAmt(SMAddon.smController.SelectedPartsSource, SMAddon.smController.SelectedPartsTarget, modResource.ResourceName);
       modResource.tgtXferAmount = TransferResource.CalcMaxResourceXferAmt(SMAddon.smController.SelectedPartsTarget, SMAddon.smController.SelectedPartsSource, modResource.ResourceName);
     }
   }
   catch (Exception ex)
   {
     if (!SMAddon.frameErrTripped)
     {
       Utilities.LogMessage("Error in WindowTransfer.VesselButtonToggled (" + xferMode.ToString() + ") at step:  " + step + ".  Error:  " + ex.ToString(), "Error", true);
       SMAddon.frameErrTripped = true;
     }
   }
 }
Ejemplo n.º 3
0
    private static void PartsTransferViewer(List<string> SelectedResources, SMAddon.XFERDirection xferMode, Vector2 ViewerScrollPosition)
    {
      float scrollX = WindowTransfer.Position.x + (xferMode == SMAddon.XFERDirection.SourceToTarget ? 20 : 320);
      float scrollY = WindowTransfer.Position.y + 30 - ViewerScrollPosition.y;
      string step = "begin";
      try
      {
        step = "begin button loop";
        foreach (Part part in SMAddon.smController.SelectedResourcesParts)
        {
          // Build the part button title...
          step = "part button title";
          string strDescription = GetResourceDescription(SelectedResources, part);

          // set the conditions for a button style change.
          int btnWidth = 270;
          if (!SMSettings.RealismMode && !SelectedResources.Contains("Science"))
            btnWidth = 190;

          // Set style based on viewer and toggled state.
          step = "Set style";
          GUIStyle style = GetPartButtonStyle(xferMode, part);

          GUILayout.BeginHorizontal();

          // Now let's account for any target buttons already pressed. (sources and targets for resources cannot be the same)
          GUI.enabled = IsPartSelectable(SelectedResources[0], xferMode, part);

          step = "Render part Buttons";
          if (GUILayout.Button(string.Format("{0}", strDescription), style, GUILayout.Width(btnWidth), GUILayout.Height(20)))
          {
            PartButtonToggled(xferMode, part);
          }
          Rect rect = GUILayoutUtility.GetLastRect();
          if (Event.current.type == EventType.Repaint && rect.Contains(Event.current.mousePosition))
          {
            SMHighlighter.IsMouseOver = true;
            SMHighlighter.MouseOverMode = xferMode;
            SMHighlighter.MouseOverRect = new Rect(scrollX + rect.x, scrollY + rect.y, rect.width, rect.height);
            SMHighlighter.MouseOverpart = part;
          }

          // Reset Button enabling.
          GUI.enabled = true;

          step = "Render dump/fill buttons";
          if (!SMSettings.RealismMode && SelectedResources[0] != "Science")
          {

            if (SelectedResources[0] == "Crew")
              GUI.enabled = part.protoModuleCrew.Count > 0;
            else if (SelectedResources.Count > 1)
              GUI.enabled = (part.Resources[SelectedResources[0]].amount > 0 || part.Resources[SelectedResources[1]].amount > 0) ? true : false;
            else
              GUI.enabled = part.Resources[SelectedResources[0]].amount > 0 ? true : false;
            var style1 = xferMode == SMAddon.XFERDirection.SourceToTarget ? SMStyle.ButtonSourceStyle : SMStyle.ButtonTargetStyle;
            if (GUILayout.Button(string.Format("{0}", "Dump"), style1, GUILayout.Width(45), GUILayout.Height(20)))
            {
              if (SelectedResources[0] == "Crew")
                SMController.DumpPartCrew(part);
              else
              {
                SMController.DumpPartResource(part, SelectedResources[0]);
                if (SelectedResources.Count > 1)
                  SMController.DumpPartResource(part, SelectedResources[1]);
              }
            }

            var style2 = xferMode == SMAddon.XFERDirection.SourceToTarget ? SMStyle.ButtonSourceStyle : SMStyle.ButtonTargetStyle;
            if (SelectedResources[0] == "Crew")
              GUI.enabled = part.protoModuleCrew.Count < part.CrewCapacity;
            else if (SelectedResources.Count > 1)
              GUI.enabled = part.Resources[SelectedResources[0]].amount < part.Resources[SelectedResources[0]].maxAmount || part.Resources[SelectedResources[1]].amount < part.Resources[SelectedResources[1]].maxAmount ? true : false;
            else
              GUI.enabled = part.Resources[SelectedResources[0]].amount < part.Resources[SelectedResources[0]].maxAmount ? true : false;
            if (GUILayout.Button(string.Format("{0}", "Fill"), style2, GUILayout.Width(30), GUILayout.Height(20)))
            {
              if (SelectedResources[0] == "Crew")
                SMController.FillPartCrew(part);
              SMController.FillPartResource(part, SelectedResources[0]);
              if (SelectedResources.Count > 1)
                SMController.FillPartResource(part, SelectedResources[1]);
            }
            GUI.enabled = true;
          }
          GUILayout.EndHorizontal();
        }
      }
      catch (Exception ex)
      {
        if (!SMAddon.frameErrTripped)
        {
          Utilities.LogMessage("Error in Windowtransfer.PartsTransferViewer (" + xferMode.ToString() + ") at step:  " + step + ".  Error:  " + ex.ToString(), "Error", true);
          SMAddon.frameErrTripped = true;
        }
      }
    }
Ejemplo n.º 4
0
 private static void PartButtonToggled(SMAddon.XFERDirection xferMode, Part part)
 {
   string step = "Part Button Toggled";
   try
   {
     if (!SMAddon.smController.CrewTransfer.CrewXferActive && !TransferResource.ResourceXferActive)
     {
       if (xferMode == SMAddon.XFERDirection.SourceToTarget)
       {
         // Now lets update the list...
         if (SMAddon.smController.SelectedPartsSource.Contains(part))
         {
           SMAddon.smController.SelectedPartsSource.Remove(part);
         }
         else
         {
           if (SMAddon.smController.SelectedResources.Contains("Crew") || SMAddon.smController.SelectedResources.Contains("Science"))
             SMAddon.smController.SelectedPartsSource.Clear();
           SMAddon.smController.SelectedPartsSource.Add(part);
         }
         if (SMAddon.smController.SelectedResources.Contains("Crew") && SMSettings.EnableCLS)
         {
           SMAddon.UpdateCLSSpaces();
         }
         SMAddon.smController.SelectedModuleSource = null;
         WindowTransfer._ScienceModulesSource = null;
       }
       else
       {
         if (SMAddon.smController.SelectedPartsTarget.Contains(part))
         {
           SMAddon.smController.SelectedPartsTarget.Remove(part);
         }
         else
         {
           if (SMAddon.smController.SelectedResources.Contains("Crew") || SMAddon.smController.SelectedResources.Contains("Science"))
             SMAddon.smController.SelectedPartsTarget.Clear();
           SMAddon.smController.SelectedPartsTarget.Add(part);
         }
         SMAddon.smController.SelectedModuleTarget = null;
       }
       step = "Set Xfer amounts?";
       if (!SMAddon.smController.SelectedResources.Contains("Crew") && !SMAddon.smController.SelectedResources.Contains("Science"))
       {
         step = "Set Xfer amounts = yes";
         foreach (TransferResource modResource in SMAddon.smController.ResourcesToXfer)
         {
           modResource.srcXferAmount = TransferResource.CalcMaxResourceXferAmt(SMAddon.smController.SelectedPartsSource, SMAddon.smController.SelectedPartsTarget, modResource.ResourceName);
           modResource.tgtXferAmount = TransferResource.CalcMaxResourceXferAmt(SMAddon.smController.SelectedPartsTarget, SMAddon.smController.SelectedPartsSource, modResource.ResourceName);
         }
       }
     }
   }
   catch (Exception ex)
   {
     if (!SMAddon.frameErrTripped)
     {
       Utilities.LogMessage("Error in WindowTransfer.PartButtonToggled (" + xferMode.ToString() + ") at step:  " + step + ".  Error:  " + ex.ToString(), "Error", true);
       SMAddon.frameErrTripped = true;
     }
   }
 }