From b9223f7a7bf4fbe8346c6193c951975ead14370d Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sat, 21 Jan 2023 16:58:11 -0700 Subject: [PATCH 01/28] Implement Supercharger for CV --- saw/src/main/java/saw/gui/frmVee.java | 22 +++++++++++++-- saw/src/main/java/saw/gui/frmVeeWide.java | 27 ++++++++++++++++--- .../src/main/java/components/CVLoadout.java | 19 +++++++++---- .../main/java/components/Supercharger.java | 2 +- 4 files changed, 58 insertions(+), 12 deletions(-) diff --git a/saw/src/main/java/saw/gui/frmVee.java b/saw/src/main/java/saw/gui/frmVee.java index 824bfd6b..ca7bc0b4 100644 --- a/saw/src/main/java/saw/gui/frmVee.java +++ b/saw/src/main/java/saw/gui/frmVee.java @@ -5774,6 +5774,7 @@ private void cmbMotiveTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN SetWeaponChoosers(); RefreshSummary(); RefreshInfoPane(); + RefreshEquipment(); }//GEN-LAST:event_cmbMotiveTypeActionPerformed private void ShowInfoOn( abPlaceable p ) { @@ -6020,7 +6021,24 @@ private void ShowInfoOn( abPlaceable p ) { } private void chkSuperchargerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkSuperchargerActionPerformed - + if( CurVee.GetLoadout().HasSupercharger() == chkSupercharger.isSelected() ) { + return; + } + try { + CurVee.GetLoadout().SetSupercharger( chkSupercharger.isSelected()); + } catch( Exception e ) { + Media.Messager( this, e.getMessage() ); + try { + CurVee.GetLoadout().SetSupercharger( false ); + } catch( Exception x ) { + // how the hell did we get an error removing it? + Media.Messager( this, x.getMessage() ); + } + chkSupercharger.setSelected( false ); + } + // now refresh the information panes + RefreshSummary(); + RefreshInfoPane(); }//GEN-LAST:event_chkSuperchargerActionPerformed private void chkUseTCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkUseTCActionPerformed @@ -7060,7 +7078,7 @@ private void RefreshEquipment() { //chkBSPFD.setEnabled( false ); //chkBSPFD.setSelected( false ); } - if( CommonTools.IsAllowed( CurVee.GetLoadout().GetSupercharger().GetAvailability(), CurVee ) ) { + if( CommonTools.IsAllowed( CurVee.GetLoadout().GetSupercharger().GetAvailability(), CurVee ) && !CurVee.IsVTOL() ) { chkSupercharger.setEnabled( true ); } else { chkSupercharger.setEnabled( false ); diff --git a/saw/src/main/java/saw/gui/frmVeeWide.java b/saw/src/main/java/saw/gui/frmVeeWide.java index 37ff0d60..fa58a075 100644 --- a/saw/src/main/java/saw/gui/frmVeeWide.java +++ b/saw/src/main/java/saw/gui/frmVeeWide.java @@ -5565,7 +5565,7 @@ private void BuildChassisSelector() } } - private void BuildExpEquipmentSelector() { + private void BuildExpEquipmentSelector() { JCheckBox[] ExpEquipmentCheckboxes = { chkArmoredMotive, chkSupercharger, chkCommandConsole, @@ -5574,6 +5574,7 @@ private void BuildExpEquipmentSelector() { chkEscapePod, chkSponsonTurret }; if (cmbRulesLevel.getSelectedIndex() > 1) { + if (CurVee.CanUseSponson()) chkSponsonTurret.setEnabled(true); } else @@ -6393,7 +6394,7 @@ private void RefreshEquipment() { //chkBSPFD.setEnabled( false ); //chkBSPFD.setSelected( false ); } - if( CommonTools.IsAllowed( CurVee.GetLoadout().GetSupercharger().GetAvailability(), CurVee ) ) { + if( CommonTools.IsAllowed( CurVee.GetLoadout().GetSupercharger().GetAvailability(), CurVee ) && !CurVee.IsVTOL() ) { chkSupercharger.setEnabled( true ); } else { chkSupercharger.setEnabled( false ); @@ -8907,8 +8908,25 @@ private void chkFractionalActionPerformed(java.awt.event.ActionEvent evt) {//GEN }//GEN-LAST:event_chkFractionalActionPerformed private void chkSuperchargerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkSuperchargerActionPerformed - - }//GEN-LAST:event_chkSuperchargerActionPerformed + if( CurVee.GetLoadout().HasSupercharger() == chkSupercharger.isSelected() ) { + return; + } + try { + CurVee.GetLoadout().SetSupercharger( chkSupercharger.isSelected()); + } catch( Exception e ) { + Media.Messager( this, e.getMessage() ); + try { + CurVee.GetLoadout().SetSupercharger( false ); + } catch( Exception x ) { + // how the hell did we get an error removing it? + Media.Messager( this, x.getMessage() ); + } + chkSupercharger.setSelected( false ); + } + // now refresh the information panes + RefreshSummary(); + RefreshInfoPane(); + } private void chkEnviroSealingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkEnviroSealingActionPerformed CurVee.SetEnvironmentalSealing(chkEnviroSealing.isSelected()); @@ -9298,6 +9316,7 @@ private void cmbMotiveTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN RecalcArmorLocations(); RefreshSummary(); RefreshInfoPane(); + RefreshEquipment(); }//GEN-LAST:event_cmbMotiveTypeActionPerformed private void cmbProductionEraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbProductionEraActionPerformed diff --git a/sswlib/src/main/java/components/CVLoadout.java b/sswlib/src/main/java/components/CVLoadout.java index ca39b21b..33a1f9d5 100644 --- a/sswlib/src/main/java/components/CVLoadout.java +++ b/sswlib/src/main/java/components/CVLoadout.java @@ -311,7 +311,7 @@ public void AddTo(abPlaceable p, int Loc) throws Exception { //Ammo only ever goes in the Body if ( p instanceof Ammunition ) Loc = LocationIndex.CV_LOC_BODY; //Quite a bit of equipment can only go in the body - if ( p instanceof Equipment ) { + if ( p instanceof Equipment && Loc != LocationIndex.CV_LOC_BODY) { if ( !((Equipment)p).CanAllocCVFront() && !((Equipment)p).CanAllocCVSide() && !((Equipment)p).CanAllocCVRear() && !((Equipment)p).CanAllocCVTurret() ) Loc = LocationIndex.CV_LOC_BODY; // Check max items allowed for that location @@ -632,10 +632,10 @@ public void FlushIllegal() { //Owner.CheckArmoredComponents(); // see if there's anything to flush out - if( GetNonCore().size() <= 0 ) { return; } + if( NonCore.isEmpty() ) { return; } - for( int i = GetNonCore().size() - 1; i >= 0; i-- ) { - p = (abPlaceable) GetNonCore().get( i ); + for( int i = NonCore.size() - 1; i >= 0; i-- ) { + p = (abPlaceable) NonCore.get( i ); AC = p.GetAvailability(); try { CheckExclusions( p ); @@ -645,7 +645,7 @@ public void FlushIllegal() { } catch( Exception e ) { Remove( p ); } - if( GetNonCore().contains( p ) ) { + if( NonCore.contains( p ) ) { if( Rules < AvailableCode.RULES_EXPERIMENTAL ) { p.ArmorComponent( false ); } @@ -1026,10 +1026,19 @@ public void CheckTC() { public void SetSupercharger(boolean b) throws Exception { UsingSupercharger = b; + try { + AddTo(SCharger, LocationIndex.CV_LOC_BODY); + } catch (Exception ex) { + System.err.println(ex.getMessage()); + } + + AddMechModifier( SCharger.GetMechModifier() ); Owner.SetChanged( true ); } public void SetSupercharger(Supercharger s) { + // this sets the loadout's supercharger to a different one. + // Used for cloning purposes only! SCharger = s; Owner.SetChanged( true ); } diff --git a/sswlib/src/main/java/components/Supercharger.java b/sswlib/src/main/java/components/Supercharger.java index 2e2b088d..44245dba 100644 --- a/sswlib/src/main/java/components/Supercharger.java +++ b/sswlib/src/main/java/components/Supercharger.java @@ -39,7 +39,7 @@ public Supercharger( ifLoadout l ) { AC.SetCLCodes( 'C', 'X', 'F', 'F', 'D' ); AC.SetCLDates( 0, 0, false, 3078, 0, 0, false, false ); AC.SetCLFactions( "", "", "ES", "" ); - AC.SetRulesLevels( AvailableCode.RULES_EXPERIMENTAL, AvailableCode.RULES_EXPERIMENTAL, AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_UNALLOWED ); + AC.SetRulesLevels( AvailableCode.RULES_EXPERIMENTAL, AvailableCode.RULES_EXPERIMENTAL, AvailableCode.RULES_EXPERIMENTAL, AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_UNALLOWED ); Owner = (ifLoadout)l; AddMechModifier( new MechModifier( 0, 0, 0, 0.5, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, true, false ) ); } From d517dad3d6b9c2e87b1a851827508f62689cfd28 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sat, 21 Jan 2023 17:50:04 -0700 Subject: [PATCH 02/28] Remove when Unchecked Instead of adding another one :/ --- saw/src/main/java/saw/gui/frmVee.java | 2 +- saw/src/main/java/saw/gui/frmVeeWide.java | 2 +- .../src/main/java/components/CVLoadout.java | 20 +++++++++++++------ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/saw/src/main/java/saw/gui/frmVee.java b/saw/src/main/java/saw/gui/frmVee.java index ca7bc0b4..c784155f 100644 --- a/saw/src/main/java/saw/gui/frmVee.java +++ b/saw/src/main/java/saw/gui/frmVee.java @@ -6036,7 +6036,7 @@ private void chkSuperchargerActionPerformed(java.awt.event.ActionEvent evt) {//G } chkSupercharger.setSelected( false ); } - // now refresh the information panes + RefreshSelectedEquipment(); RefreshSummary(); RefreshInfoPane(); }//GEN-LAST:event_chkSuperchargerActionPerformed diff --git a/saw/src/main/java/saw/gui/frmVeeWide.java b/saw/src/main/java/saw/gui/frmVeeWide.java index fa58a075..a8fd67ce 100644 --- a/saw/src/main/java/saw/gui/frmVeeWide.java +++ b/saw/src/main/java/saw/gui/frmVeeWide.java @@ -8923,7 +8923,7 @@ private void chkSuperchargerActionPerformed(java.awt.event.ActionEvent evt) {//G } chkSupercharger.setSelected( false ); } - // now refresh the information panes + RefreshSelectedEquipment(); RefreshSummary(); RefreshInfoPane(); } diff --git a/sswlib/src/main/java/components/CVLoadout.java b/sswlib/src/main/java/components/CVLoadout.java index 33a1f9d5..7ee673f8 100644 --- a/sswlib/src/main/java/components/CVLoadout.java +++ b/sswlib/src/main/java/components/CVLoadout.java @@ -1026,13 +1026,21 @@ public void CheckTC() { public void SetSupercharger(boolean b) throws Exception { UsingSupercharger = b; - try { - AddTo(SCharger, LocationIndex.CV_LOC_BODY); - } catch (Exception ex) { - System.err.println(ex.getMessage()); - } - AddMechModifier( SCharger.GetMechModifier() ); + if( !UsingSupercharger ) { + Remove( SCharger ); + RemoveMechMod(SCharger.GetMechModifier()); + return; + } else { + + try { + AddTo(SCharger, LocationIndex.CV_LOC_BODY); + } catch (Exception ex) { + System.err.println(ex.getMessage()); + } + + AddMechModifier(SCharger.GetMechModifier()); + } Owner.SetChanged( true ); } From a225a4cec34d652e921ba7507045463c83182cae Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 22 Jan 2023 17:01:41 -0700 Subject: [PATCH 03/28] Fix Mini Rate Needed to add a boolean rather then setting the modifier to 0. --- sswlib/src/main/java/Print/PrintVehicle.java | 12 +++++++----- sswlib/src/main/java/Print/preview/dlgPreview.java | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/sswlib/src/main/java/Print/PrintVehicle.java b/sswlib/src/main/java/Print/PrintVehicle.java index 19ab40b2..4123402c 100644 --- a/sswlib/src/main/java/Print/PrintVehicle.java +++ b/sswlib/src/main/java/Print/PrintVehicle.java @@ -56,13 +56,14 @@ public class PrintVehicle implements Printable { TRO = false, printMech = false, printLogo = false, - makeAmmoGeneric = false; + makeAmmoGeneric = false, + UseMiniRate = false; private String PilotName = "", GroupName = "", currentAmmoFormat = ""; private int Piloting = 5, Gunnery = 4, - MiniConvRate = 0; + MiniConvRate = 1; private double BV = 0.0; private ifPrintPoints points = null; private Color Black = new Color( 0, 0, 0 ), @@ -110,8 +111,9 @@ public void SetOptions( boolean charts, boolean PrintP, double UseBV ) { PrintPilot = PrintP; } - public void SetMiniConversion( int conv ) { + public void SetMiniConversion( int conv, Boolean useMini ) { MiniConvRate = conv; + UseMiniRate = useMini; } public void setMechwarrior(String name) { @@ -168,7 +170,7 @@ public void setTRO(boolean TRO) { this.TRO = TRO; setCanon(true); setCharts(false); - SetMiniConversion(1); + SetMiniConversion(1, false); setPrintPilot(false); currentAmmoFormat = Prefs.get( "AmmoNamePrintFormat", "" ); Prefs.put( "AmmoNamePrintFormat", "Ammo (%P) %L" ); @@ -297,7 +299,7 @@ private void DrawMechData( Graphics2D graphics ) { // } //Coverup the (hexes) above the ranges if we are not using traditional measurements - if (MiniConvRate > 0) + if (UseMiniRate) { graphics.setColor(Color.white); graphics.fillRect(p[6].x-5, p[6].y-28, 30, 10); diff --git a/sswlib/src/main/java/Print/preview/dlgPreview.java b/sswlib/src/main/java/Print/preview/dlgPreview.java index ac84db43..32309889 100644 --- a/sswlib/src/main/java/Print/preview/dlgPreview.java +++ b/sswlib/src/main/java/Print/preview/dlgPreview.java @@ -479,7 +479,7 @@ private void PrinterSetup() { pv.setPrintPilot(chkPrintGroup.isSelected()); if ( cmbPaperSize.getSelectedIndex() == 2 ) pv.setA4(); if ( chkPrintGroup.isSelected() ) pv.setGroupName( g.getName() + " [" + g.getForce().ForceName + "]" ); - if ( chkUseHexConversion.isSelected() ) pv.SetMiniConversion(cmbHexConvFactor.getSelectedIndex()+1); + if ( chkUseHexConversion.isSelected() ) {pv.SetMiniConversion(cmbHexConvFactor.getSelectedIndex()+1, true);} else {pv.SetMiniConversion(1, false);}; if ( chkLogo.isSelected() ) pv.setLogoImage(imageTracker.getImage(g.getLogo())); if ( cmbRSType.getSelectedIndex() == 1 ) pv.setTRO(true); printer.Append( pageSize, pv); From 548c8e03f7a6a2cc755cf154d4892d95f45e59f8 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 22 Jan 2023 18:06:59 -0700 Subject: [PATCH 04/28] Supercharger Adjustments --- .../src/main/java/components/CVLoadout.java | 71 +++++++++++++++---- .../main/java/components/CombatVehicle.java | 19 ++++- .../main/java/filehandlers/CVTXTWriter.java | 21 +++--- .../java/utilities/CVCostBVBreakdown.java | 6 +- 4 files changed, 89 insertions(+), 28 deletions(-) diff --git a/sswlib/src/main/java/components/CVLoadout.java b/sswlib/src/main/java/components/CVLoadout.java index 7ee673f8..db990d78 100644 --- a/sswlib/src/main/java/components/CVLoadout.java +++ b/sswlib/src/main/java/components/CVLoadout.java @@ -725,7 +725,51 @@ public void AutoAllocate(EquipmentCollection e) { } public boolean IsAllocated(abPlaceable p) { - throw new UnsupportedOperationException("Not supported yet."); + // checks to see if the specified item is allocated in the loadout + + if( FrontItems.contains(p)) { + // found it. + return true; + } + if( LeftItems.contains(p) ) { + // found it. + return true; + } + if( RightItems.contains(p) ) { + // found it. + return true; + } + if( BodyItems.contains(p) ) { + // found it. + return true; + } + if( RearItems.contains(p) ) { + // found it. + return true; + } + if( Turret1Items.contains(p) ) { + // found it. + return true; + } + if( Turret2Items.contains(p) ) { + // found it. + return true; + } + if( SponsonTurretLeftItems.contains(p) ) { + // found it. + return true; + } + if( SponsonTurretRightItems.contains(p) ) { + // found it. + return true; + } + if( RotorItems.contains(p) ) { + // found it. + return true; + } + + // couldn't find it + return false; } public int UnplacedItems() { @@ -1025,22 +1069,17 @@ public void CheckTC() { } public void SetSupercharger(boolean b) throws Exception { - UsingSupercharger = b; - - if( !UsingSupercharger ) { + if( b == false ) { Remove( SCharger ); - RemoveMechMod(SCharger.GetMechModifier()); return; - } else { - - try { - AddTo(SCharger, LocationIndex.CV_LOC_BODY); - } catch (Exception ex) { - System.err.println(ex.getMessage()); - } + } - AddMechModifier(SCharger.GetMechModifier()); + try { + AddTo(SCharger, LocationIndex.CV_LOC_BODY); + } catch (Exception ex) { + System.err.println(ex.getMessage()); } + AddMechModifier(SCharger.GetMechModifier()); Owner.SetChanged( true ); } @@ -1052,7 +1091,11 @@ public void SetSupercharger(Supercharger s) { } public boolean HasSupercharger() { - return UsingSupercharger; + if( IsAllocated( SCharger ) ) { + return true; + } else { + return false; + } } public Supercharger GetSupercharger() { diff --git a/sswlib/src/main/java/components/CombatVehicle.java b/sswlib/src/main/java/components/CombatVehicle.java index 6d805374..f4aba987 100644 --- a/sswlib/src/main/java/components/CombatVehicle.java +++ b/sswlib/src/main/java/components/CombatVehicle.java @@ -1246,6 +1246,12 @@ public int getCruiseMP() { return CruiseMP; } + public int GetAdjustedCruiseMP( boolean BV, boolean MASCTSM ) { + int retval = CruiseMP; + retval += GetTotalModifiers( BV, MASCTSM ).WalkingAdder(); + if( retval < 0 ) { return 0; } + return retval; + } public int getMaxCruiseMP() { if( CurEngine.IsPrimitive() ) { return (int) Math.floor( ( ( 400.0 + (double)CurConfig.GetSuspensionFactor(Tonnage) ) / (double)Tonnage ) / 1.2 ); @@ -1564,7 +1570,18 @@ public int getFlankMP() { public int getFlankMP( int MiniMult ) { return (int) Math.floor( ( getCruiseMP() * MiniMult ) * 1.5 + 0.5 ); } - + + public int GetAdjustedFlankMP( boolean BV, boolean MASCTSM ) { + // this had to become more complicated because of the peculiar + // idiosyncracies of the BV system. Stupid. + MechModifier m = GetTotalModifiers( BV, MASCTSM ); + int WalkValue = GetAdjustedCruiseMP( BV, MASCTSM ); + double Multiplier = 1.5 + m.RunningMultiplier(); + int retval = (int) Math.floor( WalkValue * Multiplier + 0.5 ) + m.RunningAdder(); + if( retval < 0 ) { return 0; } + return retval; + } + public void SetRulesLevel( int r ) { if( Omni ) { CurLoadout.SetRulesLevel( r ); diff --git a/sswlib/src/main/java/filehandlers/CVTXTWriter.java b/sswlib/src/main/java/filehandlers/CVTXTWriter.java index 87463821..8dcdf3c3 100644 --- a/sswlib/src/main/java/filehandlers/CVTXTWriter.java +++ b/sswlib/src/main/java/filehandlers/CVTXTWriter.java @@ -111,12 +111,12 @@ public void WriteTXT( String filename ) throws IOException { FR.close(); } - public String GetChatStats( Mech m ) { + public String GetChatStats( CombatVehicle m ) { // a fun convenience routine for those who talk in chat or forums. String retval = ""; // pondering some sort of GetChatName() for abplaceables. - retval += m.GetTonnage() + " tons, " + m.GetAdjustedWalkingMP( false, true ) + "/" + m.GetAdjustedRunningMP( false, true ) + "/" + m.GetAdjustedJumpingMP( false ); + retval += m.GetTonnage() + " tons, " + m.GetAdjustedCruiseMP( false, true ) + "/" + m.GetAdjustedFlankMP( false, true ); //+ "/" + m.GetAdjustedJumpingMP( false ); return retval; } @@ -150,8 +150,8 @@ public String GetTextExport() { //retval += "Chassis: " + CurVee.GetChassisModel() + " " + CurVee.GetIntStruc().CritName() + NL; retval += "Power Plant: " + CurVee.GetEngineManufacturer() + " " + CurVee.GetEngine().GetRating() + " " + CurVee.GetEngine() + NL; - retval += "Cruise Speed: " + CommonTools.FormatSpeed( CurVee.getCruiseMP() * 10.8 ) + " km/h" + NL; - retval += "Flanking Speed: " + CommonTools.FormatSpeed( CurVee.getFlankMP() * 10.8 ) + " km/h" + NL; + retval += "Cruise Speed: " + CommonTools.FormatSpeed( CurVee.GetAdjustedCruiseMP(false, true) * 10.8 ) + " km/h" + NL; + retval += "Flanking Speed: " + CommonTools.FormatSpeed( CurVee.GetAdjustedFlankMP(false, true) * 10.8 ) + " km/h" + NL; if ( CurVee.GetJumpJets().GetNumJJ() > 0 ) { retval += "Jump Jets: " + CurVee.GetJJModel() + NL; retval += " Jump Capacity: " + GetJumpJetDistanceLine() + NL; @@ -214,8 +214,8 @@ public String GetMiniTextExport() { retval += "--------------------------------------------------------------------------------" + NL; retval += String.format( "Internal Structure: %1$-28s %2$3s points %3" + tformat, CurVee.GetIntStruc().CritName(), CurVee.GetIntStruc().GetTotalPoints(), CurVee.GetIntStruc().GetTonnage() ) + NL; retval += String.format( "Engine: %1$-28s %2$3s %3" + tformat, FileCommon.GetExportName( CurVee, CurVee.GetEngine() ), CurVee.GetEngine().GetRating(), CurVee.GetEngine().GetTonnage() ) + NL; - retval += " Cruise MP: " + CurVee.getCruiseMP() + NL; - retval += " Flank MP: " + CurVee.getFlankMP() + NL; + retval += " Cruise MP: " + CurVee.GetAdjustedCruiseMP(false, true) + NL; + retval += " Flank MP: " + CurVee.GetAdjustedFlankMP(false, true) + NL; if( CurVee.GetJumpJets().GetNumJJ() > 0 ) { retval += " Jumping MP: " + GetJumpingMPLine() + " " + GetJumpJetTypeLine() + NL; retval += String.format( " %1$-68s %2$6.2f", "Jump Jet Locations: " + FileCommon.GetJumpJetLocations( CurVee ), CurVee.GetJumpJets().GetTonnage() ) + NL; @@ -488,7 +488,8 @@ private String BuildEquipmentBlock() { //v.add( CurVee.GetTC() ); } if( CurVee.GetLoadout().HasSupercharger() ) { - v.add( CurVee.GetLoadout().GetSupercharger() ); + //don't add as we already have it in the Body + //v.add( CurVee.GetLoadout().GetSupercharger() ); } if( v.size() < 1 ) { return ""; } @@ -644,9 +645,9 @@ private String BuildOmniLoadout() { //don't add as we already have it in the Body of the Vehicle //v.add( CurVee.GetTC() ); } - if( CurVee.GetLoadout().HasSupercharger() ) { - v.add( CurVee.GetLoadout().GetSupercharger() ); - } +// if( CurVee.GetLoadout().HasSupercharger() ) { +// v.add( CurVee.GetLoadout().GetSupercharger() ); +// } // now sort the equipment by location v = FileCommon.SortEquipmentForStats( CurVee, v ); diff --git a/sswlib/src/main/java/utilities/CVCostBVBreakdown.java b/sswlib/src/main/java/utilities/CVCostBVBreakdown.java index 3b7243bd..c65a266a 100644 --- a/sswlib/src/main/java/utilities/CVCostBVBreakdown.java +++ b/sswlib/src/main/java/utilities/CVCostBVBreakdown.java @@ -142,7 +142,7 @@ private String GetEquipmentCostLines() { retval += String.format( "%1$-46s %2$,6.0f %3$,6.0f %4$,13.2f", CurUnit.GetBlueShield().CritName(), CurUnit.GetBlueShield().GetDefensiveBV(), CurUnit.GetBlueShield().GetOffensiveBV(), CurUnit.GetBlueShield().GetCost() ) + NL; } if( CurUnit.GetLoadout().HasSupercharger() ) { - retval += String.format( "%1$-46s %2$,6.0f %3$,6.0f %4$,13.2f", CurUnit.GetLoadout().GetSupercharger().CritName(), CurUnit.GetLoadout().GetSupercharger().GetDefensiveBV(), CurUnit.GetLoadout().GetSupercharger().GetOffensiveBV(), CurUnit.GetLoadout().GetSupercharger().GetCost() ) + NL; + //retval += String.format( "%1$-46s %2$,6.0f %3$,6.0f %4$,13.2f", CurUnit.GetLoadout().GetSupercharger().CritName(), CurUnit.GetLoadout().GetSupercharger().GetDefensiveBV(), CurUnit.GetLoadout().GetSupercharger().GetOffensiveBV(), CurUnit.GetLoadout().GetSupercharger().GetCost() ) + NL; } return retval; } @@ -249,8 +249,8 @@ public String PrintOffensiveFactorCalculations() { String retval = ""; double temp; - temp = (double) (CurUnit.getFlankMP() + ( Math.floor( 0 * 0.5 + 0.5 ) ) - 5.0 ); - retval += " Adjusted Flank MP (" + CurUnit.getFlankMP( ) + ") + ( Adjusted Jumping MP (" + 0 + ") / 2 ) - 5 = " + String.format( "%1$,.2f", CurUnit.getFlankMP() + ( Math.floor( 0 * 0.5 + 0.5 ) ) - 5.0 ) + NL; + temp = (double) (CurUnit.GetAdjustedFlankMP(false, true) + ( Math.floor( 0 * 0.5 + 0.5 ) ) - 5.0 ); + retval += " Adjusted Flank MP (" + CurUnit.GetAdjustedFlankMP(false, true ) + ") + ( Adjusted Jumping MP (" + 0 + ") / 2 ) - 5 = " + String.format( "%1$,.2f", CurUnit.GetAdjustedFlankMP(false, true) + ( Math.floor( 0 * 0.5 + 0.5 ) ) - 5.0 ) + NL; retval += " " + String.format( "%1$,.2f", temp ) + " / 10 + 1 = " + String.format( "%1$.3f", ( temp * 0.1 + 1.0 ) ) + NL; temp = temp * 0.1 + 1.0; retval += " " + String.format( "%1$,.2f", temp ) + " ^ 1.2 = " + (double) Math.floor( ( Math.pow( temp, 1.2 ) ) * 100 + 0.5 ) / 100 + " (rounded off to two digits)" + NL; From b6dc66d54794e6f1a85cd71ac365c83a34c66d3b Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 22 Jan 2023 20:18:13 -0700 Subject: [PATCH 05/28] Stop Double Counting of Supercharger --- sswlib/src/main/java/components/CombatVehicle.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sswlib/src/main/java/components/CombatVehicle.java b/sswlib/src/main/java/components/CombatVehicle.java index f4aba987..8cdcfc89 100644 --- a/sswlib/src/main/java/components/CombatVehicle.java +++ b/sswlib/src/main/java/components/CombatVehicle.java @@ -424,7 +424,7 @@ public double GetCurrentTons() { result += GetFullAmphibiousTonnage(); result += GetEnvironmentalSealingTonnage(); //if( HasBlueShield ) { result += BlueShield.GetTonnage(); } - if( CurLoadout.HasSupercharger() ) { result += CurLoadout.GetSupercharger().GetTonnage(); } + //if( CurLoadout.HasSupercharger() ) { result += CurLoadout.GetSupercharger().GetTonnage(); } ArrayList v = CurLoadout.GetNonCore(); if( v.size() > 0 ) { @@ -449,7 +449,7 @@ public double GetCurrentDryTons() { if( CurLoadout.UsingTC() ) { result += GetTC().GetTonnage(); } if( ! CurEngine.IsNuclear() ) { result += CurLoadout.GetPowerAmplifier().GetTonnage(); } if( HasBlueShield ) { result += BlueShield.GetTonnage(); } - if( CurLoadout.HasSupercharger() ) { result += CurLoadout.GetSupercharger().GetTonnage(); } + //if( CurLoadout.HasSupercharger() ) { result += CurLoadout.GetSupercharger().GetTonnage(); } if( UsingEnvironmentalSealing ) { result += EnviroSealing.GetTonnage(); } ArrayList v = CurLoadout.GetNonCore(); @@ -2024,9 +2024,9 @@ public double GetDefensiveEquipBV() { if( HasBlueShield() ) { result += BlueShield.GetDefensiveBV(); } - if( CurLoadout.HasSupercharger() ) { - result += CurLoadout.GetSupercharger().GetDefensiveBV(); - } +// if( CurLoadout.HasSupercharger() ) { +// result += CurLoadout.GetSupercharger().GetDefensiveBV(); +// } } return result; } From 32d58978cc453d121b45b6ca3d84bfe3e4f33925 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 22 Jan 2023 20:32:15 -0700 Subject: [PATCH 06/28] Adjust the Offensive BV --- sswlib/src/main/java/components/CombatVehicle.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sswlib/src/main/java/components/CombatVehicle.java b/sswlib/src/main/java/components/CombatVehicle.java index 8cdcfc89..b08588db 100644 --- a/sswlib/src/main/java/components/CombatVehicle.java +++ b/sswlib/src/main/java/components/CombatVehicle.java @@ -2333,7 +2333,7 @@ public double GetTonnageBV() { public double GetOffensiveFactor() { double result = 0.0; - result += (double) (getFlankMP() - 5.0f); + result += (double) (GetAdjustedFlankMP(true, true) - 5.0f); result = result * 0.1 + 1.0; result = (double) Math.pow( result, 1.2 ) ; From 521a7c6e95fa247ed0009972a29b434531ca17d4 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 22 Jan 2023 20:46:18 -0700 Subject: [PATCH 07/28] Remove Modifier When Supercharger is removed --- sswlib/src/main/java/components/CVLoadout.java | 1 + 1 file changed, 1 insertion(+) diff --git a/sswlib/src/main/java/components/CVLoadout.java b/sswlib/src/main/java/components/CVLoadout.java index db990d78..16dc377b 100644 --- a/sswlib/src/main/java/components/CVLoadout.java +++ b/sswlib/src/main/java/components/CVLoadout.java @@ -1071,6 +1071,7 @@ public void CheckTC() { public void SetSupercharger(boolean b) throws Exception { if( b == false ) { Remove( SCharger ); + RemoveMechMod(SCharger.GetMechModifier()); return; } From d82dc55dbc9422cef54aaadf6b5aaf181477841c Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 22 Jan 2023 20:46:38 -0700 Subject: [PATCH 08/28] Add Move Summary And add to the layout, this is a little messed up though! --- saw/src/main/java/saw/gui/frmVee.java | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/saw/src/main/java/saw/gui/frmVee.java b/saw/src/main/java/saw/gui/frmVee.java index c784155f..1707e44b 100644 --- a/saw/src/main/java/saw/gui/frmVee.java +++ b/saw/src/main/java/saw/gui/frmVee.java @@ -890,6 +890,14 @@ public void RefreshInfoPane() { txtInfoFreeCrits.setForeground(Color.black); } + // fill in the movement summary + String temp = "Max W/R: "; + temp += CurVee.GetAdjustedCruiseMP( false, true ) + "/"; + temp += CurVee.GetAdjustedFlankMP( false, true ) + "/"; +// temp += CurMech.GetAdjustedJumpingMP( false ) + "/"; +// temp += CurMech.GetAdjustedBoosterMP( false ); + lblMoveSummary.setText( temp ); + // fill in the info if( CurVee.UsingFractionalAccounting() ) { txtInfoTonnage.setText( "Tons: " + CommonTools.RoundFractionalTons( CurVee.GetCurrentTons() ) ); @@ -1068,6 +1076,7 @@ private void initComponents() { btnOptions = new javax.swing.JButton(); jSeparator21 = new javax.swing.JToolBar.Separator(); lblSelectVariant = new javax.swing.JLabel(); + lblMoveSummary = new javax.swing.JLabel(); cmbOmniVariant = new javax.swing.JComboBox(); tbpMainTabPane = new javax.swing.JTabbedPane(); pnlBasicSetup = new javax.swing.JPanel(); @@ -2103,7 +2112,9 @@ public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) { .addGroup(pnlMovementLayout.createSequentialGroup() .addComponent(jLabel10) .addGap(2, 2, 2) - .addComponent(spnCruiseMP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(spnCruiseMP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(2, 2, 2) + .addComponent(lblMoveSummary, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(pnlMovementLayout.createSequentialGroup() .addGap(5, 5, 5) .addGroup(pnlMovementLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -2124,7 +2135,8 @@ public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) { .addGroup(pnlMovementLayout.createSequentialGroup() .addGap(3, 3, 3) .addComponent(jLabel10)) - .addComponent(spnCruiseMP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(spnCruiseMP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblMoveSummary, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(2, 2, 2) .addGroup(pnlMovementLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel11) @@ -2154,6 +2166,12 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; pnlChassisMods.add(chkFlotationHull, gridBagConstraints); + lblMoveSummary.setText("W/R: 12/20"); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; + gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0); + pnlMovement.add(lblMoveSummary, gridBagConstraints); + chkLimitedAmph.setText("Limited Amphibious"); chkLimitedAmph.setEnabled(false); chkLimitedAmph.addActionListener(new java.awt.event.ActionListener() { @@ -10126,6 +10144,7 @@ private void FixJJSpinnerModel() { private javax.swing.JLabel lblRightIntPts; private javax.swing.JLabel lblRotorIntPts; private javax.swing.JLabel lblSelectVariant; + private javax.swing.JLabel lblMoveSummary; private javax.swing.JLabel lblSupensionFacter; private javax.swing.JLabel lblTurretIntPts; private javax.swing.JLabel lblVeeClass; From 3249c7a1ff950f92f2ad6daacac1c6e6552a629a Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 22 Jan 2023 20:59:08 -0700 Subject: [PATCH 09/28] Max Move on Layout Better laid out this time. --- saw/src/main/java/saw/gui/frmVee.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/saw/src/main/java/saw/gui/frmVee.java b/saw/src/main/java/saw/gui/frmVee.java index 1707e44b..4045d89d 100644 --- a/saw/src/main/java/saw/gui/frmVee.java +++ b/saw/src/main/java/saw/gui/frmVee.java @@ -891,9 +891,9 @@ public void RefreshInfoPane() { } // fill in the movement summary - String temp = "Max W/R: "; + String temp = "Max C/F: "; temp += CurVee.GetAdjustedCruiseMP( false, true ) + "/"; - temp += CurVee.GetAdjustedFlankMP( false, true ) + "/"; + temp += CurVee.GetAdjustedFlankMP( false, true ); // temp += CurMech.GetAdjustedJumpingMP( false ) + "/"; // temp += CurMech.GetAdjustedBoosterMP( false ); lblMoveSummary.setText( temp ); @@ -2104,6 +2104,7 @@ public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) { javax.swing.GroupLayout pnlMovementLayout = new javax.swing.GroupLayout(pnlMovement); pnlMovement.setLayout(pnlMovementLayout); + pnlMovementLayout.setHorizontalGroup( pnlMovementLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlMovementLayout.createSequentialGroup() @@ -2113,8 +2114,8 @@ public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) { .addComponent(jLabel10) .addGap(2, 2, 2) .addComponent(spnCruiseMP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(2, 2, 2) - .addComponent(lblMoveSummary, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(5, 5, 5) + .addComponent(lblMoveSummary, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(pnlMovementLayout.createSequentialGroup() .addGap(5, 5, 5) .addGroup(pnlMovementLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -2126,7 +2127,7 @@ public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) { .addComponent(jLabel13) .addGap(2, 2, 2) .addComponent(spnJumpMP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))) - .addContainerGap(129, Short.MAX_VALUE)) + .addContainerGap(20, Short.MAX_VALUE)) ); pnlMovementLayout.setVerticalGroup( pnlMovementLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -2136,7 +2137,7 @@ public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) { .addGap(3, 3, 3) .addComponent(jLabel10)) .addComponent(spnCruiseMP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblMoveSummary, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(lblMoveSummary, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE)) .addGap(2, 2, 2) .addGroup(pnlMovementLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel11) From 2c0443214af551313c621f294355f1bf3f0c5909 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 22 Jan 2023 21:06:27 -0700 Subject: [PATCH 10/28] Change save output So that it only has one entry for supercharger. --- .../src/main/java/filehandlers/CVWriter.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/sswlib/src/main/java/filehandlers/CVWriter.java b/sswlib/src/main/java/filehandlers/CVWriter.java index 7b6ba129..358fdb0e 100644 --- a/sswlib/src/main/java/filehandlers/CVWriter.java +++ b/sswlib/src/main/java/filehandlers/CVWriter.java @@ -430,14 +430,14 @@ private String GetEquipmentLines( String prefix ) { retval += prefix + "" + NL; } */ - if( CurUnit.GetLoadout().HasSupercharger() ) { - abPlaceable p = (abPlaceable) CurUnit.GetLoadout().GetSupercharger(); - retval += prefix + "" + NL; - retval += prefix + tab + "Supercharger" + NL; - retval += prefix + tab + "Supercharger" + NL; - retval += GetLocationLines( prefix + tab, p ); - retval += prefix + "" + NL; - } +// if( CurUnit.GetLoadout().HasSupercharger() ) { +// abPlaceable p = (abPlaceable) CurUnit.GetLoadout().GetSupercharger(); +// retval += prefix + "" + NL; +// retval += prefix + tab + "Supercharger" + NL; +// retval += prefix + tab + "Supercharger" + NL; +// retval += GetLocationLines( prefix + tab, p ); +// retval += prefix + "" + NL; +// } return retval; } @@ -469,6 +469,8 @@ private String GetEquipmentType( abPlaceable p ) { return "TargetingComputer"; } else if ( p instanceof CASE ) { return "CASE"; + } else if ( p instanceof Supercharger ) { + return "Supercharger"; } else { return "miscellaneous"; } From 82ada384fc690af821547356ec1d4babeb4ed0f3 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Tue, 24 Jan 2023 21:03:46 -0700 Subject: [PATCH 11/28] Save Supercharger as Physical Enhancement --- sswlib/src/main/java/filehandlers/CVWriter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sswlib/src/main/java/filehandlers/CVWriter.java b/sswlib/src/main/java/filehandlers/CVWriter.java index 358fdb0e..384c335d 100644 --- a/sswlib/src/main/java/filehandlers/CVWriter.java +++ b/sswlib/src/main/java/filehandlers/CVWriter.java @@ -470,7 +470,7 @@ private String GetEquipmentType( abPlaceable p ) { } else if ( p instanceof CASE ) { return "CASE"; } else if ( p instanceof Supercharger ) { - return "Supercharger"; + return "physical enhancement"; } else { return "miscellaneous"; } From 1119a519253a97b4bfe54a8b67a43072d79aef23 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Tue, 24 Jan 2023 21:10:40 -0700 Subject: [PATCH 12/28] Add Modifier on Clone --- sswlib/src/main/java/components/CVLoadout.java | 1 + 1 file changed, 1 insertion(+) diff --git a/sswlib/src/main/java/components/CVLoadout.java b/sswlib/src/main/java/components/CVLoadout.java index 16dc377b..268fc7f9 100644 --- a/sswlib/src/main/java/components/CVLoadout.java +++ b/sswlib/src/main/java/components/CVLoadout.java @@ -1088,6 +1088,7 @@ public void SetSupercharger(Supercharger s) { // this sets the loadout's supercharger to a different one. // Used for cloning purposes only! SCharger = s; + AddMechModifier(SCharger.GetMechModifier()); Owner.SetChanged( true ); } From be7e4acef86fc45e53dc459b54f5b0c040a82387 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Tue, 24 Jan 2023 22:07:27 -0700 Subject: [PATCH 13/28] Revert back to Supercharger As the loading of the file needs to know the special equipment to load. --- sswlib/src/main/java/filehandlers/CVWriter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sswlib/src/main/java/filehandlers/CVWriter.java b/sswlib/src/main/java/filehandlers/CVWriter.java index 384c335d..358fdb0e 100644 --- a/sswlib/src/main/java/filehandlers/CVWriter.java +++ b/sswlib/src/main/java/filehandlers/CVWriter.java @@ -470,7 +470,7 @@ private String GetEquipmentType( abPlaceable p ) { } else if ( p instanceof CASE ) { return "CASE"; } else if ( p instanceof Supercharger ) { - return "physical enhancement"; + return "Supercharger"; } else { return "miscellaneous"; } From a12c3e75f6b3ee43c6327e8d228cec7a44c9cb56 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Thu, 26 Jan 2023 20:29:05 -0700 Subject: [PATCH 14/28] Use Adjusted Flank for DBV --- sswlib/src/main/java/components/CombatVehicle.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sswlib/src/main/java/components/CombatVehicle.java b/sswlib/src/main/java/components/CombatVehicle.java index b08588db..b8b5483f 100644 --- a/sswlib/src/main/java/components/CombatVehicle.java +++ b/sswlib/src/main/java/components/CombatVehicle.java @@ -2024,9 +2024,9 @@ public double GetDefensiveEquipBV() { if( HasBlueShield() ) { result += BlueShield.GetDefensiveBV(); } -// if( CurLoadout.HasSupercharger() ) { -// result += CurLoadout.GetSupercharger().GetDefensiveBV(); -// } + if( CurLoadout.HasSupercharger() ) { + result += CurLoadout.GetSupercharger().GetDefensiveBV(); + } } return result; } @@ -2145,7 +2145,7 @@ public double GetDefensiveFactor() { // target number for speed. // subtract one since we're indexing an array - int RunMP = getFlankMP() - 1; + int RunMP = GetAdjustedFlankMP(true, false) - 1; int JumpMP = 0; // this is a safeguard for using MASC on an incredibly speedy chassis From 1f59cbed4787397b7bd3cae93b37d25849dae903 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Thu, 26 Jan 2023 22:03:29 -0700 Subject: [PATCH 15/28] Print Preview shows adjusted movement When a supercharger is added. --- sswlib/src/main/java/Print/PrintVehicle.java | 21 ++++++++++++++++--- .../main/java/components/CombatVehicle.java | 12 +++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/sswlib/src/main/java/Print/PrintVehicle.java b/sswlib/src/main/java/Print/PrintVehicle.java index 4123402c..e03bb90c 100644 --- a/sswlib/src/main/java/Print/PrintVehicle.java +++ b/sswlib/src/main/java/Print/PrintVehicle.java @@ -393,9 +393,24 @@ private void DrawMechData( Graphics2D graphics ) { // have to hack the movement to print the correct stuff here. graphics.setFont( PrintConsts.Small8Font ); - graphics.drawString( ( CurVee.getCruiseMP() * MiniConvRate ) + "", p[PrintConsts.WALKMP].x, p[PrintConsts.WALKMP].y ); - graphics.drawString( CurVee.getFlankMP( MiniConvRate ) + "", p[PrintConsts.RUNMP].x, p[PrintConsts.RUNMP].y ); - + //graphics.drawString( ( CurVee.getCruiseMP() * MiniConvRate ) + "", p[PrintConsts.WALKMP].x, p[PrintConsts.WALKMP].y ); + //graphics.drawString( CurVee.getFlankMP( MiniConvRate ) + "", p[PrintConsts.RUNMP].x, p[PrintConsts.RUNMP].y ); + + if( CurVee.GetAdjustedCruiseMP( false, true ) != CurVee.getCruiseMP() ) { + graphics.drawString( ( CurVee.getCruiseMP() * MiniConvRate ) + " (" + ( CurVee.GetAdjustedCruiseMP( false, true ) * MiniConvRate ) + ")", p[PrintConsts.WALKMP].x, p[PrintConsts.WALKMP].y ); + } else { + graphics.drawString( ( CurVee.getCruiseMP() * MiniConvRate ) + "", p[PrintConsts.WALKMP].x, p[PrintConsts.WALKMP].y ); + } + if( CurVee.GetAdjustedFlankMP( false, true ) != CurVee.getFlankMP() ) { + if( CurVee.GetAdjustedFlankMP( false, true ) < CurVee.getFlankMP() ) { + graphics.drawString( CurVee.GetAdjustedFlankMP( false, true, MiniConvRate ) + "", p[PrintConsts.RUNMP].x, p[PrintConsts.RUNMP].y ); + } else { + graphics.drawString( CurVee.getFlankMP( MiniConvRate ) + " (" + CurVee.GetAdjustedFlankMP( false, true, MiniConvRate ) + ")", p[PrintConsts.RUNMP].x, p[PrintConsts.RUNMP].y ); + } + } else { + graphics.drawString( CurVee.getFlankMP( MiniConvRate ) + "", p[PrintConsts.RUNMP].x, p[PrintConsts.RUNMP].y ); + } + // Movement and Engine if ( !CurVee.IsVTOL() ) { graphics.drawString( CurVee.GetMotiveLookupName() + "" + CurVee.GetChassisModifierString(), p[19].x, p[19].y ); diff --git a/sswlib/src/main/java/components/CombatVehicle.java b/sswlib/src/main/java/components/CombatVehicle.java index b8b5483f..587e85d5 100644 --- a/sswlib/src/main/java/components/CombatVehicle.java +++ b/sswlib/src/main/java/components/CombatVehicle.java @@ -1582,6 +1582,18 @@ public int GetAdjustedFlankMP( boolean BV, boolean MASCTSM ) { return retval; } + public int GetAdjustedFlankMP( boolean BV, boolean MASCTSM, int MiniMult ) { + // this had to become more complicated because of the peculiar + // idiosyncracies of the BV system. Stupid. + // this method provided for miniatures-scale printing + MechModifier m = GetTotalModifiers( BV, MASCTSM ); + int WalkValue = GetAdjustedCruiseMP( BV, MASCTSM ) * MiniMult; + double Multiplier = 1.5 + m.RunningMultiplier(); + int retval = (int) Math.floor( WalkValue * Multiplier + 0.5 ) + m.RunningAdder(); + if( retval < 0 ) { return 0; } + return retval; + } + public void SetRulesLevel( int r ) { if( Omni ) { CurLoadout.SetRulesLevel( r ); From 6e9d909827620984af8f5da7b65d4638e62f9ca0 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Fri, 27 Jan 2023 17:40:42 -0700 Subject: [PATCH 16/28] Fix MP output and Clan Case --- .../src/main/java/components/CVLoadout.java | 7 ++++ .../main/java/components/CombatVehicle.java | 12 +++--- .../src/main/java/filehandlers/CVReader.java | 22 +++++++---- .../main/java/filehandlers/CVTXTWriter.java | 37 +++++++++++++------ .../src/main/java/filehandlers/CVWriter.java | 4 +- 5 files changed, 55 insertions(+), 27 deletions(-) diff --git a/sswlib/src/main/java/components/CVLoadout.java b/sswlib/src/main/java/components/CVLoadout.java index 268fc7f9..e019348f 100644 --- a/sswlib/src/main/java/components/CVLoadout.java +++ b/sswlib/src/main/java/components/CVLoadout.java @@ -926,8 +926,15 @@ public boolean IsUsingClanCASE() { } public void SetClanCASE(boolean b) { + UsingCASE = b; UsingClanCASE = b; Case.SetClan(b); + Remove(Case); + try { + AddTo(Case, LocationIndex.CV_LOC_BODY); + } catch (Exception ex) { + System.err.println(ex.getMessage()); + } Owner.SetChanged( true ); } diff --git a/sswlib/src/main/java/components/CombatVehicle.java b/sswlib/src/main/java/components/CombatVehicle.java index 587e85d5..b6c2a20a 100644 --- a/sswlib/src/main/java/components/CombatVehicle.java +++ b/sswlib/src/main/java/components/CombatVehicle.java @@ -1738,14 +1738,14 @@ public String GetChatInfo() { info += GetTonnage() + "t, "; // MP info += getCruiseMP(); - //if( getCruiseMP() != GetAdjustedWalkingMP( false, true ) ) { - // info += "[" + GetAdjustedWalkingMP( false, true ) + "]"; - //} + if( getCruiseMP() != GetAdjustedCruiseMP( false, true ) ) { + info += "[" + GetAdjustedCruiseMP( false, true ) + "]"; + } info += "/"; info += getFlankMP(); - //if( getFlankMP() != GetAdjustedRunningMP( false, true ) ) { - // info += "[" + GetAdjustedRunningMP( false, true ) + "]"; - //} + if( getFlankMP() != GetAdjustedFlankMP( false, true ) ) { + info += "[" + GetAdjustedFlankMP( false, true ) + "]"; + } if ( CurLoadout.GetJumpJets().GetNumJJ() > 0 ) { info += "/" + CurLoadout.GetJumpJets().GetNumJJ(); //if( CurLoadout.GetJumpJets().GetNumJJ() != this.GetAdjustedJumpingMP( false ) ) { diff --git a/sswlib/src/main/java/filehandlers/CVReader.java b/sswlib/src/main/java/filehandlers/CVReader.java index 319169b9..632d918a 100644 --- a/sswlib/src/main/java/filehandlers/CVReader.java +++ b/sswlib/src/main/java/filehandlers/CVReader.java @@ -419,7 +419,7 @@ private CombatVehicle BuildVehicle( CombatVehicle m, Document d, DataFactory f ) // take care of Clan CASE on previous save file versions if( SaveFileVersion < 1 ) { // this will fail if Inner Sphere, so we're safe - //m.GetLoadout().SetClanCASE( true ); + m.GetLoadout().SetClanCASE( true ); } n = n.item( 0 ).getChildNodes(); LocationIndex ltc = new LocationIndex(); @@ -428,7 +428,7 @@ private CombatVehicle BuildVehicle( CombatVehicle m, Document d, DataFactory f ) if( n.item( i ).getNodeName().equals( "source" ) ) { m.setSource( n.item( i ).getTextContent() ); } else if( n.item( i ).getNodeName().equals( "clancase" ) ) { - //m.GetLoadout().SetClanCASE( ParseBoolean( n.item( i ).getTextContent() ) ); + m.GetLoadout().SetClanCASE( ParseBoolean( n.item( i ).getTextContent() ) ); } else if( n.item( i ).getNodeName().equals( "heatsinks" ) ) { map = n.item( i ).getAttributes(); int numhs = Integer.parseInt( map.getNamedItem( "number" ).getTextContent() ); @@ -553,8 +553,11 @@ private CombatVehicle BuildVehicle( CombatVehicle m, Document d, DataFactory f ) } ltc = l; } else if( eType.equals( "CASE" ) ) { - m.GetLoadout().SetISCASE(); - m.GetLoadout().SetClanCASE(( m.GetTechBase() == AvailableCode.TECH_CLAN)); + if (m.GetLoadout().IsUsingClanCASE()) { + m.GetLoadout().SetClanCASE(true); + } else { + m.GetLoadout().SetISCASE(); + } } else if( eType.equals( "Supercharger" ) ) { m.GetLoadout().SetSupercharger( true ); } @@ -873,7 +876,7 @@ private CombatVehicle BuildVehicle( CombatVehicle m, Document d, DataFactory f ) // take care of Clan CASE on previous save file versions if( SaveFileVersion < 1 ) { // this will fail if Inner Sphere, so we're safe - //m.GetLoadout().SetClanCASE( true ); + m.GetLoadout().SetClanCASE( true ); } if( SaveFileVersion < 2 ) { m.setSource( Source ); @@ -901,7 +904,7 @@ private CombatVehicle BuildVehicle( CombatVehicle m, Document d, DataFactory f ) } } } else if( n.item( i ).getNodeName().equals( "clancase" ) ) { - //m.GetLoadout().SetClanCASE( ParseBoolean( n.item( i ).getTextContent() ) ); + m.GetLoadout().SetClanCASE( ParseBoolean( n.item( i ).getTextContent() ) ); } else if( n.item( i ).getNodeName().equals( "heatsinks" ) ) { hsLoc.clear(); map = n.item( i ).getAttributes(); @@ -1021,8 +1024,11 @@ private CombatVehicle BuildVehicle( CombatVehicle m, Document d, DataFactory f ) } ltc = l; } else if( eType.equals( "CASE" ) ) { - m.GetLoadout().SetISCASE(); - m.GetLoadout().SetClanCASE(( m.GetTechBase() == AvailableCode.TECH_CLAN)); + if (m.GetLoadout().IsUsingClanCASE()) { + m.GetLoadout().SetClanCASE(true); + } else { + m.GetLoadout().SetISCASE(); + } } else if( eType.equals( "Supercharger" ) ) { m.GetLoadout().SetSupercharger( true ); } diff --git a/sswlib/src/main/java/filehandlers/CVTXTWriter.java b/sswlib/src/main/java/filehandlers/CVTXTWriter.java index 8dcdf3c3..687cfb6b 100644 --- a/sswlib/src/main/java/filehandlers/CVTXTWriter.java +++ b/sswlib/src/main/java/filehandlers/CVTXTWriter.java @@ -112,13 +112,8 @@ public void WriteTXT( String filename ) throws IOException { } public String GetChatStats( CombatVehicle m ) { - // a fun convenience routine for those who talk in chat or forums. - String retval = ""; - - // pondering some sort of GetChatName() for abplaceables. - retval += m.GetTonnage() + " tons, " + m.GetAdjustedCruiseMP( false, true ) + "/" + m.GetAdjustedFlankMP( false, true ); //+ "/" + m.GetAdjustedJumpingMP( false ); - - return retval; + // !!! DO NOT USE THIS METHOD, INSTEAD UPDATE CombatVehicle.GetChatInfo(); + return ""; } public String GetTextExport() { @@ -150,8 +145,18 @@ public String GetTextExport() { //retval += "Chassis: " + CurVee.GetChassisModel() + " " + CurVee.GetIntStruc().CritName() + NL; retval += "Power Plant: " + CurVee.GetEngineManufacturer() + " " + CurVee.GetEngine().GetRating() + " " + CurVee.GetEngine() + NL; - retval += "Cruise Speed: " + CommonTools.FormatSpeed( CurVee.GetAdjustedCruiseMP(false, true) * 10.8 ) + " km/h" + NL; - retval += "Flanking Speed: " + CommonTools.FormatSpeed( CurVee.GetAdjustedFlankMP(false, true) * 10.8 ) + " km/h" + NL; + //retval += "Cruise Speed: " + CommonTools.FormatSpeed( CurVee.GetAdjustedCruiseMP(false, true) * 10.8 ) + " km/h" + NL; + //retval += "Flanking Speed: " + CommonTools.FormatSpeed( CurVee.GetAdjustedFlankMP(false, true) * 10.8 ) + " km/h" + NL; + if( CurVee.GetAdjustedCruiseMP( false, true ) != CurVee.getCruiseMP() ) { + retval += "Cruise Speed: " + CommonTools.FormatSpeed( CurVee.getCruiseMP() * 10.8 ) + " km/h (" + CommonTools.FormatSpeed( CurVee.GetAdjustedCruiseMP( false, true ) * 10.8 ) + " km/h)" + NL; + } else { + retval += "Cruise Speed: " + CommonTools.FormatSpeed( CurVee.getCruiseMP() * 10.8 ) + " km/h" + NL; + } + if( CurVee.GetAdjustedFlankMP( false, true ) != CurVee.getFlankMP() ) { + retval += "Maximum Speed: " + CommonTools.FormatSpeed( CurVee.getFlankMP() * 10.8 ) + " km/h (" + CommonTools.FormatSpeed( CurVee.GetAdjustedFlankMP( false, true ) * 10.8 ) + " km/h)" + NL; + } else { + retval += "Maximum Speed: " + CommonTools.FormatSpeed( CurVee.getFlankMP() * 10.8 ) + " km/h" + NL; + } if ( CurVee.GetJumpJets().GetNumJJ() > 0 ) { retval += "Jump Jets: " + CurVee.GetJJModel() + NL; retval += " Jump Capacity: " + GetJumpJetDistanceLine() + NL; @@ -214,8 +219,18 @@ public String GetMiniTextExport() { retval += "--------------------------------------------------------------------------------" + NL; retval += String.format( "Internal Structure: %1$-28s %2$3s points %3" + tformat, CurVee.GetIntStruc().CritName(), CurVee.GetIntStruc().GetTotalPoints(), CurVee.GetIntStruc().GetTonnage() ) + NL; retval += String.format( "Engine: %1$-28s %2$3s %3" + tformat, FileCommon.GetExportName( CurVee, CurVee.GetEngine() ), CurVee.GetEngine().GetRating(), CurVee.GetEngine().GetTonnage() ) + NL; - retval += " Cruise MP: " + CurVee.GetAdjustedCruiseMP(false, true) + NL; - retval += " Flank MP: " + CurVee.GetAdjustedFlankMP(false, true) + NL; +// retval += " Cruise MP: " + CurVee.GetAdjustedCruiseMP(false, true) + NL; +// retval += " Flank MP: " + CurVee.GetAdjustedFlankMP(false, true) + NL; + if( CurVee.GetAdjustedCruiseMP( false, true ) != CurVee.getCruiseMP() ) { + retval += "Cruise MP: " + CommonTools.FormatSpeed( CurVee.getCruiseMP() ) + " (" + CommonTools.FormatSpeed( CurVee.GetAdjustedCruiseMP( false, true ) * 10.8 ) + " km/h)" + NL; + } else { + retval += "Cruise MP: " + CommonTools.FormatSpeed( CurVee.getCruiseMP() ) + NL; + } + if( CurVee.GetAdjustedFlankMP( false, true ) != CurVee.getFlankMP() ) { + retval += "Flank MP: " + CommonTools.FormatSpeed( CurVee.getFlankMP() ) + " (" + CommonTools.FormatSpeed( CurVee.GetAdjustedFlankMP( false, true ) * 10.8 ) + " km/h)" + NL; + } else { + retval += "Flank MP: " + CommonTools.FormatSpeed( CurVee.getFlankMP() ) + NL; + } if( CurVee.GetJumpJets().GetNumJJ() > 0 ) { retval += " Jumping MP: " + GetJumpingMPLine() + " " + GetJumpJetTypeLine() + NL; retval += String.format( " %1$-68s %2$6.2f", "Jump Jet Locations: " + FileCommon.GetJumpJetLocations( CurVee ), CurVee.GetJumpJets().GetTonnage() ) + NL; diff --git a/sswlib/src/main/java/filehandlers/CVWriter.java b/sswlib/src/main/java/filehandlers/CVWriter.java index 358fdb0e..60c51409 100644 --- a/sswlib/src/main/java/filehandlers/CVWriter.java +++ b/sswlib/src/main/java/filehandlers/CVWriter.java @@ -243,8 +243,8 @@ public void WriteXML( BufferedWriter FR ) throws IOException { FR.newLine(); FR.write( tab + tab + "" + CurUnit.GetTotalCost() + "" ); FR.newLine(); - //FR.write( tab + tab + "" + FileCommon.GetBoolean( CurUnit.GetLoadout().IsUsingClanCASE() ) + "" ); - //FR.newLine(); + FR.write( tab + tab + "" + FileCommon.GetBoolean( CurUnit.GetLoadout().IsUsingClanCASE() ) + "" ); + FR.newLine(); if( CurUnit.GetJumpJets().GetNumJJ() > CurUnit.GetJumpJets().GetBaseLoadoutNumJJ() ) { FR.write( tab + tab + "" ); FR.newLine(); From 99da92f876d74c6d6b9f74ef7d196172a51762fb Mon Sep 17 00:00:00 2001 From: George Blouin Date: Fri, 27 Jan 2023 18:20:37 -0700 Subject: [PATCH 17/28] Ammo & Equipment Changes for Maelwys --- Data/Equipment/ammunition.json | 14 +++++++------- Data/Equipment/equipment.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Data/Equipment/ammunition.json b/Data/Equipment/ammunition.json index e650fd6b..6db49066 100644 --- a/Data/Equipment/ammunition.json +++ b/Data/Equipment/ammunition.json @@ -8935,7 +8935,7 @@ "ActualName": "Ammo: Fluid Gun (Coolant)", "CritName": "@ Fluid Gun (Coolant)", "LookupName": "@ Fluid Gun (Coolant)", - "MegaMekName": "FluidGunCoolantAmmo", + "MegaMekName": "ISFluidGun Ammo", "BookRef": "Tactical Operations", "Tonnage": 1.0, "Cost": 3000.0, @@ -9012,7 +9012,7 @@ "ActualName": "Ammo: Fluid Gun (Corrosive)", "CritName": "@ Fluid Gun (Corrosive)", "LookupName": "@ Fluid Gun (Corrosive)", - "MegaMekName": "FluidGunCorrosiveAmmo", + "MegaMekName": "ISFluidGun Ammo", "BookRef": "Tactical Operations", "Tonnage": 1.0, "Cost": 5000.0, @@ -9089,7 +9089,7 @@ "ActualName": "Ammo: Fluid Gun (Flame Retardant Foam)", "CritName": "@ Fluid Gun (Flm Rtrdnt)", "LookupName": "@ Fluid Gun (Flame Retardant Foam)", - "MegaMekName": "FluidGunFoamAmmo", + "MegaMekName": "ISFluidGun Ammo", "BookRef": "Tactical Operations", "Tonnage": 1.0, "Cost": 1000.0, @@ -9166,7 +9166,7 @@ "ActualName": "Ammo: Fluid Gun (Inferno Fuel)", "CritName": "@ Fluid Gun (Inferno Fuel)", "LookupName": "@ Fluid Gun (Inferno Fuel)", - "MegaMekName": "FluidGunInfernoFuelAmmo", + "MegaMekName": "ISFluidGun Ammo", "BookRef": "Tactical Operations", "Tonnage": 1.0, "Cost": 2000.0, @@ -9243,7 +9243,7 @@ "ActualName": "Ammo: Fluid Gun (Oil Slick)", "CritName": "@ Fluid Gun (Oil Slick)", "LookupName": "@ Fluid Gun (Oil Slick)", - "MegaMekName": "FluidGunOilSlickAmmo", + "MegaMekName": "ISFluidGun Ammo", "BookRef": "Tactical Operations", "Tonnage": 1.0, "Cost": 2000.0, @@ -9320,7 +9320,7 @@ "ActualName": "Ammo: Fluid Gun (Paint/Obscurant)", "CritName": "@ Fluid Gun (Pnt/Obscrnt)", "LookupName": "@ Fluid Gun (Paint/Obscurant)", - "MegaMekName": "FluidGunPaintAmmo", + "MegaMekName": "ISFluidGun Ammo", "BookRef": "Tactical Operations", "Tonnage": 1.0, "Cost": 1000.0, @@ -9397,7 +9397,7 @@ "ActualName": "Ammo: Fluid Gun (Water)", "CritName": "@ Fluid Gun (Water)", "LookupName": "@ Fluid Gun (Water)", - "MegaMekName": "FluidGunWaterAmmo", + "MegaMekName": "ISFluidGun Ammo", "BookRef": "Tactical Operations", "Tonnage": 1.0, "Cost": 500.0, diff --git a/Data/Equipment/equipment.json b/Data/Equipment/equipment.json index b08f7cab..1eabe33b 100644 --- a/Data/Equipment/equipment.json +++ b/Data/Equipment/equipment.json @@ -5071,7 +5071,7 @@ "CritName": "Cargo, Liquid", "Type": "IE", "LookupName": "Cargo, Liquid", - "MegaMekName": "CargoLiquid", + "MegaMekName": "Liquid Storage", "BookReference": "Tech Manual", "ChatName": "LqdCrgo", "Specials": "-", From 7f26c3861adf9ae3cec3500024523c2f4100aca1 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Fri, 27 Jan 2023 18:21:45 -0700 Subject: [PATCH 18/28] Remove the kph --- sswlib/src/main/java/filehandlers/CVTXTWriter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sswlib/src/main/java/filehandlers/CVTXTWriter.java b/sswlib/src/main/java/filehandlers/CVTXTWriter.java index 687cfb6b..1c57088c 100644 --- a/sswlib/src/main/java/filehandlers/CVTXTWriter.java +++ b/sswlib/src/main/java/filehandlers/CVTXTWriter.java @@ -222,12 +222,12 @@ public String GetMiniTextExport() { // retval += " Cruise MP: " + CurVee.GetAdjustedCruiseMP(false, true) + NL; // retval += " Flank MP: " + CurVee.GetAdjustedFlankMP(false, true) + NL; if( CurVee.GetAdjustedCruiseMP( false, true ) != CurVee.getCruiseMP() ) { - retval += "Cruise MP: " + CommonTools.FormatSpeed( CurVee.getCruiseMP() ) + " (" + CommonTools.FormatSpeed( CurVee.GetAdjustedCruiseMP( false, true ) * 10.8 ) + " km/h)" + NL; + retval += "Cruise MP: " + CommonTools.FormatSpeed( CurVee.getCruiseMP() ) + " (" + CommonTools.FormatSpeed( CurVee.GetAdjustedCruiseMP( false, true ) ) + ")" + NL; } else { retval += "Cruise MP: " + CommonTools.FormatSpeed( CurVee.getCruiseMP() ) + NL; } if( CurVee.GetAdjustedFlankMP( false, true ) != CurVee.getFlankMP() ) { - retval += "Flank MP: " + CommonTools.FormatSpeed( CurVee.getFlankMP() ) + " (" + CommonTools.FormatSpeed( CurVee.GetAdjustedFlankMP( false, true ) * 10.8 ) + " km/h)" + NL; + retval += "Flank MP: " + CommonTools.FormatSpeed( CurVee.getFlankMP() ) + " (" + CommonTools.FormatSpeed( CurVee.GetAdjustedFlankMP( false, true ) ) + ")" + NL; } else { retval += "Flank MP: " + CommonTools.FormatSpeed( CurVee.getFlankMP() ) + NL; } From 235182fc3b9f08f1733fc7b72423f3a5e267e5de Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 29 Jan 2023 18:06:46 -0700 Subject: [PATCH 19/28] Adding VTOL Jet Booster to SAW This shows the option, allows the user to select it and deselect it --- saw/src/main/java/saw/gui/frmVee.java | 41 ++++- saw/src/main/java/saw/gui/frmVeeWide.java | 35 +++- .../src/main/java/components/CVLoadout.java | 25 ++- .../src/main/java/components/VTOLBooster.java | 165 ++++++++++++++++++ .../src/main/java/components/ifCVLoadout.java | 3 + 5 files changed, 259 insertions(+), 10 deletions(-) create mode 100644 sswlib/src/main/java/components/VTOLBooster.java diff --git a/saw/src/main/java/saw/gui/frmVee.java b/saw/src/main/java/saw/gui/frmVee.java index 824bfd6b..0d558c30 100644 --- a/saw/src/main/java/saw/gui/frmVee.java +++ b/saw/src/main/java/saw/gui/frmVee.java @@ -2229,7 +2229,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { chkJetBooster.setText("VTOL Jet Booster"); chkJetBooster.setEnabled(false); - + chkJetBooster.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + chkJetBoosterActionPerformed(evt); + } + }); chkSupercharger.setText("Supercharger"); chkSupercharger.setEnabled(false); chkSupercharger.addActionListener(new java.awt.event.ActionListener() { @@ -5571,7 +5575,6 @@ private void cmbRulesLevelActionPerformed(java.awt.event.ActionEvent evt) {//GEN BuildExpEquipmentSelector(); FixMPSpinner(); FixJJSpinnerModel(); - RefreshEquipment(); // now reset the combo boxes to the closest choices we previously selected LoadSelections(); @@ -5581,11 +5584,11 @@ private void cmbRulesLevelActionPerformed(java.awt.event.ActionEvent evt) {//GEN //RecalcHeatSinks(); RecalcArmor(); RecalcEquipment(); - RefreshEquipment(); } BuildTurretSelector(); // now refresh the information panes + RefreshEquipment(); RefreshSummary(); RefreshInfoPane(); SetWeaponChoosers(); @@ -5707,6 +5710,7 @@ private void BuildExpEquipmentSelector() { chkJetBooster, chkEscapePod, chkSponsonTurret }; + if (cmbRulesLevel.getSelectedIndex() > 1) { if (CurVee.CanUseSponson()) chkSponsonTurret.setEnabled(true); @@ -5772,6 +5776,7 @@ private void cmbMotiveTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN if( CurVee.IsVTOL() != wasVtol ) RecalcArmorPlacement(); RecalcArmorLocations(); SetWeaponChoosers(); + RefreshEquipment(); RefreshSummary(); RefreshInfoPane(); }//GEN-LAST:event_cmbMotiveTypeActionPerformed @@ -6019,9 +6024,29 @@ private void ShowInfoOn( abPlaceable p ) { lblInfoMountRestrict.setText(lblInfoMountRestrict.getText() + " MM Name " + p.MegaMekName(false)); } - private void chkSuperchargerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkSuperchargerActionPerformed + private void chkJetBoosterActionPerformed(java.awt.event.ActionEvent evt) { + if( CurVee.GetLoadout().HasVTOLBooster() == chkJetBooster.isSelected() ) { + return; + } + try { + CurVee.GetLoadout().SetVTOLBooster( chkJetBooster.isSelected()); + } catch( Exception e ) { + Media.Messager( this, e.getMessage() ); + try { + CurVee.GetLoadout().SetVTOLBooster( false ); + } catch( Exception x ) { + // how the hell did we get an error removing it? + Media.Messager( this, x.getMessage() ); + } + chkJetBooster.setSelected( false ); + } + RefreshSelectedEquipment(); + RefreshSummary(); + RefreshInfoPane(); + } + private void chkSuperchargerActionPerformed(java.awt.event.ActionEvent evt) { -}//GEN-LAST:event_chkSuperchargerActionPerformed + } private void chkUseTCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkUseTCActionPerformed if( CurVee.UsingTC() == chkUseTC.isSelected() ) { return; } @@ -7065,7 +7090,11 @@ private void RefreshEquipment() { } else { chkSupercharger.setEnabled( false ); } - + if( CurVee.IsVTOL() && CommonTools.IsAllowed( CurVee.GetLoadout().GetVTOLBooster().GetAvailability(), CurVee ) ) { + chkJetBooster.setEnabled( true ); + } else { + chkJetBooster.setEnabled( false ); + } // now set all the equipment if needed if( ! chkFCSAIV.isEnabled() ) { try { diff --git a/saw/src/main/java/saw/gui/frmVeeWide.java b/saw/src/main/java/saw/gui/frmVeeWide.java index 37ff0d60..1c44a564 100644 --- a/saw/src/main/java/saw/gui/frmVeeWide.java +++ b/saw/src/main/java/saw/gui/frmVeeWide.java @@ -2215,6 +2215,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { chkJetBooster.setText("VTOL Jet Booster"); chkJetBooster.setEnabled(false); + chkJetBooster.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + chkJetBoosterActionPerformed(evt); + } + }); chkSupercharger.setText("Supercharger"); chkSupercharger.setEnabled(false); @@ -6398,7 +6403,11 @@ private void RefreshEquipment() { } else { chkSupercharger.setEnabled( false ); } - + if( CurVee.IsVTOL() && CommonTools.IsAllowed( CurVee.GetLoadout().GetVTOLBooster().GetAvailability(), CurVee ) ) { + chkJetBooster.setEnabled( true ); + } else { + chkJetBooster.setEnabled( false ); + } // now set all the equipment if needed if( ! chkFCSAIV.isEnabled() ) { try { @@ -8906,6 +8915,26 @@ private void chkFractionalActionPerformed(java.awt.event.ActionEvent evt) {//GEN RefreshInfoPane(); }//GEN-LAST:event_chkFractionalActionPerformed + private void chkJetBoosterActionPerformed(java.awt.event.ActionEvent evt) { + if( CurVee.GetLoadout().HasVTOLBooster() == chkJetBooster.isSelected() ) { + return; + } + try { + CurVee.GetLoadout().SetVTOLBooster( chkJetBooster.isSelected()); + } catch( Exception e ) { + Media.Messager( this, e.getMessage() ); + try { + CurVee.GetLoadout().SetVTOLBooster( false ); + } catch( Exception x ) { + // how the hell did we get an error removing it? + Media.Messager( this, x.getMessage() ); + } + chkJetBooster.setSelected( false ); + } + RefreshSelectedEquipment(); + RefreshSummary(); + RefreshInfoPane(); + } private void chkSuperchargerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkSuperchargerActionPerformed }//GEN-LAST:event_chkSuperchargerActionPerformed @@ -9296,6 +9325,7 @@ private void cmbMotiveTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN FixMPSpinner(); if( CurVee.IsVTOL() != wasVtol ) RecalcArmorPlacement(); RecalcArmorLocations(); + RefreshEquipment(); RefreshSummary(); RefreshInfoPane(); }//GEN-LAST:event_cmbMotiveTypeActionPerformed @@ -9678,7 +9708,6 @@ private void cmbRulesLevelActionPerformed(java.awt.event.ActionEvent evt) {//GEN } BuildTechBaseSelector(); cmbTechBase.setSelectedIndex(CurVee.GetLoadout().GetTechBase()); - RefreshEquipment(); RecalcEquipment(); } else { // can't. reset to the default rules level and scold the user @@ -9720,7 +9749,6 @@ private void cmbRulesLevelActionPerformed(java.awt.event.ActionEvent evt) {//GEN BuildExpEquipmentSelector(); FixMPSpinner(); FixJJSpinnerModel(); - RefreshEquipment(); // now reset the combo boxes to the closest choices we previously selected LoadSelections(); @@ -9734,6 +9762,7 @@ private void cmbRulesLevelActionPerformed(java.awt.event.ActionEvent evt) {//GEN BuildTurretSelector(); // now refresh the information panes + RefreshEquipment(); RefreshSummary(); RefreshInfoPane(); SetWeaponChoosers(); diff --git a/sswlib/src/main/java/components/CVLoadout.java b/sswlib/src/main/java/components/CVLoadout.java index ca39b21b..45b93f1d 100644 --- a/sswlib/src/main/java/components/CVLoadout.java +++ b/sswlib/src/main/java/components/CVLoadout.java @@ -45,6 +45,7 @@ public class CVLoadout implements ifCVLoadout, ifLoadout { private CVJumpJetFactory Jumps; private TargetingComputer CurTC = new TargetingComputer( this, false ); private Supercharger SCharger = new Supercharger( this ); + private VTOLBooster VBooster = new VTOLBooster(this); private String Name = Constants.BASELOADOUT_NAME, Source = ""; private ArrayList Queue = new ArrayList(), @@ -71,7 +72,8 @@ public class CVLoadout implements ifCVLoadout, ifLoadout { UsingCASE = false, UsingSupercharger = false, YearSpecified = false, - YearRestricted = false; + YearRestricted = false, + UsingVTOLBooster = false; private Turret Turret1 = new Turret(this, false), Turret2 = new Turret(this, false); private SponsonTurret SponsonTurretLeft = new SponsonTurret(this, false), @@ -1042,6 +1044,27 @@ public Supercharger GetSupercharger() { return SCharger; } + public void SetVTOLBooster(boolean b) throws Exception { + UsingVTOLBooster = b; + if (!b) { + Remove(VBooster); + RemoveMechMod(VBooster.GetMechModifier()); + return; + } + + try { + AddToBody(VBooster); + AddMechModifier(VBooster.GetMechModifier()); + } catch (Exception ex) { + System.err.println(ex.getMessage()); + } + Owner.setChanged(true); + } + public boolean HasVTOLBooster() { return UsingVTOLBooster; } + public VTOLBooster GetVTOLBooster() { + return VBooster; + } + public CVPowerAmplifier GetPowerAmplifier() { return PowerAmplifier; } diff --git a/sswlib/src/main/java/components/VTOLBooster.java b/sswlib/src/main/java/components/VTOLBooster.java new file mode 100644 index 00000000..80978c32 --- /dev/null +++ b/sswlib/src/main/java/components/VTOLBooster.java @@ -0,0 +1,165 @@ +/* +Copyright (c) 2023~2024, Justin R. Bengtson (poopshotgun@yahoo.com) +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Justin R. Bengtson nor the names of contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package components; + +public class VTOLBooster extends abPlaceable { + private ifLoadout Owner; + private AvailableCode AC = new AvailableCode( AvailableCode.TECH_BOTH ); + + public VTOLBooster(ifLoadout l ) { + AC.SetISCodes( 'D', 'X', 'F', 'E', 'D' ); + AC.SetISDates( 0, 0, false, 3009, 0, 0, false, false ); + AC.SetISFactions( "", "", "ES", "" ); + AC.SetCLCodes( 'D', 'X', 'F', 'E', 'D' ); + AC.SetCLDates( 0, 0, false, 2839, 0, 0, false, false ); + AC.SetCLFactions( "", "", "ES", "" ); + AC.SetRulesLevels( AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_EXPERIMENTAL, AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_UNALLOWED ); + Owner = (ifLoadout)l; + AddMechModifier( new MechModifier( 0, 0, 0, 0.5, 0, 3, 0, 0.0, 0.0, 0.0, 0.0, true, false ) ); + } + + public String ActualName() { + return "VTOL Jet Booster"; + } + + public String CritName() { + return "VTOL Jet Booster"; + } + + public String LookupName() { + return "VTOL Jet Booster"; + } + + public String ChatName() { + // ammo isn't included in the chat + return "VTOL Jet Booster"; + } + + public String MegaMekName( boolean UseRear ) { + if( Owner.GetTechBase() >= AvailableCode.TECH_CLAN ) { + return "CLVTOLJetBooster"; + } else { + return "ISVTOLJetBooster"; + } + } + + public String BookReference() { + return "Tactical Operations: Advanced Units Equipment"; + } + + @Override + public int NumCrits() { + return 1; + } + + public int NumCVSpaces() { + return 1; + } + + @Override + public double GetTonnage() { + double retval = 0.0; + if( Owner.UsingFractionalAccounting() ) { + retval = Math.ceil( Owner.GetEngine().GetTonnage() * 0.1); + } else { + retval = Math.ceil( Owner.GetEngine().GetTonnage() * 0.1); + } + if( IsArmored() ) { + retval += 0.5; + } + return retval; + } + + @Override + public double GetCost() { + double retval = Owner.GetEngine().GetRating() * 10000.0; + if( IsArmored() ) { + retval += 150000.; + } + return retval; + } + + @Override + public double GetOffensiveBV() { + return 0.0; + } + + @Override + public double GetCurOffensiveBV( boolean UseRear, boolean UseTC, boolean UseAES ) { + return 0.0; + } + + @Override + public double GetCurOffensiveBV( boolean UseRear, boolean UseTC, boolean UseAES, boolean UseRobotic ) { + // BV will not change for this item, so just return the normal value + return GetOffensiveBV(); + } + + @Override + public double GetDefensiveBV() { + if( IsArmored() ) { + return 5.0; + } else { + return 0.0; + } + } + + @Override + public boolean LocationLocked() { + return true; + } + + @Override + public boolean LocationLinked() { + return true; + } + + @Override + public boolean CoreComponent() { + return true; + } + + @Override + public AvailableCode GetAvailability() { + AvailableCode retval = AC.Clone(); + if( IsArmored() ) { + retval.Combine( ArmoredAC ); + } + return retval; + } + + @Override + public boolean CanAllocCVFront() { return false; } + @Override + public boolean CanAllocCVRear() { return false; } + @Override + public boolean CanAllocCVSide() { return false; } + @Override + public boolean CanAllocCVTurret() { return false; } +} diff --git a/sswlib/src/main/java/components/ifCVLoadout.java b/sswlib/src/main/java/components/ifCVLoadout.java index c0c05de6..e1e043db 100644 --- a/sswlib/src/main/java/components/ifCVLoadout.java +++ b/sswlib/src/main/java/components/ifCVLoadout.java @@ -148,6 +148,9 @@ public interface ifCVLoadout { public void SetSupercharger( Supercharger s ); public boolean HasSupercharger(); public Supercharger GetSupercharger(); + public void SetVTOLBooster(boolean b) throws Exception; + public boolean HasVTOLBooster(); + public VTOLBooster GetVTOLBooster(); public CVPowerAmplifier GetPowerAmplifier(); public void CheckExclusions( abPlaceable a ) throws Exception; public void MoveToQueue(int loc); From d7169ceb5a3adf8afff3a6342718cf1d9dc612fd Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 29 Jan 2023 18:13:17 -0700 Subject: [PATCH 20/28] Remove extra merged method --- saw/src/main/java/saw/gui/frmVee.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/saw/src/main/java/saw/gui/frmVee.java b/saw/src/main/java/saw/gui/frmVee.java index c2376027..4feb8ba4 100644 --- a/saw/src/main/java/saw/gui/frmVee.java +++ b/saw/src/main/java/saw/gui/frmVee.java @@ -6063,9 +6063,6 @@ private void chkJetBoosterActionPerformed(java.awt.event.ActionEvent evt) { RefreshSelectedEquipment(); RefreshSummary(); RefreshInfoPane(); - } - private void chkSuperchargerActionPerformed(java.awt.event.ActionEvent evt) { - } private void chkSuperchargerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkSuperchargerActionPerformed if( CurVee.GetLoadout().HasSupercharger() == chkSupercharger.isSelected() ) { From b58b4b7008cb49568683de8853d17812ad2f01f7 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 29 Jan 2023 18:36:41 -0700 Subject: [PATCH 21/28] Add Walk Multiplier to Modifiers And implement it for the booster --- sswlib/src/main/java/components/CombatVehicle.java | 4 ++++ sswlib/src/main/java/components/MechModifier.java | 13 ++++++++++++- sswlib/src/main/java/components/VTOLBooster.java | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/sswlib/src/main/java/components/CombatVehicle.java b/sswlib/src/main/java/components/CombatVehicle.java index b6c2a20a..bb9b6b13 100644 --- a/sswlib/src/main/java/components/CombatVehicle.java +++ b/sswlib/src/main/java/components/CombatVehicle.java @@ -1247,7 +1247,11 @@ public int getCruiseMP() { } public int GetAdjustedCruiseMP( boolean BV, boolean MASCTSM ) { + MechModifier m = GetTotalModifiers( BV, MASCTSM ); int retval = CruiseMP; + if (m.WalkingMultiplier() > 0) { + retval = (int) Math.floor(CruiseMP * m.WalkingMultiplier()); + } retval += GetTotalModifiers( BV, MASCTSM ).WalkingAdder(); if( retval < 0 ) { return 0; } return retval; diff --git a/sswlib/src/main/java/components/MechModifier.java b/sswlib/src/main/java/components/MechModifier.java index 9e04fb97..a3cda6c8 100644 --- a/sswlib/src/main/java/components/MechModifier.java +++ b/sswlib/src/main/java/components/MechModifier.java @@ -40,6 +40,7 @@ public class MechModifier { MinDefBonus = 0.0, ArmorMult = 0.0, IntMult = 0.0, + WalkMult = 0.0, RunMult = 0.0; private boolean BVMovement, BVHeatMod, @@ -82,6 +83,10 @@ public MechModifier( int wadd, int radd, int jadd, double rmult, int gmod, int p BVHeatMod = BVHeat; ConfigOnly = Config_Only; } + public MechModifier( int wadd, int radd, int jadd, double wmult, double rmult, int gmod, int pmod, int heat, double def, double mindef, double amult, double imult, boolean BVMove, boolean BVHeat ) { + this(wadd, radd, jadd, rmult, gmod, pmod, heat, def, mindef, amult, imult, BVMove, BVHeat, false ); + WalkMult = wmult; + } public void SetCanJump(boolean j) { CanJump = j; @@ -107,6 +112,10 @@ public int JumpingAdder() { return JumpAdd; } + public double WalkingMultiplier() { + return WalkMult; + } + public double RunningMultiplier() { return RunMult; } @@ -152,6 +161,7 @@ public void Combine( MechModifier m ) { WalkAdd += m.WalkingAdder(); RunAdd += m.RunningAdder(); JumpAdd += m.JumpingAdder(); + WalkMult += m.WalkingMultiplier(); RunMult += m.RunningMultiplier(); GunneryMod += m.GunneryMod(); PilotMod += m.PilotingModifier(); @@ -174,6 +184,7 @@ public void BVCombine( MechModifier m ) { WalkAdd += m.WalkingAdder(); RunAdd += m.RunningAdder(); JumpAdd += m.JumpingAdder(); + WalkMult += m.WalkingMultiplier(); RunMult += m.RunningMultiplier(); } GunneryMod += m.GunneryMod(); @@ -194,7 +205,7 @@ public void BVCombine( MechModifier m ) { @Override public String toString() { - String retval = WalkAdd + "/" + RunAdd + "/" + JumpAdd + ", RunMult=" + RunMult + ", " + GunneryMod + "/" + PilotMod + ", " + HeatAdd + " heat, "; + String retval = WalkAdd + "/" + RunAdd + "/" + JumpAdd + ", WalkMult=" + WalkMult + ", RunMult=" + RunMult + ", " + GunneryMod + "/" + PilotMod + ", " + HeatAdd + " heat, "; retval += DefBonus + " DMod, " + MinDefBonus + " MinDMod, " + ArmorMult + "/" + IntMult + " multipliers"; return retval; } diff --git a/sswlib/src/main/java/components/VTOLBooster.java b/sswlib/src/main/java/components/VTOLBooster.java index 80978c32..735560f0 100644 --- a/sswlib/src/main/java/components/VTOLBooster.java +++ b/sswlib/src/main/java/components/VTOLBooster.java @@ -41,7 +41,7 @@ public VTOLBooster(ifLoadout l ) { AC.SetCLFactions( "", "", "ES", "" ); AC.SetRulesLevels( AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_EXPERIMENTAL, AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_UNALLOWED ); Owner = (ifLoadout)l; - AddMechModifier( new MechModifier( 0, 0, 0, 0.5, 0, 3, 0, 0.0, 0.0, 0.0, 0.0, true, false ) ); + AddMechModifier(new MechModifier(0, 0, 0, 2.0, 0.0, 0, 3, 0, 0.0, 0.0, 0.0, 0.0, true, false)); } public String ActualName() { From dda0969dc3cb2623589c6dc52daabaa1dd5e9d2d Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 29 Jan 2023 18:50:07 -0700 Subject: [PATCH 22/28] Fix Movement Modifier --- sswlib/src/main/java/components/CombatVehicle.java | 2 +- sswlib/src/main/java/components/VTOLBooster.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sswlib/src/main/java/components/CombatVehicle.java b/sswlib/src/main/java/components/CombatVehicle.java index bb9b6b13..ff63e951 100644 --- a/sswlib/src/main/java/components/CombatVehicle.java +++ b/sswlib/src/main/java/components/CombatVehicle.java @@ -1579,7 +1579,7 @@ public int GetAdjustedFlankMP( boolean BV, boolean MASCTSM ) { // this had to become more complicated because of the peculiar // idiosyncracies of the BV system. Stupid. MechModifier m = GetTotalModifiers( BV, MASCTSM ); - int WalkValue = GetAdjustedCruiseMP( BV, MASCTSM ); + int WalkValue = getCruiseMP(); double Multiplier = 1.5 + m.RunningMultiplier(); int retval = (int) Math.floor( WalkValue * Multiplier + 0.5 ) + m.RunningAdder(); if( retval < 0 ) { return 0; } diff --git a/sswlib/src/main/java/components/VTOLBooster.java b/sswlib/src/main/java/components/VTOLBooster.java index 735560f0..04799fab 100644 --- a/sswlib/src/main/java/components/VTOLBooster.java +++ b/sswlib/src/main/java/components/VTOLBooster.java @@ -41,7 +41,7 @@ public VTOLBooster(ifLoadout l ) { AC.SetCLFactions( "", "", "ES", "" ); AC.SetRulesLevels( AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_EXPERIMENTAL, AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_UNALLOWED ); Owner = (ifLoadout)l; - AddMechModifier(new MechModifier(0, 0, 0, 2.0, 0.0, 0, 3, 0, 0.0, 0.0, 0.0, 0.0, true, false)); + AddMechModifier(new MechModifier(0, 0, 0, 0.0, 0.5, 0, 3, 0, 0.0, 0.0, 0.0, 0.0, true, false)); } public String ActualName() { From 31a0f6747c0774164b8bb191f083a1a592ce7e67 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 29 Jan 2023 18:56:24 -0700 Subject: [PATCH 23/28] Remove Walk Multiplier Turns out is was unneeded. --- sswlib/src/main/java/components/MechModifier.java | 13 +------------ sswlib/src/main/java/components/VTOLBooster.java | 2 +- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/sswlib/src/main/java/components/MechModifier.java b/sswlib/src/main/java/components/MechModifier.java index a3cda6c8..9e04fb97 100644 --- a/sswlib/src/main/java/components/MechModifier.java +++ b/sswlib/src/main/java/components/MechModifier.java @@ -40,7 +40,6 @@ public class MechModifier { MinDefBonus = 0.0, ArmorMult = 0.0, IntMult = 0.0, - WalkMult = 0.0, RunMult = 0.0; private boolean BVMovement, BVHeatMod, @@ -83,10 +82,6 @@ public MechModifier( int wadd, int radd, int jadd, double rmult, int gmod, int p BVHeatMod = BVHeat; ConfigOnly = Config_Only; } - public MechModifier( int wadd, int radd, int jadd, double wmult, double rmult, int gmod, int pmod, int heat, double def, double mindef, double amult, double imult, boolean BVMove, boolean BVHeat ) { - this(wadd, radd, jadd, rmult, gmod, pmod, heat, def, mindef, amult, imult, BVMove, BVHeat, false ); - WalkMult = wmult; - } public void SetCanJump(boolean j) { CanJump = j; @@ -112,10 +107,6 @@ public int JumpingAdder() { return JumpAdd; } - public double WalkingMultiplier() { - return WalkMult; - } - public double RunningMultiplier() { return RunMult; } @@ -161,7 +152,6 @@ public void Combine( MechModifier m ) { WalkAdd += m.WalkingAdder(); RunAdd += m.RunningAdder(); JumpAdd += m.JumpingAdder(); - WalkMult += m.WalkingMultiplier(); RunMult += m.RunningMultiplier(); GunneryMod += m.GunneryMod(); PilotMod += m.PilotingModifier(); @@ -184,7 +174,6 @@ public void BVCombine( MechModifier m ) { WalkAdd += m.WalkingAdder(); RunAdd += m.RunningAdder(); JumpAdd += m.JumpingAdder(); - WalkMult += m.WalkingMultiplier(); RunMult += m.RunningMultiplier(); } GunneryMod += m.GunneryMod(); @@ -205,7 +194,7 @@ public void BVCombine( MechModifier m ) { @Override public String toString() { - String retval = WalkAdd + "/" + RunAdd + "/" + JumpAdd + ", WalkMult=" + WalkMult + ", RunMult=" + RunMult + ", " + GunneryMod + "/" + PilotMod + ", " + HeatAdd + " heat, "; + String retval = WalkAdd + "/" + RunAdd + "/" + JumpAdd + ", RunMult=" + RunMult + ", " + GunneryMod + "/" + PilotMod + ", " + HeatAdd + " heat, "; retval += DefBonus + " DMod, " + MinDefBonus + " MinDMod, " + ArmorMult + "/" + IntMult + " multipliers"; return retval; } diff --git a/sswlib/src/main/java/components/VTOLBooster.java b/sswlib/src/main/java/components/VTOLBooster.java index 04799fab..a734b106 100644 --- a/sswlib/src/main/java/components/VTOLBooster.java +++ b/sswlib/src/main/java/components/VTOLBooster.java @@ -41,7 +41,7 @@ public VTOLBooster(ifLoadout l ) { AC.SetCLFactions( "", "", "ES", "" ); AC.SetRulesLevels( AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_EXPERIMENTAL, AvailableCode.RULES_UNALLOWED, AvailableCode.RULES_UNALLOWED ); Owner = (ifLoadout)l; - AddMechModifier(new MechModifier(0, 0, 0, 0.0, 0.5, 0, 3, 0, 0.0, 0.0, 0.0, 0.0, true, false)); + AddMechModifier(new MechModifier(0, 0, 0, 0.5, 0, 3, 0, 0.0, 0.0, 0.0, 0.0, true, false)); } public String ActualName() { From 1d9812cf7d394957355823d2e0e72d46d6432fa9 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 29 Jan 2023 18:59:23 -0700 Subject: [PATCH 24/28] Remove Walk Mult from Cruise MP Calc --- sswlib/src/main/java/components/CombatVehicle.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/sswlib/src/main/java/components/CombatVehicle.java b/sswlib/src/main/java/components/CombatVehicle.java index ff63e951..34ade813 100644 --- a/sswlib/src/main/java/components/CombatVehicle.java +++ b/sswlib/src/main/java/components/CombatVehicle.java @@ -1249,9 +1249,6 @@ public int getCruiseMP() { public int GetAdjustedCruiseMP( boolean BV, boolean MASCTSM ) { MechModifier m = GetTotalModifiers( BV, MASCTSM ); int retval = CruiseMP; - if (m.WalkingMultiplier() > 0) { - retval = (int) Math.floor(CruiseMP * m.WalkingMultiplier()); - } retval += GetTotalModifiers( BV, MASCTSM ).WalkingAdder(); if( retval < 0 ) { return 0; } return retval; From c2fd5979f0e080ca9500cdaa353589ce62016d4d Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 29 Jan 2023 19:12:54 -0700 Subject: [PATCH 25/28] Fix Tonnage Calc --- sswlib/src/main/java/components/VTOLBooster.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sswlib/src/main/java/components/VTOLBooster.java b/sswlib/src/main/java/components/VTOLBooster.java index a734b106..5a5b5ef7 100644 --- a/sswlib/src/main/java/components/VTOLBooster.java +++ b/sswlib/src/main/java/components/VTOLBooster.java @@ -86,9 +86,9 @@ public int NumCVSpaces() { public double GetTonnage() { double retval = 0.0; if( Owner.UsingFractionalAccounting() ) { - retval = Math.ceil( Owner.GetEngine().GetTonnage() * 0.1); + retval = Math.ceil( Owner.GetEngine().GetTonnage() * 100 ) * 0.001; } else { - retval = Math.ceil( Owner.GetEngine().GetTonnage() * 0.1); + retval = ((int) ( Math.ceil( Owner.GetEngine().GetTonnage() * 0.1 * 2 ))) * 0.5; } if( IsArmored() ) { retval += 0.5; From 86a38dd8d3bb6a538ae8b59a15642f28d277dfb1 Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 29 Jan 2023 20:12:38 -0700 Subject: [PATCH 26/28] Clear Supercharger and VTOL Booster When the Tech changes or a new vee is created. --- saw/src/main/java/saw/gui/frmVee.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/saw/src/main/java/saw/gui/frmVee.java b/saw/src/main/java/saw/gui/frmVee.java index 4feb8ba4..9a47ed55 100644 --- a/saw/src/main/java/saw/gui/frmVee.java +++ b/saw/src/main/java/saw/gui/frmVee.java @@ -6900,6 +6900,8 @@ private void GetNewVee() { chkDuneBuggy.setSelected(false); chkEnviroSealing.setSelected(false); chkTrailer.setSelected(false); + chkSupercharger.setSelected(false); + chkJetBooster.setSelected(false); if( Omni ) { UnlockGUIFromOmni(); @@ -8352,6 +8354,10 @@ private void cmbTechBaseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-F break; } + //Adding these here for now, since the loadout gets completely trashed, these selections need to go away. + chkSupercharger.setSelected(false); + chkJetBooster.setSelected(false); + // save the current selections. The 'Mech should have already // flushed any illegal equipment in the changeover SaveSelections(); @@ -8396,6 +8402,7 @@ private void cmbTechBaseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-F chkUseTC.setSelected( false ); // now refresh the information panes + RefreshEquipment(); RefreshSummary(); RefreshInfoPane(); SetWeaponChoosers(); From 261b67aeb15c995b4cb19346fa4f8d21d6f1624e Mon Sep 17 00:00:00 2001 From: George Blouin Date: Sun, 29 Jan 2023 20:14:33 -0700 Subject: [PATCH 27/28] Add the same to Wide --- saw/src/main/java/saw/gui/frmVeeWide.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/saw/src/main/java/saw/gui/frmVeeWide.java b/saw/src/main/java/saw/gui/frmVeeWide.java index f20d467d..a59ad649 100644 --- a/saw/src/main/java/saw/gui/frmVeeWide.java +++ b/saw/src/main/java/saw/gui/frmVeeWide.java @@ -6177,6 +6177,9 @@ private void GetNewVee() { chkFullAmph.setSelected(false); chkDuneBuggy.setSelected(false); chkEnviroSealing.setSelected(false); + chkTrailer.setSelected(false); + chkSupercharger.setSelected(false); + chkJetBooster.setSelected(false); if( Omni ) { UnlockGUIFromOmni(); @@ -9522,6 +9525,10 @@ private void cmbTechBaseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-F break; } + //Adding these here for now, since the loadout gets completely trashed, these selections need to go away. + chkSupercharger.setSelected(false); + chkJetBooster.setSelected(false); + // save the current selections. The 'Mech should have already // flushed any illegal equipment in the changeover SaveSelections(); From ea09ef4c4ab37f3948dc4231cd6551f5c8cff5cc Mon Sep 17 00:00:00 2001 From: George Blouin Date: Tue, 31 Jan 2023 12:43:04 -0700 Subject: [PATCH 28/28] No Booster in Omni pods + Clear Use flags Cannot add booster to an omni pod. When you change tech it clears the flags so that you don't have to click, unclick, and re-click to add. --- saw/src/main/java/saw/gui/frmVee.java | 6 ++++-- saw/src/main/java/saw/gui/frmVeeWide.java | 6 ++++-- sswlib/src/main/java/components/CVLoadout.java | 2 ++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/saw/src/main/java/saw/gui/frmVee.java b/saw/src/main/java/saw/gui/frmVee.java index 9a47ed55..e87aaafc 100644 --- a/saw/src/main/java/saw/gui/frmVee.java +++ b/saw/src/main/java/saw/gui/frmVee.java @@ -7129,7 +7129,7 @@ private void RefreshEquipment() { } else { chkSupercharger.setEnabled( false ); } - if( CurVee.IsVTOL() && CommonTools.IsAllowed( CurVee.GetLoadout().GetVTOLBooster().GetAvailability(), CurVee ) ) { + if( CurVee.IsVTOL() && CommonTools.IsAllowed( CurVee.GetLoadout().GetVTOLBooster().GetAvailability(), CurVee ) && !CurVee.IsOmni()) { chkJetBooster.setEnabled( true ); } else { chkJetBooster.setEnabled( false ); @@ -7304,6 +7304,7 @@ private void UnlockGUIFromOmni() { chkYearRestrict.setEnabled( true ); //chkBSPFD.setEnabled( true ); chkSupercharger.setEnabled( true ); + chkJetBooster.setEnabled(true); chkEnviroSealing.setEnabled( false ); // now enable the Omni controls cmbOmniVariant.setSelectedItem(""); @@ -8576,7 +8577,7 @@ private void CheckEquipment() { } private void LockGUIForOmni() { - // this locks most of the GUI controls. Used mainly by Omnimechs. + // this locks most of the GUI controls. Used mainly by OmniVehicles. isLocked = true; chkOmniVee.setSelected( true ); @@ -8601,6 +8602,7 @@ private void LockGUIForOmni() { btnLockChassis.setEnabled( false ); chkYearRestrict.setEnabled( false ); chkTrailer.setEnabled( false ); + chkJetBooster.setEnabled(false); if( CurVee.GetBaseLoadout().GetJumpJets().GetNumJJ() > 0 ) { //cmbJumpJetType.setEnabled( false ); } diff --git a/saw/src/main/java/saw/gui/frmVeeWide.java b/saw/src/main/java/saw/gui/frmVeeWide.java index a59ad649..ec56bb07 100644 --- a/saw/src/main/java/saw/gui/frmVeeWide.java +++ b/saw/src/main/java/saw/gui/frmVeeWide.java @@ -6407,7 +6407,7 @@ private void RefreshEquipment() { } else { chkSupercharger.setEnabled( false ); } - if( CurVee.IsVTOL() && CommonTools.IsAllowed( CurVee.GetLoadout().GetVTOLBooster().GetAvailability(), CurVee ) ) { + if( CurVee.IsVTOL() && CommonTools.IsAllowed( CurVee.GetLoadout().GetVTOLBooster().GetAvailability(), CurVee ) && !CurVee.isOmni() ) { chkJetBooster.setEnabled( true ); } else { chkJetBooster.setEnabled( false ); @@ -6578,6 +6578,7 @@ private void UnlockGUIFromOmni() { chkYearRestrict.setEnabled( true ); //chkBSPFD.setEnabled( true ); chkSupercharger.setEnabled( true ); + chkJetBooster.setEnabled(true); chkEnviroSealing.setEnabled( false ); // now enable the Omni controls cmbOmniVariant.setEnabled( false ); @@ -6847,7 +6848,7 @@ private void CheckEquipment() { } private void LockGUIForOmni() { - // this locks most of the GUI controls. Used mainly by Omnimechs. + // this locks most of the GUI controls. Used mainly by OmniVehichles. isLocked = true; chkOmniVee.setSelected( true ); @@ -6888,6 +6889,7 @@ private void LockGUIForOmni() { chkFractional.setEnabled( false ); chkEnviroSealing.setEnabled( false ); + chkJetBooster.setEnabled(false); if( CurVee.GetBaseLoadout().HasSupercharger() ) { chkSupercharger.setEnabled( false ); } diff --git a/sswlib/src/main/java/components/CVLoadout.java b/sswlib/src/main/java/components/CVLoadout.java index 0eeb3a37..e9481daf 100644 --- a/sswlib/src/main/java/components/CVLoadout.java +++ b/sswlib/src/main/java/components/CVLoadout.java @@ -260,6 +260,8 @@ public void FullUnallocate() { public void ClearLoadout() { FullUnallocate(); + UsingSupercharger = false; + UsingVTOLBooster = false; Owner.SetChanged( true ); }