Battle & ship code cleanup: Switch to playerNr instead of GOOD_GUY/BAD_GUY in ship status code
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@3266 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
+2
-2
@@ -894,7 +894,7 @@ DrawMeleeShipStrings (MELEE_STATE *pMS, BYTE NewStarShip)
|
|||||||
RECT r;
|
RECT r;
|
||||||
TEXT t;
|
TEXT t;
|
||||||
|
|
||||||
ClearShipStatus (BAD_GUY_YOFFS);
|
ClearShipStatus (0);
|
||||||
SetContextFont (StarConFont);
|
SetContextFont (StarConFont);
|
||||||
r.corner.x = 3;
|
r.corner.x = 3;
|
||||||
r.corner.y = 4;
|
r.corner.y = 4;
|
||||||
@@ -931,7 +931,7 @@ DrawMeleeShipStrings (MELEE_STATE *pMS, BYTE NewStarShip)
|
|||||||
hMasterShip = GetStarShipFromIndex (&master_q, NewStarShip);
|
hMasterShip = GetStarShipFromIndex (&master_q, NewStarShip);
|
||||||
MasterPtr = LockMasterShip (&master_q, hMasterShip);
|
MasterPtr = LockMasterShip (&master_q, hMasterShip);
|
||||||
|
|
||||||
InitShipStatus (&MasterPtr->ShipInfo, ~0, NULL);
|
InitShipStatus (&MasterPtr->ShipInfo, NULL, NULL);
|
||||||
|
|
||||||
UnlockMasterShip (&master_q, hMasterShip);
|
UnlockMasterShip (&master_q, hMasterShip);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#include "init.h"
|
#include "init.h"
|
||||||
#include "intel.h"
|
#include "intel.h"
|
||||||
|
#include "status.h"
|
||||||
#include "resinst.h"
|
#include "resinst.h"
|
||||||
#include "sounds.h"
|
#include "sounds.h"
|
||||||
#include "libs/compiler.h"
|
#include "libs/compiler.h"
|
||||||
@@ -219,6 +220,7 @@ InitKernel (void)
|
|||||||
if (MenuSounds == 0)
|
if (MenuSounds == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
InitStatusOffsets ();
|
||||||
InitSpace ();
|
InitSpace ();
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|||||||
+4
-3
@@ -160,10 +160,12 @@ ship_preprocess (ELEMENT *ElementPtr)
|
|||||||
StarShipPtr->cur_status_flags
|
StarShipPtr->cur_status_flags
|
||||||
& ~(LEFT | RIGHT | THRUST | WEAPON | SPECIAL);
|
& ~(LEFT | RIGHT | THRUST | WEAPON | SPECIAL);
|
||||||
if (!(ElementPtr->state_flags & APPEARING))
|
if (!(ElementPtr->state_flags & APPEARING))
|
||||||
|
{
|
||||||
cur_status_flags |= StarShipPtr->ship_input_state
|
cur_status_flags |= StarShipPtr->ship_input_state
|
||||||
& (LEFT | RIGHT | THRUST | WEAPON | SPECIAL);
|
& (LEFT | RIGHT | THRUST | WEAPON | SPECIAL);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{ // Preprocessing for the first time
|
||||||
ElementPtr->crew_level = RDPtr->ship_info.crew_level;
|
ElementPtr->crew_level = RDPtr->ship_info.crew_level;
|
||||||
|
|
||||||
if ((ElementPtr->state_flags & BAD_GUY)
|
if ((ElementPtr->state_flags & BAD_GUY)
|
||||||
@@ -184,8 +186,7 @@ ship_preprocess (ELEMENT *ElementPtr)
|
|||||||
{
|
{
|
||||||
CONTEXT OldContext;
|
CONTEXT OldContext;
|
||||||
|
|
||||||
InitShipStatus (&RDPtr->ship_info,
|
InitShipStatus (&RDPtr->ship_info, StarShipPtr, NULL);
|
||||||
StarShipPtr->captains_name_index, NULL);
|
|
||||||
OldContext = SetContext (StatusContext);
|
OldContext = SetContext (StatusContext);
|
||||||
DrawCaptainsWindow (StarShipPtr);
|
DrawCaptainsWindow (StarShipPtr);
|
||||||
SetContext (OldContext);
|
SetContext (OldContext);
|
||||||
|
|||||||
+23
-24
@@ -133,18 +133,17 @@ OutlineShipStatus (COORD y)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
InitShipStatus (SHIP_INFO *SIPtr, BYTE captains_name_index, RECT *pClipRect)
|
InitShipStatus (SHIP_INFO *SIPtr, STARSHIP *StarShipPtr, RECT *pClipRect)
|
||||||
{
|
{
|
||||||
RECT r;
|
RECT r;
|
||||||
COORD y, y_stat;
|
COORD y = 0; // default, for Melee menu
|
||||||
STAMP Stamp;
|
STAMP Stamp;
|
||||||
CONTEXT OldContext;
|
CONTEXT OldContext;
|
||||||
|
|
||||||
y_stat = (SIPtr->ship_flags & GOOD_GUY) ?
|
if (StarShipPtr) // set during battle
|
||||||
GOOD_GUY_YOFFS : BAD_GUY_YOFFS;
|
y = status_y_offsets[StarShipPtr->playerNr];
|
||||||
|
|
||||||
OldContext = SetContext (StatusContext);
|
OldContext = SetContext (StatusContext);
|
||||||
y = y_stat;
|
|
||||||
if (pClipRect)
|
if (pClipRect)
|
||||||
{
|
{
|
||||||
GetContextClipRect (&r);
|
GetContextClipRect (&r);
|
||||||
@@ -225,8 +224,9 @@ InitShipStatus (SHIP_INFO *SIPtr, BYTE captains_name_index, RECT *pClipRect)
|
|||||||
DrawFilledRectangle (&r);
|
DrawFilledRectangle (&r);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (captains_name_index)
|
if (!StarShipPtr || StarShipPtr->captains_name_index)
|
||||||
{
|
{ // Any regular ship. SIS and Sa-Matra are separate.
|
||||||
|
// This includes Melee menu.
|
||||||
STRING locString;
|
STRING locString;
|
||||||
|
|
||||||
DrawCrewFuelString (y, 0);
|
DrawCrewFuelString (y, 0);
|
||||||
@@ -234,7 +234,7 @@ InitShipStatus (SHIP_INFO *SIPtr, BYTE captains_name_index, RECT *pClipRect)
|
|||||||
locString = SetAbsStringTableIndex (SIPtr->race_strings, 1);
|
locString = SetAbsStringTableIndex (SIPtr->race_strings, 1);
|
||||||
DrawShipNameString (
|
DrawShipNameString (
|
||||||
(UNICODE *)GetStringAddress (locString),
|
(UNICODE *)GetStringAddress (locString),
|
||||||
GetStringLength (locString),y);
|
GetStringLength (locString), y);
|
||||||
|
|
||||||
{
|
{
|
||||||
UNICODE buf[30];
|
UNICODE buf[30];
|
||||||
@@ -243,8 +243,8 @@ InitShipStatus (SHIP_INFO *SIPtr, BYTE captains_name_index, RECT *pClipRect)
|
|||||||
|
|
||||||
OldFont = SetContextFont (TinyFont);
|
OldFont = SetContextFont (TinyFont);
|
||||||
|
|
||||||
if (!(GLOBAL (CurrentActivity) & IN_BATTLE))
|
if (!StarShipPtr)
|
||||||
{
|
{ // In Melee menu
|
||||||
sprintf (buf, "%d", SIPtr->ship_cost);
|
sprintf (buf, "%d", SIPtr->ship_cost);
|
||||||
Text.pStr = buf;
|
Text.pStr = buf;
|
||||||
Text.CharCount = (COUNT)~0;
|
Text.CharCount = (COUNT)~0;
|
||||||
@@ -252,7 +252,7 @@ InitShipStatus (SHIP_INFO *SIPtr, BYTE captains_name_index, RECT *pClipRect)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
locString = SetAbsStringTableIndex (SIPtr->race_strings,
|
locString = SetAbsStringTableIndex (SIPtr->race_strings,
|
||||||
captains_name_index);
|
StarShipPtr->captains_name_index);
|
||||||
Text.pStr = (UNICODE *)GetStringAddress (locString);
|
Text.pStr = (UNICODE *)GetStringAddress (locString);
|
||||||
Text.CharCount = GetStringLength (locString);
|
Text.CharCount = GetStringLength (locString);
|
||||||
}
|
}
|
||||||
@@ -267,13 +267,10 @@ InitShipStatus (SHIP_INFO *SIPtr, BYTE captains_name_index, RECT *pClipRect)
|
|||||||
SetContextFont (OldFont);
|
SetContextFont (OldFont);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else /* if (captains_name_index == 0) */
|
else if (StarShipPtr->playerNr == 0)
|
||||||
{ /* Only SIS or Sa-Matra */
|
{ // This is SIS
|
||||||
if (SIPtr->ship_flags & GOOD_GUY)
|
DrawCrewFuelString (y, 0);
|
||||||
{
|
DrawShipNameString (GLOBAL_SIS (ShipName), (COUNT)~0, y);
|
||||||
DrawCrewFuelString (y, 0);
|
|
||||||
DrawShipNameString (GLOBAL_SIS (ShipName), (COUNT)~0, y);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -281,8 +278,10 @@ InitShipStatus (SHIP_INFO *SIPtr, BYTE captains_name_index, RECT *pClipRect)
|
|||||||
|
|
||||||
crew_delta = SIPtr->crew_level;
|
crew_delta = SIPtr->crew_level;
|
||||||
energy_delta = SIPtr->energy_level;
|
energy_delta = SIPtr->energy_level;
|
||||||
SIPtr->crew_level = SIPtr->energy_level = 0;
|
// DeltaStatistics() below will add specified values to these
|
||||||
DeltaStatistics (SIPtr, crew_delta, energy_delta);
|
SIPtr->crew_level = 0;
|
||||||
|
SIPtr->energy_level = 0;
|
||||||
|
DeltaStatistics (SIPtr, y, crew_delta, energy_delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
UnbatchGraphics ();
|
UnbatchGraphics ();
|
||||||
@@ -303,7 +302,8 @@ InitShipStatus (SHIP_INFO *SIPtr, BYTE captains_name_index, RECT *pClipRect)
|
|||||||
// Pre: -crew_delta <= ShipInfoPtr->crew_level
|
// Pre: -crew_delta <= ShipInfoPtr->crew_level
|
||||||
// crew_delta <= ShipInfoPtr->max_crew - ShipInfoPtr->crew_level
|
// crew_delta <= ShipInfoPtr->max_crew - ShipInfoPtr->crew_level
|
||||||
void
|
void
|
||||||
DeltaStatistics (SHIP_INFO *ShipInfoPtr, SIZE crew_delta, SIZE energy_delta)
|
DeltaStatistics (SHIP_INFO *ShipInfoPtr, COORD y_offs,
|
||||||
|
SIZE crew_delta, SIZE energy_delta)
|
||||||
{
|
{
|
||||||
COORD x, y;
|
COORD x, y;
|
||||||
RECT r;
|
RECT r;
|
||||||
@@ -312,8 +312,7 @@ DeltaStatistics (SHIP_INFO *ShipInfoPtr, SIZE crew_delta, SIZE energy_delta)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
x = 0;
|
x = 0;
|
||||||
y = GAUGE_YOFFS + ((ShipInfoPtr->ship_flags & GOOD_GUY) ?
|
y = GAUGE_YOFFS + y_offs;
|
||||||
GOOD_GUY_YOFFS : BAD_GUY_YOFFS);
|
|
||||||
|
|
||||||
r.extent.width = UNIT_WIDTH;
|
r.extent.width = UNIT_WIDTH;
|
||||||
r.extent.height = UNIT_HEIGHT;
|
r.extent.height = UNIT_HEIGHT;
|
||||||
@@ -388,7 +387,7 @@ DeltaStatistics (SHIP_INFO *ShipInfoPtr, SIZE crew_delta, SIZE energy_delta)
|
|||||||
{
|
{
|
||||||
// All crew doesn't fit in the graphics; print a number.
|
// All crew doesn't fit in the graphics; print a number.
|
||||||
// Always print a number for the SIS in the full game.
|
// Always print a number for the SIS in the full game.
|
||||||
DrawBattleCrewAmount (ShipInfoPtr);
|
DrawBattleCrewAmount (ShipInfoPtr, y_offs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+81
-77
@@ -23,10 +23,25 @@
|
|||||||
#include "ship.h"
|
#include "ship.h"
|
||||||
#include "setup.h"
|
#include "setup.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
|
#include "init.h"
|
||||||
|
// for NUM_PLAYERS
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
|
COORD status_y_offsets[NUM_PLAYERS];
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
InitStatusOffsets (void)
|
||||||
|
{
|
||||||
|
// XXX: We have to jump through these hoops because GOOD_GUY_YOFFS is
|
||||||
|
// not a constant, contrary to what its' name suggests.
|
||||||
|
status_y_offsets[0] = GOOD_GUY_YOFFS; // bottom player
|
||||||
|
status_y_offsets[1] = BAD_GUY_YOFFS; // top player
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
CaptainsWindow (CAPTAIN_STUFF *CSPtr, COORD y,
|
CaptainsWindow (CAPTAIN_STUFF *CSPtr, COORD y,
|
||||||
STATUS_FLAGS delta_status_flags, STATUS_FLAGS cur_status_flags,
|
STATUS_FLAGS delta_status_flags, STATUS_FLAGS cur_status_flags,
|
||||||
@@ -115,7 +130,7 @@ CaptainsWindow (CAPTAIN_STUFF *CSPtr, COORD y,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
DrawBattleCrewAmount (SHIP_INFO *ShipInfoPtr)
|
DrawBattleCrewAmount (SHIP_INFO *ShipInfoPtr, COORD y_offs)
|
||||||
{
|
{
|
||||||
#define MAX_CREW_DIGITS 3
|
#define MAX_CREW_DIGITS 3
|
||||||
RECT r;
|
RECT r;
|
||||||
@@ -125,9 +140,7 @@ DrawBattleCrewAmount (SHIP_INFO *ShipInfoPtr)
|
|||||||
t.baseline.x = BATTLE_CREW_X + 2;
|
t.baseline.x = BATTLE_CREW_X + 2;
|
||||||
if (optWhichMenu == OPT_PC)
|
if (optWhichMenu == OPT_PC)
|
||||||
t.baseline.x -= 8;
|
t.baseline.x -= 8;
|
||||||
t.baseline.y = BATTLE_CREW_Y +
|
t.baseline.y = BATTLE_CREW_Y + y_offs;
|
||||||
((ShipInfoPtr->ship_flags & GOOD_GUY) ?
|
|
||||||
GOOD_GUY_YOFFS : BAD_GUY_YOFFS);
|
|
||||||
t.align = ALIGN_LEFT;
|
t.align = ALIGN_LEFT;
|
||||||
t.pStr = buf;
|
t.pStr = buf;
|
||||||
t.CharCount = (COUNT)~0;
|
t.CharCount = (COUNT)~0;
|
||||||
@@ -150,7 +163,8 @@ DrawBattleCrewAmount (SHIP_INFO *ShipInfoPtr)
|
|||||||
void
|
void
|
||||||
DrawCaptainsWindow (STARSHIP *StarShipPtr)
|
DrawCaptainsWindow (STARSHIP *StarShipPtr)
|
||||||
{
|
{
|
||||||
COORD y, y_offs;
|
COORD y;
|
||||||
|
COORD y_offs;
|
||||||
RECT r;
|
RECT r;
|
||||||
STAMP s;
|
STAMP s;
|
||||||
FRAME Frame;
|
FRAME Frame;
|
||||||
@@ -174,23 +188,20 @@ DrawCaptainsWindow (STARSHIP *StarShipPtr)
|
|||||||
|
|
||||||
BatchGraphics ();
|
BatchGraphics ();
|
||||||
|
|
||||||
y_offs = CAPTAIN_YOFFS
|
y_offs = status_y_offsets[StarShipPtr->playerNr];
|
||||||
+ ((RDPtr->ship_info.ship_flags & GOOD_GUY) ?
|
|
||||||
GOOD_GUY_YOFFS : BAD_GUY_YOFFS);
|
|
||||||
r.corner.x = CAPTAIN_XOFFS - 2;
|
r.corner.x = CAPTAIN_XOFFS - 2;
|
||||||
r.corner.y = y_offs - 4;
|
r.corner.y = y_offs + SHIP_INFO_HEIGHT;
|
||||||
r.extent.width = STATUS_WIDTH - CAPTAIN_XOFFS;
|
r.extent.width = STATUS_WIDTH - CAPTAIN_XOFFS;
|
||||||
r.extent.height = SHIP_STATUS_HEIGHT - CAPTAIN_YOFFS + 2;
|
r.extent.height = SHIP_STATUS_HEIGHT - CAPTAIN_YOFFS + 2;
|
||||||
SetContextForeGroundColor (
|
SetContextForeGroundColor (
|
||||||
BUILD_COLOR (MAKE_RGB15 (0x0A, 0x0A, 0x0A), 0x08));
|
BUILD_COLOR (MAKE_RGB15 (0x0A, 0x0A, 0x0A), 0x08));
|
||||||
DrawFilledRectangle (&r);
|
DrawFilledRectangle (&r);
|
||||||
|
|
||||||
y = y_offs - CAPTAIN_YOFFS;
|
|
||||||
|
|
||||||
SetContextForeGroundColor (
|
SetContextForeGroundColor (
|
||||||
BUILD_COLOR (MAKE_RGB15 (0x08, 0x08, 0x08), 0x1F));
|
BUILD_COLOR (MAKE_RGB15 (0x08, 0x08, 0x08), 0x1F));
|
||||||
r.corner.x = 1;
|
r.corner.x = 1;
|
||||||
r.corner.y = SHIP_INFO_HEIGHT + y;
|
r.corner.y = y_offs + SHIP_INFO_HEIGHT;
|
||||||
r.extent.width = 1;
|
r.extent.width = 1;
|
||||||
r.extent.height = (SHIP_STATUS_HEIGHT - SHIP_INFO_HEIGHT - 2);
|
r.extent.height = (SHIP_STATUS_HEIGHT - SHIP_INFO_HEIGHT - 2);
|
||||||
DrawFilledRectangle (&r);
|
DrawFilledRectangle (&r);
|
||||||
@@ -201,7 +212,7 @@ DrawCaptainsWindow (STARSHIP *StarShipPtr)
|
|||||||
SetContextForeGroundColor (
|
SetContextForeGroundColor (
|
||||||
BUILD_COLOR (MAKE_RGB15 (0x10, 0x10, 0x10), 0x19));
|
BUILD_COLOR (MAKE_RGB15 (0x10, 0x10, 0x10), 0x19));
|
||||||
r.corner.x = STATUS_WIDTH - 1;
|
r.corner.x = STATUS_WIDTH - 1;
|
||||||
r.corner.y = SHIP_INFO_HEIGHT + y;
|
r.corner.y = y_offs + SHIP_INFO_HEIGHT;
|
||||||
r.extent.width = 1;
|
r.extent.width = 1;
|
||||||
r.extent.height = SHIP_STATUS_HEIGHT - SHIP_INFO_HEIGHT;
|
r.extent.height = SHIP_STATUS_HEIGHT - SHIP_INFO_HEIGHT;
|
||||||
DrawFilledRectangle (&r);
|
DrawFilledRectangle (&r);
|
||||||
@@ -209,7 +220,7 @@ DrawCaptainsWindow (STARSHIP *StarShipPtr)
|
|||||||
DrawFilledRectangle (&r);
|
DrawFilledRectangle (&r);
|
||||||
r.corner.x = 1;
|
r.corner.x = 1;
|
||||||
r.extent.width = STATUS_WIDTH - 2;
|
r.extent.width = STATUS_WIDTH - 2;
|
||||||
r.corner.y = (SHIP_STATUS_HEIGHT - 2) + y;
|
r.corner.y = y_offs + (SHIP_STATUS_HEIGHT - 2);
|
||||||
r.extent.height = 1;
|
r.extent.height = 1;
|
||||||
DrawFilledRectangle (&r);
|
DrawFilledRectangle (&r);
|
||||||
r.corner.x = 0;
|
r.corner.x = 0;
|
||||||
@@ -217,63 +228,59 @@ DrawCaptainsWindow (STARSHIP *StarShipPtr)
|
|||||||
++r.corner.y;
|
++r.corner.y;
|
||||||
DrawFilledRectangle (&r);
|
DrawFilledRectangle (&r);
|
||||||
|
|
||||||
{
|
y = y_offs + CAPTAIN_YOFFS;
|
||||||
|
|
||||||
|
SetContextForeGroundColor (
|
||||||
|
BUILD_COLOR (MAKE_RGB15 (0x08, 0x08, 0x08), 0x1F));
|
||||||
|
r.corner.x = 59;
|
||||||
|
r.corner.y = y;
|
||||||
|
r.extent.width = 1;
|
||||||
|
r.extent.height = 30;
|
||||||
|
DrawFilledRectangle (&r);
|
||||||
|
r.corner.x = 3;
|
||||||
|
r.corner.y += 30;
|
||||||
|
r.extent.width = 57;
|
||||||
|
r.extent.height = 1;
|
||||||
|
DrawFilledRectangle (&r);
|
||||||
|
|
||||||
|
SetContextForeGroundColor (
|
||||||
|
BUILD_COLOR (MAKE_RGB15 (0x10, 0x10, 0x10), 0x19));
|
||||||
|
r.corner.x = 3;
|
||||||
|
r.extent.width = 57;
|
||||||
|
r.corner.y = y - 1;
|
||||||
|
r.extent.height = 1;
|
||||||
|
DrawFilledRectangle (&r);
|
||||||
|
r.corner.x = 3;
|
||||||
|
r.extent.width = 1;
|
||||||
|
r.corner.y = y;
|
||||||
|
r.extent.height = 30;
|
||||||
|
DrawFilledRectangle (&r);
|
||||||
|
|
||||||
|
s.frame = RDPtr->ship_data.captain_control.background;
|
||||||
|
s.origin.x = CAPTAIN_XOFFS;
|
||||||
|
s.origin.y = y;
|
||||||
|
DrawStamp (&s);
|
||||||
|
|
||||||
|
if (StarShipPtr->captains_name_index == 0 && StarShipPtr->playerNr == 0)
|
||||||
|
{ // This is SIS
|
||||||
|
TEXT t;
|
||||||
|
|
||||||
|
t.baseline.x = STATUS_WIDTH >> 1;
|
||||||
|
t.baseline.y = y + 6;
|
||||||
|
t.align = ALIGN_CENTER;
|
||||||
|
t.pStr = GLOBAL_SIS (CommanderName);
|
||||||
|
t.CharCount = (COUNT)~0;
|
||||||
SetContextForeGroundColor (
|
SetContextForeGroundColor (
|
||||||
BUILD_COLOR (MAKE_RGB15 (0x08, 0x08, 0x08), 0x1F));
|
BUILD_COLOR (MAKE_RGB15 (0x00, 0x14, 0x00), 0x02));
|
||||||
r.corner.x = 59;
|
SetContextFont (TinyFont);
|
||||||
r.corner.y = y_offs;
|
font_DrawText (&t);
|
||||||
r.extent.width = 1;
|
|
||||||
r.extent.height = 30;
|
|
||||||
DrawFilledRectangle (&r);
|
|
||||||
r.corner.x = 3;
|
|
||||||
r.corner.y += 30;
|
|
||||||
r.extent.width = 57;
|
|
||||||
r.extent.height = 1;
|
|
||||||
DrawFilledRectangle (&r);
|
|
||||||
|
|
||||||
SetContextForeGroundColor (
|
|
||||||
BUILD_COLOR (MAKE_RGB15 (0x10, 0x10, 0x10), 0x19));
|
|
||||||
r.corner.x = 3;
|
|
||||||
r.extent.width = 57;
|
|
||||||
r.corner.y = y_offs - 1;
|
|
||||||
r.extent.height = 1;
|
|
||||||
DrawFilledRectangle (&r);
|
|
||||||
r.corner.x = 3;
|
|
||||||
r.extent.width = 1;
|
|
||||||
r.corner.y = y_offs;
|
|
||||||
r.extent.height = 30;
|
|
||||||
DrawFilledRectangle (&r);
|
|
||||||
|
|
||||||
s.frame = RDPtr->ship_data.captain_control.background;
|
|
||||||
s.origin.x = CAPTAIN_XOFFS;
|
|
||||||
s.origin.y = y_offs;
|
|
||||||
DrawStamp (&s);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (StarShipPtr->captains_name_index == 0)
|
|
||||||
{
|
|
||||||
if (RDPtr->ship_info.ship_flags & GOOD_GUY)
|
|
||||||
{
|
|
||||||
// SIS
|
|
||||||
TEXT t;
|
|
||||||
|
|
||||||
t.baseline.x = STATUS_WIDTH >> 1;
|
|
||||||
t.baseline.y = y_offs + 6;
|
|
||||||
t.align = ALIGN_CENTER;
|
|
||||||
t.pStr = GLOBAL_SIS (CommanderName);
|
|
||||||
t.CharCount = (COUNT)~0;
|
|
||||||
SetContextForeGroundColor (
|
|
||||||
BUILD_COLOR (MAKE_RGB15 (0x00, 0x14, 0x00), 0x02));
|
|
||||||
SetContextFont (TinyFont);
|
|
||||||
font_DrawText (&t);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (RDPtr->ship_info.max_crew > MAX_CREW_SIZE ||
|
if (RDPtr->ship_info.max_crew > MAX_CREW_SIZE ||
|
||||||
RDPtr->ship_info.ship_flags & PLAYER_CAPTAIN)
|
RDPtr->ship_info.ship_flags & PLAYER_CAPTAIN)
|
||||||
{
|
{
|
||||||
// All crew doesn't fit in the graphics; print a number.
|
// All crew doesn't fit in the graphics; print a number.
|
||||||
// Always print a number for the SIS in the full game.
|
// Always print a number for the SIS in the full game.
|
||||||
DrawBattleCrewAmount (&RDPtr->ship_info);
|
DrawBattleCrewAmount (&RDPtr->ship_info, y_offs);
|
||||||
}
|
}
|
||||||
|
|
||||||
UnbatchGraphics ();
|
UnbatchGraphics ();
|
||||||
@@ -313,7 +320,8 @@ DeltaEnergy (ELEMENT *ElementPtr, SIZE energy_delta)
|
|||||||
StarShipPtr->energy_counter =
|
StarShipPtr->energy_counter =
|
||||||
StarShipPtr->RaceDescPtr->characteristics.energy_wait;
|
StarShipPtr->RaceDescPtr->characteristics.energy_wait;
|
||||||
|
|
||||||
DeltaStatistics (ShipInfoPtr, 0, energy_delta);
|
DeltaStatistics (ShipInfoPtr, status_y_offsets[StarShipPtr->playerNr],
|
||||||
|
0, energy_delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (retval);
|
return (retval);
|
||||||
@@ -354,7 +362,8 @@ DeltaCrew (ELEMENT *ElementPtr, SIZE crew_delta)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DeltaStatistics (ShipInfoPtr, crew_delta, 0);
|
DeltaStatistics (ShipInfoPtr, status_y_offsets[StarShipPtr->playerNr],
|
||||||
|
crew_delta, 0);
|
||||||
|
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
@@ -365,9 +374,8 @@ PreProcessStatus (ELEMENT *ShipPtr)
|
|||||||
STARSHIP *StarShipPtr;
|
STARSHIP *StarShipPtr;
|
||||||
|
|
||||||
GetElementStarShip (ShipPtr, &StarShipPtr);
|
GetElementStarShip (ShipPtr, &StarShipPtr);
|
||||||
if (StarShipPtr->captains_name_index
|
if (StarShipPtr->captains_name_index || StarShipPtr->playerNr == 0)
|
||||||
|| (StarShipPtr->RaceDescPtr->ship_info.ship_flags & GOOD_GUY))
|
{ // All except Sa-Matra, no captain's window there
|
||||||
{
|
|
||||||
STATUS_FLAGS old_status_flags, cur_status_flags;
|
STATUS_FLAGS old_status_flags, cur_status_flags;
|
||||||
CAPTAIN_STUFF *CSPtr;
|
CAPTAIN_STUFF *CSPtr;
|
||||||
|
|
||||||
@@ -379,9 +387,7 @@ PreProcessStatus (ELEMENT *ShipPtr)
|
|||||||
old_status_flags &= (LEFT | RIGHT | THRUST | WEAPON | SPECIAL);
|
old_status_flags &= (LEFT | RIGHT | THRUST | WEAPON | SPECIAL);
|
||||||
if (old_status_flags)
|
if (old_status_flags)
|
||||||
{
|
{
|
||||||
CaptainsWindow (CSPtr,
|
CaptainsWindow (CSPtr, status_y_offsets[StarShipPtr->playerNr],
|
||||||
(StarShipPtr->RaceDescPtr->ship_info.ship_flags & GOOD_GUY) ?
|
|
||||||
GOOD_GUY_YOFFS : BAD_GUY_YOFFS,
|
|
||||||
old_status_flags, cur_status_flags, 1);
|
old_status_flags, cur_status_flags, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -393,16 +399,14 @@ PostProcessStatus (ELEMENT *ShipPtr)
|
|||||||
STARSHIP *StarShipPtr;
|
STARSHIP *StarShipPtr;
|
||||||
|
|
||||||
GetElementStarShip (ShipPtr, &StarShipPtr);
|
GetElementStarShip (ShipPtr, &StarShipPtr);
|
||||||
if (StarShipPtr->captains_name_index
|
if (StarShipPtr->captains_name_index || StarShipPtr->playerNr == 0)
|
||||||
|| (StarShipPtr->RaceDescPtr->ship_info.ship_flags & GOOD_GUY))
|
{ // All except Sa-Matra, no captain's window there
|
||||||
{
|
|
||||||
COORD y;
|
COORD y;
|
||||||
STATUS_FLAGS cur_status_flags, old_status_flags;
|
STATUS_FLAGS cur_status_flags, old_status_flags;
|
||||||
|
|
||||||
cur_status_flags = StarShipPtr->cur_status_flags;
|
cur_status_flags = StarShipPtr->cur_status_flags;
|
||||||
|
|
||||||
y = (StarShipPtr->RaceDescPtr->ship_info.ship_flags & GOOD_GUY) ?
|
y = status_y_offsets[StarShipPtr->playerNr];
|
||||||
GOOD_GUY_YOFFS : BAD_GUY_YOFFS;
|
|
||||||
|
|
||||||
if (ShipPtr->crew_level == 0)
|
if (ShipPtr->crew_level == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -43,14 +43,19 @@
|
|||||||
#define BATTLE_CREW_X 10
|
#define BATTLE_CREW_X 10
|
||||||
#define BATTLE_CREW_Y (64 - SAFE_Y)
|
#define BATTLE_CREW_Y (64 - SAFE_Y)
|
||||||
|
|
||||||
|
extern COORD status_y_offsets[];
|
||||||
|
|
||||||
|
extern void InitStatusOffsets (void);
|
||||||
|
|
||||||
extern void DrawCrewFuelString (COORD y, SIZE state);
|
extern void DrawCrewFuelString (COORD y, SIZE state);
|
||||||
extern void ClearShipStatus (COORD y);
|
extern void ClearShipStatus (COORD y);
|
||||||
extern void OutlineShipStatus (COORD y);
|
extern void OutlineShipStatus (COORD y);
|
||||||
extern void InitShipStatus (SHIP_INFO *ShipInfoPtr, BYTE captains_name_index,
|
extern void InitShipStatus (SHIP_INFO *ShipInfoPtr, STARSHIP *StarShipPtr,
|
||||||
RECT *pClipRect);
|
RECT *pClipRect);
|
||||||
extern void DeltaStatistics (SHIP_INFO *ShipInfoPtr, SIZE crew_delta,
|
// StarShipPtr or pClipRect can be NULL
|
||||||
SIZE energy_delta);
|
extern void DeltaStatistics (SHIP_INFO *ShipInfoPtr, COORD y_offs,
|
||||||
extern void DrawBattleCrewAmount (SHIP_INFO *ShipInfoPtr);
|
SIZE crew_delta, SIZE energy_delta);
|
||||||
|
extern void DrawBattleCrewAmount (SHIP_INFO *ShipInfoPtr, COORD y_offs);
|
||||||
|
|
||||||
extern void DrawCaptainsWindow (STARSHIP *StarShipPtr);
|
extern void DrawCaptainsWindow (STARSHIP *StarShipPtr);
|
||||||
extern BOOLEAN DeltaEnergy (ELEMENT *ElementPtr, SIZE energy_delta);
|
extern BOOLEAN DeltaEnergy (ELEMENT *ElementPtr, SIZE energy_delta);
|
||||||
|
|||||||
@@ -287,7 +287,7 @@ ModifySilhouette (ELEMENT *ElementPtr, STAMP *modify_stamp,
|
|||||||
or.corner.x += ObjectIntersect.IntersectStamp.origin.x;
|
or.corner.x += ObjectIntersect.IntersectStamp.origin.x;
|
||||||
or.corner.y += ObjectIntersect.IntersectStamp.origin.y;
|
or.corner.y += ObjectIntersect.IntersectStamp.origin.y;
|
||||||
InitShipStatus (&StarShipPtr->RaceDescPtr->ship_info,
|
InitShipStatus (&StarShipPtr->RaceDescPtr->ship_info,
|
||||||
StarShipPtr->captains_name_index, &or);
|
StarShipPtr, &or);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user