// Allocate a new STARSHIP or SHIP_FRAGMENT and put it in the queue HLINK Build (QUEUE *pQueue, SPECIES_ID SpeciesID) { HLINK hNewShip; SHIP_BASE *ShipPtr; assert (GetLinkSize (pQueue) == sizeof (STARSHIP) || GetLinkSize (pQueue) == sizeof (SHIP_FRAGMENT)); hNewShip = AllocLink (pQueue); if (!hNewShip) return 0; ShipPtr = (SHIP_BASE *) LockLink (pQueue, hNewShip); memset (ShipPtr, 0, GetLinkSize (pQueue)); ShipPtr->SpeciesID = SpeciesID; UnlockLink (pQueue, hNewShip); PutQueue (pQueue, hNewShip); return hNewShip; }
HSTARSHIP Build (PQUEUE pQueue, DWORD RaceResIndex, COUNT which_player, BYTE captains_name_index) { HSTARSHIP hNewShip; if ((hNewShip = AllocStarShip (pQueue)) != 0) { STARSHIPPTR StarShipPtr; StarShipPtr = LockStarShip (pQueue, hNewShip); memset (StarShipPtr, 0, GetLinkSize (pQueue)); StarShipPtr->RaceResIndex = RaceResIndex; OwnStarShip (StarShipPtr, which_player, captains_name_index); UnlockStarShip (pQueue, hNewShip); PutQueue (pQueue, hNewShip); } return (hNewShip); }