From 49bb1703d41fc5205d5e2c5ef2ea2d2960842a6a Mon Sep 17 00:00:00 2001 From: meep-eep Date: Tue, 15 Jun 2004 22:23:30 +0000 Subject: [PATCH] Shipyard "Combat Energy" changed to reflect the recharge rate (bug #522). Also, some cleanups. Thanks and apologies to Nic. git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1384 8092fc87-c524-0410-9efc-e669fe64eaf9 --- sc2/ChangeLog | 2 + sc2/src/sc2code/sis.c | 105 ++++++++++++++++++++++++------------------ 2 files changed, 63 insertions(+), 44 deletions(-) diff --git a/sc2/ChangeLog b/sc2/ChangeLog index 1cc4933cf..ba161a3cc 100644 --- a/sc2/ChangeLog +++ b/sc2/ChangeLog @@ -1,4 +1,6 @@ Changes towards version 0.4: +- Shipyard "Combat Energy" changed to reflect the recharge rate (bug #522). + Also, some cleanups. Thanks and apologies to Nic. - Added lots of debugging functions, SvdB - Cleaned up use of the DEBUG define, SvdB - Talking Pet .txt file corrected to match the .ogg files, diff --git a/sc2/src/sc2code/sis.c b/sc2/src/sc2code/sis.c index 5a30b391f..136f56e84 100644 --- a/sc2/src/sc2code/sis.c +++ b/sc2/src/sc2code/sis.c @@ -22,6 +22,8 @@ #include "libs/tasklib.h" #include "options.h" +static const UNICODE *describeWeapon (BYTE moduleType); + void RepairSISBorder (void) { @@ -410,51 +412,51 @@ DrawFlagshipStats (void) FONT OldFont; COLOR OldColor; CONTEXT OldContext; - UNICODE buf[60], guns[16][8]; + UNICODE buf[60]; SIZE leading; - BYTE i; - DWORD thrust, turning, dynamo, fuel; + BYTE i; + BYTE energy_regeneration, energy_wait, turn_wait; + COUNT max_thrust; + DWORD fuel; /* collect stats */ - for (i = 0; i < 16; ++i) - wsprintf (guns[i], "none"); - thrust = 40; - turning = 1; - dynamo = 0; - fuel = 1000; +#define ENERGY_REGENERATION 1 +#define ENERGY_WAIT 10 +#define MAX_THRUST 10 +#define TURN_WAIT 17 + energy_regeneration = ENERGY_REGENERATION; + energy_wait = ENERGY_WAIT; + max_thrust = MAX_THRUST; + turn_wait = TURN_WAIT; + fuel = 10 * FUEL_TANK_SCALE; - for (i = 0; i < NUM_MODULE_SLOTS; ++i) + for (i = 0; i < NUM_MODULE_SLOTS; i++) { - if (GLOBAL_SIS (ModuleSlots[i]) == DYNAMO_UNIT - || GLOBAL_SIS (ModuleSlots[i]) == SHIVA_FURNACE) - dynamo += GLOBAL_SIS (ModuleSlots[i]) == DYNAMO_UNIT - ? 30 : 60; - else if (GLOBAL_SIS (ModuleSlots[i]) == FUEL_TANK - || GLOBAL_SIS (ModuleSlots[i]) == HIGHEFF_FUELSYS) - fuel += GLOBAL_SIS (ModuleSlots[i]) == FUEL_TANK - ? FUEL_TANK_CAPACITY : HEFUEL_TANK_CAPACITY; - else if (GLOBAL_SIS (ModuleSlots[i]) >= GUN_WEAPON - && GLOBAL_SIS (ModuleSlots[i]) <= CANNON_WEAPON) - { - if (GLOBAL_SIS (ModuleSlots[i]) == CANNON_WEAPON) - wsprintf (guns[i], "cannon"); - else if (GLOBAL_SIS (ModuleSlots[i]) == BLASTER_WEAPON) - wsprintf (guns[i], "blaster"); - else - wsprintf (guns[i], "gun"); + switch (GLOBAL_SIS (ModuleSlots[i])) { + case FUEL_TANK: + fuel += FUEL_TANK_CAPACITY; + break; + case HIGHEFF_FUELSYS: + fuel += HEFUEL_TANK_CAPACITY; + break; + case DYNAMO_UNIT: + energy_wait -= 2; + if (energy_wait < 4) + energy_wait = 4; + break; + case SHIVA_FURNACE: + energy_regeneration++; + break; } - else if (GLOBAL_SIS (ModuleSlots[i]) >= BOMB_MODULE_0 - && GLOBAL_SIS (ModuleSlots[i]) <= BOMB_MODULE_5) - wsprintf (guns[i], "n/a"); } for (i = 0; i < NUM_DRIVE_SLOTS; ++i) if (GLOBAL_SIS (DriveSlots[i]) == FUSION_THRUSTER) - thrust += 8; + max_thrust += 2; for (i = 0; i < NUM_JET_SLOTS; ++i) if (GLOBAL_SIS (JetSlots[i]) == TURNING_JETS) - turning += 2; + turn_wait -= 2; /* END collect stats */ OldContext = SetContext (SpaceContext); @@ -485,10 +487,6 @@ DrawFlagshipStats (void) BUILD_COLOR_RGBA (0x00, 0x00, 0xC0, 0xFF), BUILD_COLOR_RGBA (0x60, 0x6C, 0xFC, 0xFF)); - /* should we pull these strings out of a resource file, to make the - inevitable "let's translate it into Suomi, Klingon and Esperanto" - project easier? */ - wsprintf (buf, "nose:"); font_DrawText (&t); t.baseline.y += leading; @@ -505,16 +503,16 @@ DrawFlagshipStats (void) t.baseline.y = r.corner.y + leading + 3; t.align = ALIGN_LEFT; - wsprintf (buf, "%-7.7s", guns[15]); + wsprintf (buf, "%-7.7s", describeWeapon (GLOBAL_SIS (ModuleSlots[15]))); font_DrawText (&t); t.baseline.y += leading; - wsprintf (buf, "%-7.7s", guns[14]); + wsprintf (buf, "%-7.7s", describeWeapon (GLOBAL_SIS (ModuleSlots[14]))); font_DrawText (&t); t.baseline.y += leading; - wsprintf (buf, "%-7.7s", guns[13]); + wsprintf (buf, "%-7.7s", describeWeapon (GLOBAL_SIS (ModuleSlots[13]))); font_DrawText (&t); t.baseline.y += leading; - wsprintf (buf, "%-7.7s", guns[0]); + wsprintf (buf, "%-7.7s", describeWeapon (GLOBAL_SIS (ModuleSlots[0]))); font_DrawText (&t); t.baseline.x = r.extent.width - 25; @@ -540,13 +538,13 @@ DrawFlagshipStats (void) t.baseline.x = r.extent.width - 2; t.baseline.y = r.corner.y + leading + 3; - wsprintf (buf, "%4lu", thrust); + wsprintf (buf, "%4u", max_thrust * 4); font_DrawText (&t); t.baseline.y += leading; - wsprintf (buf, "%4lu", turning); + wsprintf (buf, "%4u", 1 + TURN_WAIT - turn_wait); font_DrawText (&t); t.baseline.y += leading; - wsprintf (buf, "%4lu", dynamo); + wsprintf (buf, "%4u", 240 * energy_regeneration / energy_wait); font_DrawText (&t); t.baseline.y += leading; wsprintf (buf, "%4lu", (fuel / FUEL_TANK_SCALE)); @@ -556,8 +554,27 @@ DrawFlagshipStats (void) SetContextForeGroundColor (OldColor); SetContextFont (OldFont); SetContext (OldContext); +} - return; +static const UNICODE * +describeWeapon (BYTE moduleType) { + switch (moduleType) { + case GUN_WEAPON: + return "gun"; + case BLASTER_WEAPON: + return "blaster"; + case CANNON_WEAPON: + return "cannon"; + case BOMB_MODULE_0: + case BOMB_MODULE_1: + case BOMB_MODULE_2: + case BOMB_MODULE_3: + case BOMB_MODULE_4: + case BOMB_MODULE_5: + return "n/a"; + default: + return "none"; + } } void