From: <kla...@us...> - 2016-07-08 07:07:10
|
Revision: 13719 http://sourceforge.net/p/vegastrike/code/13719 Author: klaussfreire Date: 2016-07-08 07:07:07 +0000 (Fri, 08 Jul 2016) Log Message: ----------- Fix upgrade description generation to avoid bogus output with the "recently" introduced splitting of units.csv, which makes a lot of missing fields have default values. Detect no-ops (0 for additive) and defaults, and skip those attributes in the listings. Modified Paths: -------------- trunk/vegastrike/src/cmd/basecomputer.cpp trunk/vegastrike/src/cmd/unit_csv.cpp trunk/vegastrike/src/vs_math.h Modified: trunk/vegastrike/src/cmd/basecomputer.cpp =================================================================== --- trunk/vegastrike/src/cmd/basecomputer.cpp 2016-07-03 07:41:16 UTC (rev 13718) +++ trunk/vegastrike/src/cmd/basecomputer.cpp 2016-07-08 07:07:07 UTC (rev 13719) @@ -440,7 +440,14 @@ } \ while (0) +#define MODIFIES( mode, playerUnit, blankUnit, what ) \ + ( (((playerUnit) -> what) != 0) \ + && ( (mode != 0) || (((playerUnit) -> what) != ((blankUnit) -> what)) ) ) +#define MODIFIES_ALTEMPTY( mode, playerUnit, blankUnit, what, empty ) \ + ( (((playerUnit) -> what) != (empty)) \ + && ( (mode != 0) || (((playerUnit) -> what) != ((blankUnit) -> what)) ) ) + //CONSTRUCTOR. BaseComputer::BaseComputer( Unit *player, Unit *base, const std::vector< DisplayMode > &modes ) : m_displayModes( modes ) @@ -4984,8 +4991,8 @@ break; } } - const Unit::Computer uc = playerUnit->ViewComputerData(); - const Unit::Computer buc = blankUnit->ViewComputerData(); + const Unit::Computer &uc = playerUnit->ViewComputerData(); + const Unit::Computer &buc = blankUnit->ViewComputerData(); if (!mode) { text += "#n##n#"+prefix+"#c0:1:.5#[FLIGHT CHARACTERISTICS]#n##-c"; text += "#n#"+prefix+statcolor+"Turning response: #-c"; @@ -4996,7 +5003,7 @@ if (!mode) { text += conversionBuffer; text += " radians/second^2#n#"+expstatcolor+" (yaw, pitch, roll)#-c"; - } else if (playerUnit->limits.yaw != blankUnit->limits.yaw) { + } else if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.yaw)) { switch (replacement_mode) { case 0: //Replacement or new Module @@ -5025,8 +5032,9 @@ PRETTY_ADDN( substatcolor+" pitch #-c", playerUnit->limits.pitch/(moment), 4 ); PRETTY_ADDN( substatcolor+" roll #-c", playerUnit->limits.roll/(moment), 4 ); text += " radians/second^2"; - } else if (playerUnit->limits.yaw != blankUnit->limits.yaw || playerUnit->limits.pitch != blankUnit->limits.pitch - || playerUnit->limits.roll != blankUnit->limits.roll) { + } else if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.yaw) + || MODIFIES(replacement_mode, playerUnit, blankUnit, limits.pitch) + || MODIFIES(replacement_mode, playerUnit, blankUnit, limits.roll)) { switch (replacement_mode) { case 0: //Replacement or new Module @@ -5078,31 +5086,31 @@ switch (replacement_mode) { case 0: //Replacement or new Module - if (playerUnit->limits.forward != blankUnit->limits.forward) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.forward)) { PRETTY_ADDU( statcolor+"Provides forward thrust rated at: #-c", playerUnit->limits.forward/1000.0, 2, "MegaNewtons" ); } - if (playerUnit->limits.retro != blankUnit->limits.retro) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.retro)) { PRETTY_ADDU( statcolor+"Provides aftward thrust rated at: #-c", playerUnit->limits.retro/1000.0, 2, "MegaNewtons" ); } - if (playerUnit->limits.vertical != blankUnit->limits.vertical) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.vertical)) { PRETTY_ADDU( statcolor+"Provides vertical thrust rated at: #-c", playerUnit->limits.vertical/1000.0, 2, "MegaNewtons" ); } - if (playerUnit->limits.lateral != blankUnit->limits.lateral) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.lateral)) { PRETTY_ADDU( statcolor+"Provides lateral thrust rated at: #-c", playerUnit->limits.lateral/1000.0, 2, "MegaNewtons" ); } - if (playerUnit->limits.afterburn != blankUnit->limits.afterburn) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.afterburn)) { PRETTY_ADDU( statcolor+"Overdrive thrust rated at: #-c", playerUnit->limits.afterburn/1000.0, 2, @@ -5110,31 +5118,31 @@ } break; case 1: //Additive - if (playerUnit->limits.forward != blankUnit->limits.forward) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.forward)) { PRETTY_ADDU( statcolor+"Increases forward thrust rating by: #-c", playerUnit->limits.forward/1000.0, 2, "MegaNewtons" ); } - if (playerUnit->limits.retro != blankUnit->limits.retro) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.retro)) { PRETTY_ADDU( statcolor+"Increases aftward thrust rating by: #-c", playerUnit->limits.retro/1000.0, 2, "MegaNewtons" ); } - if (playerUnit->limits.vertical != blankUnit->limits.vertical) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.vertical)) { PRETTY_ADDU( statcolor+"Increases vertical thrust rating by: #-c", playerUnit->limits.vertical/1000.0, 2, "MegaNewtons" ); } - if (playerUnit->limits.lateral != blankUnit->limits.lateral) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.lateral)) { PRETTY_ADDU( statcolor+"Increases lateral thrust rating by: #-c", playerUnit->limits.lateral/1000.0, 2, "MegaNewtons" ); } - if (playerUnit->limits.afterburn != blankUnit->limits.afterburn) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.afterburn)) { PRETTY_ADDU( statcolor+"Increases overdrive thrust rating by: #-c", playerUnit->limits.afterburn/1000.0, 2, @@ -5142,31 +5150,31 @@ } break; case 2: //multiplicative - if (playerUnit->limits.forward != blankUnit->limits.forward) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.forward)) { PRETTY_ADDU( statcolor+"Increases forward thrust rating by: #-c", (playerUnit->limits.forward-1)*100, 0, "%" ); } - if (playerUnit->limits.retro != blankUnit->limits.retro) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.retro)) { PRETTY_ADDU( statcolor+"Increases aftward thrust rating by: #-c", (playerUnit->limits.retro-1)*100, 0, "%" ); } - if (playerUnit->limits.vertical != blankUnit->limits.vertical) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.vertical)) { PRETTY_ADDU( statcolor+"Increases vertical thrust rating by: #-c", (playerUnit->limits.vertical-1)*100, 0, "%" ); } - if (playerUnit->limits.lateral != blankUnit->limits.lateral) { + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.lateral)) { PRETTY_ADDU( statcolor+"Increases lateral thrust rating by: #-c", (playerUnit->limits.lateral-1)*100, 0, "%" ); } - if (playerUnit->limits.afterburn != blankUnit->limits.afterburn) + if (MODIFIES(replacement_mode, playerUnit, blankUnit, limits.afterburn)) PRETTY_ADDU( statcolor+"Overdrive thrust rating by: #-c", (playerUnit->limits.afterburn-1)*100, 0, "%" ); break; default: //Failure @@ -5184,32 +5192,32 @@ switch (replacement_mode) { case 0: //Replacement or new Module - if ( uc.max_speed() != buc.max_speed() ) { + if ( MODIFIES(replacement_mode, &uc, &buc, max_speed()) ) { PRETTY_ADDU( statcolor+"Sets max combat speed governor to: #-c", uc.max_speed(), 0, "m/s" ); PRETTY_ADDU( statcolor+"Sets max non-combat speed governor to: #-c", uc.max_speed()*non_combat_mode_mult, 0, "m/s" ); } - if ( uc.max_ab_speed() != buc.max_ab_speed() ) + if ( MODIFIES(replacement_mode, &uc, &buc, max_ab_speed()) ) PRETTY_ADDU( statcolor+"Sets max overdrive combat speed governor to: #-c", uc.max_ab_speed(), 0, "m/s" ); break; case 1: //Additive - if ( uc.max_speed() != buc.max_speed() ) { + if ( MODIFIES(replacement_mode, &uc, &buc, max_speed()) ) { PRETTY_ADDU( statcolor+"Increases max combat speed governor setting by: #-c", uc.max_speed(), 0, "m/s" ); PRETTY_ADDU( statcolor+"Increases max non-combat speed governor setting by: #-c", uc.max_speed()*non_combat_mode_mult, 0, "m/s" ); } - if ( uc.max_ab_speed() != buc.max_ab_speed() ) + if ( MODIFIES(replacement_mode, &uc, &buc, max_ab_speed()) ) PRETTY_ADDU( statcolor+"Increases max overdrive combat speed governor setting by: #-c", uc.max_ab_speed(), 0, "m/s" ); break; case 2: //multiplicative - if ( uc.max_speed() != buc.max_speed() ) { + if ( MODIFIES(replacement_mode, &uc, &buc, max_speed()) ) { PRETTY_ADDU( statcolor+"Increases max combat speed governor settings by: #-c", 100.0*(uc.max_speed()-1), 0, "%" ); PRETTY_ADDU( statcolor+"Increases max non-combat speed governor settings by: #-c", 100.0*(uc.max_speed()-1), 0, "%" ); } - if ( uc.max_ab_speed() != buc.max_ab_speed() ) + if ( MODIFIES(replacement_mode, &uc, &buc, max_ab_speed()) ) PRETTY_ADDU( statcolor+"Increases max overdrive combat speed governor settings by: #-c", (uc.max_ab_speed()-1)*100, 0, "%" ); break; @@ -5230,8 +5238,9 @@ PRETTY_ADDU( substatcolor+" - roll: #-c", uc.max_roll_right, 2, "radians/second" ); } text += "#n##n##c0:1:.5#"+prefix+"[TARGETTING SUBSYSTEM]#n##-c"; - } else if (uc.max_yaw_right != buc.max_yaw_right || uc.max_pitch_up != buc.max_pitch_up || uc.max_roll_right - != buc.max_roll_right) { + } else if (MODIFIES(replacement_mode, &uc, &buc, max_yaw_right) + || MODIFIES(replacement_mode, &uc, &buc, max_pitch_up) + || MODIFIES(replacement_mode, &uc, &buc, max_roll_right)) { switch (replacement_mode) { case 0: //Replacement or new Module @@ -5291,7 +5300,9 @@ switch (replacement_mode) { case 0: //Replacement or new Module - if (uc.radar.maxrange != buc.radar.maxrange || uc.radar.maxcone != buc.radar.maxcone) { + if (MODIFIES_ALTEMPTY(replacement_mode, &uc, &buc, radar.maxrange, FLT_MAX) + || MODIFIES_ALTEMPTY(replacement_mode, &uc, &buc, radar.maxcone, VS_PI)) + { PRETTY_ADDU( statcolor+"Tracking range: #-c", uc.radar.maxrange/1000, 0, "km" ); if ( (acos( uc.radar.maxcone )*360/PI) < 359 ) { PRETTY_ADDU( statcolor+"Tracking cone: #-c", acos( uc.radar.maxcone )*2, 2, "radians" ); @@ -5365,13 +5376,13 @@ switch (replacement_mode) { case 0: //Replacement or new Module - if ( playerUnit->EnergyRechargeData() != blankUnit->EnergyRechargeData() ) + if ( MODIFIES(replacement_mode, playerUnit, blankUnit, EnergyRechargeData()) ) PRETTY_ADDU( statcolor+"Installs reactor with recharge rate: #-c", playerUnit->EnergyRechargeData()*RSconverter, 0, "MJ/s" ); - if ( playerUnit->MaxEnergyData() != blankUnit->MaxEnergyData() ) + if ( MODIFIES(replacement_mode, playerUnit, blankUnit, MaxEnergyData()) ) PRETTY_ADDU( statcolor+"Installs main capacitor bank with storage capacity: #-c", (playerUnit->MaxEnergyData()*RSconverter), 0, "MJ" ); - if ( playerUnit->GetWarpEnergy() != blankUnit->GetWarpEnergy() ) + if ( MODIFIES(replacement_mode, playerUnit, blankUnit, GetWarpEnergy()) ) PRETTY_ADDU( statcolor+"Installs warp capacitor bank with storage capacity: #-c", playerUnit->GetWarpEnergy()*RSconverter*Wconv, 0, "MJ" ); if (buj.drive != uj.drive) { @@ -5381,24 +5392,24 @@ } break; case 1: //Additive - if ( playerUnit->EnergyRechargeData() != blankUnit->EnergyRechargeData() ) + if ( MODIFIES(replacement_mode, playerUnit, blankUnit, EnergyRechargeData()) ) PRETTY_ADDU( statcolor+"Increases recharge rate by #-c", playerUnit->EnergyRechargeData()*RSconverter, 0, "MJ/s" ); - if ( playerUnit->MaxEnergyData() != blankUnit->MaxEnergyData() ) + if ( MODIFIES(replacement_mode, playerUnit, blankUnit, MaxEnergyData()) ) PRETTY_ADDU( statcolor+"Adds #-c", (playerUnit->MaxEnergyData()*RSconverter), 0, "MJ of storage to main capacitor banks" ); - if ( playerUnit->GetWarpEnergy() != blankUnit->GetWarpEnergy() ) + if ( MODIFIES(replacement_mode, playerUnit, blankUnit, GetWarpEnergy()) ) PRETTY_ADDU( statcolor+"Adds #-c", playerUnit->GetWarpEnergy()*RSconverter*Wconv, 0, "MJ of storage to warp capacitor bank" ); break; case 2: //multiplicative - if ( playerUnit->EnergyRechargeData() != blankUnit->EnergyRechargeData() ) + if ( MODIFIES(replacement_mode, playerUnit, blankUnit, EnergyRechargeData()) ) PRETTY_ADDU( statcolor+"Increases reactor recharge rate by #-c", 100.0*(playerUnit->EnergyRechargeData()-1), 0, "%" ); - if ( playerUnit->MaxEnergyData() != blankUnit->MaxEnergyData() ) + if ( MODIFIES(replacement_mode, playerUnit, blankUnit, MaxEnergyData()) ) PRETTY_ADDU( statcolor+"Increases main capacitor bank storage by #-c", 100.0*(playerUnit->MaxEnergyData()-1), 0, "%" ); - if ( playerUnit->GetWarpEnergy() != blankUnit->GetWarpEnergy() ) + if ( MODIFIES(replacement_mode, playerUnit, blankUnit, GetWarpEnergy()) ) PRETTY_ADDU( statcolor+"Increases warp capacitor bank storage by #-c", (playerUnit->GetWarpEnergy()-1)*100, 0, "%" ); break; @@ -5411,7 +5422,7 @@ text += "#n##n##c0:1:.5#"+prefix+"[DURABILITY STATISTICS]#n##-c"; text += "#n#"+prefix+statcolor+"Armor damage resistance:#-c"; } - if (mode && playerUnit->armor.frontlefttop != blankUnit->armor.frontlefttop) { + if (mode && MODIFIES(replacement_mode, playerUnit, blankUnit, armor.frontlefttop)) { switch (replacement_mode) { case 0: //Replacement or new Module @@ -5428,7 +5439,7 @@ break; } } - if (!mode || playerUnit->armor.frontrighttop != blankUnit->armor.frontrighttop) { + if (!mode || MODIFIES(replacement_mode, playerUnit, blankUnit, armor.frontrighttop)) { PRETTY_ADDU( substatcolor+" - Fore-starboard-high: #-c", (mode && replacement_mode @@ -5485,7 +5496,7 @@ PRETTY_ADD( " Current condition: ", playerUnit->GetHullPercent()*100, 2 ); text += "% of normal"; } - } else if ( playerUnit->GetHull() != blankUnit->GetHull() ) { + } else if ( MODIFIES(replacement_mode, playerUnit, blankUnit, GetHull()) ) { switch (replacement_mode) { case 0: //Replacement or new Module @@ -5512,9 +5523,9 @@ text += "#n#"+prefix+statcolor+"No shielding. #-c"; } } else if ( playerUnit->shield.number - && ( (playerUnit->shield.shield2fb.frontmax != blankUnit->shield.shield2fb.frontmax) - || (playerUnit->shield.shield4fbrl.frontmax != blankUnit->shield.shield4fbrl.frontmax) - || (playerUnit->shield.shield8.frontrightbottommax != blankUnit->shield.shield8.frontrightbottommax) ) ) { + && ( MODIFIES(replacement_mode, playerUnit, blankUnit, shield.shield2fb.frontmax) + || MODIFIES(replacement_mode, playerUnit, blankUnit, shield.shield4fbrl.frontmax) + || MODIFIES(replacement_mode, playerUnit, blankUnit, shield.shield8.frontrightbottommax) ) ) { switch (replacement_mode) { case 0: //Replacement or new Module @@ -5536,7 +5547,7 @@ case 0: break; case 2: - if (!mode || playerUnit->shield.shield2fb.frontmax != blankUnit->shield.shield2fb.frontmax) { + if (!mode || MODIFIES(replacement_mode, playerUnit, blankUnit, shield.shield2fb.frontmax)) { PRETTY_ADDU( substatcolor+" - fore: #-c", (mode && replacement_mode == 2) ? ( 100.0 @@ -5554,7 +5565,7 @@ } break; case 4: - if (!mode || playerUnit->shield.shield4fbrl.frontmax != blankUnit->shield.shield4fbrl.frontmax) { + if (!mode || MODIFIES(replacement_mode, playerUnit, blankUnit, shield.shield4fbrl.frontmax)) { PRETTY_ADDU( substatcolor+" - fore: #-c", (mode && replacement_mode == 2) ? ( 100.0 @@ -5586,7 +5597,7 @@ } break; case 8: - if (!mode || playerUnit->shield.shield8.frontrightbottommax != blankUnit->shield.shield8.frontrightbottommax) { + if (!mode || MODIFIES(replacement_mode, playerUnit, blankUnit, shield.shield8.frontrightbottommax)) { PRETTY_ADDU( statcolor+" - Fore-starboard-high: #-c", (mode && replacement_mode @@ -5651,7 +5662,7 @@ } if (!mode) { PRETTY_ADDU( statcolor+"Shield protection recharge speed: #-c", playerUnit->shield.recharge*VSDM, 0, "MJ/s" ); - } else if (playerUnit->shield.recharge != blankUnit->shield.recharge) { + } else if (MODIFIES(replacement_mode, playerUnit, blankUnit, shield.recharge)) { switch (replacement_mode) { case 0: //Replacement or new Module @@ -5913,6 +5924,8 @@ showUnitStats( sub, text, subunitlevel+1, 0, item ); } } + //last line sometimes gets lost in the interface + text += "#n#"; } //Show the stats on the player's current ship. Modified: trunk/vegastrike/src/cmd/unit_csv.cpp =================================================================== --- trunk/vegastrike/src/cmd/unit_csv.cpp 2016-07-03 07:41:16 UTC (rev 13718) +++ trunk/vegastrike/src/cmd/unit_csv.cpp 2016-07-08 07:07:07 UTC (rev 13719) @@ -17,7 +17,6 @@ #include <algorithm> #include "lin_time.h" #include "unit_const_cache.h" -#define VS_PI 3.1415926535897931 CSVRow LookupUnitRow( const string &unitname, const string &faction ) { Modified: trunk/vegastrike/src/vs_math.h =================================================================== --- trunk/vegastrike/src/vs_math.h 2016-07-03 07:41:16 UTC (rev 13718) +++ trunk/vegastrike/src/vs_math.h 2016-07-08 07:07:07 UTC (rev 13719) @@ -54,4 +54,6 @@ #define ISNAN( x ) ( _isnan( x ) ) #endif +#define VS_PI 3.1415926535897931 + #endif // _VS_MATH_H_ |