From 812d9b2273699041cd2ec88f0344e4649d4f1a1a Mon Sep 17 00:00:00 2001 From: avolkov Date: Mon, 16 Jul 2007 23:50:31 +0000 Subject: [PATCH] Cleanup of ELEMENT_FLAGS type misuse git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@2813 8092fc87-c524-0410-9efc-e669fe64eaf9 --- sc2/src/sc2code/element.h | 19 ++++++++++++++++++- sc2/src/sc2code/races.h | 19 ++++--------------- sc2/src/sc2code/ship.c | 6 +++--- sc2/src/sc2code/ships/androsyn/androsyn.c | 2 +- sc2/src/sc2code/ships/ilwrath/ilwrath.c | 2 +- sc2/src/sc2code/ships/orz/orz.c | 12 ++++++++++-- sc2/src/sc2code/ships/pkunk/pkunk.c | 15 ++++++++------- sc2/src/sc2code/ships/supox/supox.c | 2 +- sc2/src/sc2code/ships/thradd/thradd.c | 2 +- sc2/src/sc2code/status.c | 9 ++++----- 10 files changed, 51 insertions(+), 37 deletions(-) diff --git a/sc2/src/sc2code/element.h b/sc2/src/sc2code/element.h index 09e1074a1..f04b57505 100644 --- a/sc2/src/sc2code/element.h +++ b/sc2/src/sc2code/element.h @@ -236,7 +236,6 @@ extern void ship_death (ELEMENT *ShipPtr); extern BOOLEAN hyper_transition (ELEMENT *ElementPtr); extern BOOLEAN CalculateGravity (ELEMENT *ElementPtr); -extern UWORD inertial_thrust (ELEMENT *ElementPtr); extern void SetUpElement (ELEMENT *ElementPtr); extern void BattleSong (BOOLEAN DoPlay); @@ -244,5 +243,23 @@ extern void FreeBattleSong (void); extern void InsertPrim (PRIM_LINKS *pLinks, COUNT primIndex, COUNT iPI); + +typedef UWORD STATUS_FLAGS; + +/* STATUS_FLAGS - heat of battle specific flags */ +#define LEFT (1 << 0) +#define RIGHT (1 << 1) +#define THRUST (1 << 2) +#define WEAPON (1 << 3) +#define SPECIAL (1 << 4) +#define LOW_ON_ENERGY (1 << 5) +#define SHIP_BEYOND_MAX_SPEED (1 << 6) +#define SHIP_AT_MAX_SPEED (1 << 7) +#define SHIP_IN_GRAVITY_WELL (1 << 8) +#define PLAY_VICTORY_DITTY (1 << 9) + +extern STATUS_FLAGS inertial_thrust (ELEMENT *ElementPtr); + + #endif /* _ELEMENT_H */ diff --git a/sc2/src/sc2code/races.h b/sc2/src/sc2code/races.h index 99e8b6cd7..e2ecfb889 100644 --- a/sc2/src/sc2code/races.h +++ b/sc2/src/sc2code/races.h @@ -29,19 +29,7 @@ #define RACES_PER_PLAYER 7 #define MAX_SHIPS_PER_SIDE 14 -/* heat of battle specific flags */ -#define LEFT (1 << 0) -#define RIGHT (1 << 1) -#define THRUST (1 << 2) -#define WEAPON (1 << 3) -#define SPECIAL (1 << 4) -#define LOW_ON_ENERGY (1 << 5) -#define SHIP_BEYOND_MAX_SPEED (1 << 6) -#define SHIP_AT_MAX_SPEED (1 << 7) -#define SHIP_IN_GRAVITY_WELL (1 << 8) -#define PLAY_VICTORY_DITTY (1 << 9) - -/* ship specific flags */ +/* SHIP_INFO.ship_flags - ship specific flags */ /* #define GOOD_GUY (1 << 0) #define BAD_GUY (1 << 1) @@ -187,6 +175,7 @@ typedef struct SHIP_BASE_COMMON; } SHIP_BASE; + typedef HLINK HSTARSHIP; typedef struct @@ -219,8 +208,8 @@ typedef struct // In battle: frames left before energy regeneration BYTE ship_input_state; - UWORD cur_status_flags _ALIGNED_ON(sizeof (UWORD)); - UWORD old_status_flags _ALIGNED_ON(sizeof (UWORD)); + STATUS_FLAGS cur_status_flags _ALIGNED_ON(sizeof (STATUS_FLAGS)); + STATUS_FLAGS old_status_flags _ALIGNED_ON(sizeof (STATUS_FLAGS)); HELEMENT hShip _ALIGNED_ON(sizeof (HELEMENT)); COUNT ShipFacing _ALIGNED_ON(sizeof (COUNT)); diff --git a/sc2/src/sc2code/ship.c b/sc2/src/sc2code/ship.c index d44fd1b84..d8c2103c6 100644 --- a/sc2/src/sc2code/ship.c +++ b/sc2/src/sc2code/ship.c @@ -44,7 +44,7 @@ animation_preprocess (ELEMENT *ElementPtr) } -UWORD +STATUS_FLAGS inertial_thrust (ELEMENT *ElementPtr) { #define MAX_ALLOWED_SPEED WORLD_TO_VELOCITY (DISPLAY_TO_WORLD (18)) @@ -141,7 +141,7 @@ inertial_thrust (ELEMENT *ElementPtr) void ship_preprocess (ELEMENT *ElementPtr) { - ELEMENT_FLAGS cur_status_flags; + STATUS_FLAGS cur_status_flags; STARSHIP *StarShipPtr; RACE_DESC *RDPtr; @@ -254,7 +254,7 @@ ship_preprocess (ELEMENT *ElementPtr) --ElementPtr->thrust_wait; else if (cur_status_flags & THRUST) { - UWORD thrust_status; + STATUS_FLAGS thrust_status; thrust_status = inertial_thrust (ElementPtr); StarShipPtr->cur_status_flags &= diff --git a/sc2/src/sc2code/ships/androsyn/androsyn.c b/sc2/src/sc2code/ships/androsyn/androsyn.c index b42ad8390..d2c5ae9bd 100644 --- a/sc2/src/sc2code/ships/androsyn/androsyn.c +++ b/sc2/src/sc2code/ships/androsyn/androsyn.c @@ -375,7 +375,7 @@ static void androsynth_preprocess (ELEMENT *ElementPtr) { STARSHIP *StarShipPtr; - ELEMENT_FLAGS cur_status_flags; + STATUS_FLAGS cur_status_flags; GetElementStarShip (ElementPtr, &StarShipPtr); diff --git a/sc2/src/sc2code/ships/ilwrath/ilwrath.c b/sc2/src/sc2code/ships/ilwrath/ilwrath.c index ac3b2d3f4..ba8fad910 100644 --- a/sc2/src/sc2code/ships/ilwrath/ilwrath.c +++ b/sc2/src/sc2code/ships/ilwrath/ilwrath.c @@ -221,7 +221,7 @@ initialize_flame (ELEMENT *ShipPtr, HELEMENT FlameArray[]) static void ilwrath_preprocess (ELEMENT *ElementPtr) { - ELEMENT_FLAGS status_flags; + STATUS_FLAGS status_flags; STARSHIP *StarShipPtr; PRIMITIVE *lpPrim; diff --git a/sc2/src/sc2code/ships/orz/orz.c b/sc2/src/sc2code/ships/orz/orz.c index 2447dda1a..873a96f5a 100644 --- a/sc2/src/sc2code/ships/orz/orz.c +++ b/sc2/src/sc2code/ships/orz/orz.c @@ -499,6 +499,8 @@ marine_preprocess (ELEMENT *ElementPtr) HELEMENT hObject, hNextObject, hTarget; ELEMENT *ObjectPtr; + // XXX: thrust_wait is abused to store marine speed and + // gravity well flags ElementPtr->thrust_wait &= ~(SHIP_IN_GRAVITY_WELL >> 6); hTarget = 0; @@ -631,14 +633,16 @@ marine_preprocess (ELEMENT *ElementPtr) || ((ElementPtr->thrust_wait & (SHIP_BEYOND_MAX_SPEED >> 6)) && !(ElementPtr->thrust_wait & (SHIP_IN_GRAVITY_WELL >> 6)))) { - UWORD thrust_status; + STATUS_FLAGS thrust_status; COUNT OldFacing; - UWORD OldStatus; + STATUS_FLAGS OldStatus; COUNT OldIncrement, OldThrust; STARSHIP *StarShipPtr; GetElementStarShip (ElementPtr, &StarShipPtr); + // XXX: Hack: abusing the primary STARSHIP struct in order + // to call inertial_thrust() for a marine OldFacing = StarShipPtr->ShipFacing; OldStatus = StarShipPtr->cur_status_flags; OldIncrement = StarShipPtr->RaceDescPtr->characteristics. @@ -646,6 +650,8 @@ marine_preprocess (ELEMENT *ElementPtr) OldThrust = StarShipPtr->RaceDescPtr->characteristics.max_thrust; StarShipPtr->ShipFacing = facing; + // XXX: thrust_wait is abused to store marine speed and + // gravity well flags StarShipPtr->cur_status_flags = ElementPtr->thrust_wait << 6; StarShipPtr->RaceDescPtr->characteristics.thrust_increment = 8; StarShipPtr->RaceDescPtr->characteristics.max_thrust = 32; @@ -708,6 +714,8 @@ marine_preprocess (ELEMENT *ElementPtr) } } + // XXX: thrust_wait is abused to store marine speed and + // gravity well flags ElementPtr->thrust_wait = (BYTE)(thrust_status >> 6); } } diff --git a/sc2/src/sc2code/ships/pkunk/pkunk.c b/sc2/src/sc2code/ships/pkunk/pkunk.c index 9268baab8..a2e2a27a6 100644 --- a/sc2/src/sc2code/ships/pkunk/pkunk.c +++ b/sc2/src/sc2code/ships/pkunk/pkunk.c @@ -244,13 +244,14 @@ new_pkunk (ELEMENT *ElementPtr) StarShipPtr->RaceDescPtr->characteristics.special_wait = 0; StarShipPtr->ship_input_state = 0; - StarShipPtr->cur_status_flags = - StarShipPtr->old_status_flags = 0; - StarShipPtr->energy_counter = - StarShipPtr->weapon_counter = - StarShipPtr->special_counter = 0; - ElementPtr->crew_level = - ElementPtr->turn_wait = ElementPtr->thrust_wait = 0; + StarShipPtr->cur_status_flags = 0; + StarShipPtr->old_status_flags = 0; + StarShipPtr->energy_counter = 0; + StarShipPtr->weapon_counter = 0; + StarShipPtr->special_counter = 0; + ElementPtr->crew_level = 0; + ElementPtr->turn_wait = 0; + ElementPtr->thrust_wait = 0; ElementPtr->life_span = NORMAL_LIFE; StarShipPtr->ShipFacing = NORMALIZE_FACING (TFB_Random ()); diff --git a/sc2/src/sc2code/ships/supox/supox.c b/sc2/src/sc2code/ships/supox/supox.c index d149161f9..0212ead37 100644 --- a/sc2/src/sc2code/ships/supox/supox.c +++ b/sc2/src/sc2code/ships/supox/supox.c @@ -246,7 +246,7 @@ supox_preprocess (ELEMENT *ElementPtr) if (add_facing) { COUNT facing; - UWORD thrust_status; + STATUS_FLAGS thrust_status; facing = StarShipPtr->ShipFacing; StarShipPtr->ShipFacing = NORMALIZE_FACING ( diff --git a/sc2/src/sc2code/ships/thradd/thradd.c b/sc2/src/sc2code/ships/thradd/thradd.c index 7793d9f13..f7282d563 100644 --- a/sc2/src/sc2code/ships/thradd/thradd.c +++ b/sc2/src/sc2code/ships/thradd/thradd.c @@ -283,7 +283,7 @@ thraddash_preprocess (ELEMENT *ElementPtr) #define SPECIAL_THRUST_INCREMENT 12 #define SPECIAL_MAX_THRUST 72 COUNT max_thrust, thrust_increment; - UWORD thrust_status; + STATUS_FLAGS thrust_status; HELEMENT hTrailElement; if (!(StarShipPtr->old_status_flags & SPECIAL)) diff --git a/sc2/src/sc2code/status.c b/sc2/src/sc2code/status.c index 51217c6f7..cb0475d54 100644 --- a/sc2/src/sc2code/status.c +++ b/sc2/src/sc2code/status.c @@ -27,8 +27,8 @@ #include static void -CaptainsWindow (CAPTAIN_STUFF *CSPtr, COORD y, ELEMENT_FLAGS - delta_status_flags, ELEMENT_FLAGS cur_status_flags, +CaptainsWindow (CAPTAIN_STUFF *CSPtr, COORD y, + STATUS_FLAGS delta_status_flags, STATUS_FLAGS cur_status_flags, COUNT Pass) { STAMP Stamp; @@ -367,7 +367,7 @@ PreProcessStatus (ELEMENT *ShipPtr) if (StarShipPtr->captains_name_index || (StarShipPtr->RaceDescPtr->ship_info.ship_flags & GOOD_GUY)) { - ELEMENT_FLAGS old_status_flags, cur_status_flags; + STATUS_FLAGS old_status_flags, cur_status_flags; CAPTAIN_STUFF *CSPtr; cur_status_flags = StarShipPtr->cur_status_flags; @@ -396,8 +396,7 @@ PostProcessStatus (ELEMENT *ShipPtr) || (StarShipPtr->RaceDescPtr->ship_info.ship_flags & GOOD_GUY)) { COORD y; - ELEMENT_FLAGS cur_status_flags, old_status_flags; - + STATUS_FLAGS cur_status_flags, old_status_flags; cur_status_flags = StarShipPtr->cur_status_flags;