| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- //
- // Copyright 2020 Electronic Arts Inc.
- //
- // TiberianDawn.DLL and RedAlert.dll and corresponding source code is free
- // software: you can redistribute it and/or modify it under the terms of
- // the GNU General Public License as published by the Free Software Foundation,
- // either version 3 of the License, or (at your option) any later version.
- // TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed
- // in the hope that it will be useful, but with permitted additional restrictions
- // under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
- // distributed with this program. You should have received a copy of the
- // GNU General Public License along with permitted additional restrictions
- // with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
- /* $Header: /CounterStrike/CARGO.CPP 1 3/03/97 10:24a Joe_bostic $ */
- /***********************************************************************************************
- *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
- ***********************************************************************************************
- * *
- * Project Name : Command & Conquer *
- * *
- * File Name : CARGO.CPP *
- * *
- * Programmer : Joe L. Bostic *
- * *
- * Start Date : April 23, 1994 *
- * *
- * Last Update : 10/31/94 [JLB] *
- * *
- *---------------------------------------------------------------------------------------------*
- * Functions: *
- * CargoClass::Attach -- Add unit to cargo hold. *
- * CargoClass::Attached_Object -- Determine attached unit pointer. *
- * CargoClass::Debug_Dump -- Displays the cargo value to the monochrome screen. *
- * CargoClass::Detach_Object -- Removes a unit from the cargo hold. *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- #include "function.h"
- #ifdef CHEAT_KEYS
- /***********************************************************************************************
- * CargoClass::Debug_Dump -- Displays the cargo value to the monochrome screen. *
- * *
- * This routine is used to dump the current cargo value to the monochrome monitor. *
- * *
- * INPUT: none *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 06/02/1994 JLB : Created. *
- *=============================================================================================*/
- void CargoClass::Debug_Dump(MonoClass * mono) const
- {
- if (How_Many()) {
- mono->Set_Cursor(63, 3);
- mono->Printf("(%d)%04X", How_Many(), Attached_Object());
- }
- }
- #endif
- /***********************************************************************************************
- * CargoClass::Attach -- Add unit to cargo hold. *
- * *
- * This routine will add the specified unit to the cargo hold. The *
- * unit will chain to any existing units in the hold. The chaining is *
- * in a LIFO order. *
- * *
- * INPUT: object-- Pointer to the object to attach to the cargo hold. *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 04/23/1994 JLB : Created. *
- * 10/31/94 JLB : Handles chained objects. *
- *=============================================================================================*/
- void CargoClass::Attach(FootClass * object)
- {
- /*
- ** If there is no object, then no action is necessary.
- */
- if (object == NULL) return;
- object->Limbo();
- /*
- ** Attach any existing cargo hold object to the end of the list as indicated by the
- ** object pointer passed into this routine. This is necessary because several objects may
- ** be attached at one time or several objects may be attached as a result of several calls
- ** to this routine. Either case must be handled properly.
- */
- ObjectClass * o = object->Next;
- while (o != NULL) {
- if (o->Next == (void*)NULL) break;
- o = o->Next;
- }
- if (o != NULL) {
- o->Next = CargoHold;
- } else {
- object->Next = CargoHold;
- }
- /*
- ** Finally, assign the object pointer as the first object attached to this cargo hold.
- */
- CargoHold = object;
- Quantity = 0;
- object = CargoHold;
- while (object != NULL) {
- Quantity++;
- object = (FootClass *)(ObjectClass *)object->Next;
- }
- }
- /***********************************************************************************************
- * CargoClass::Detach_Object -- Removes a unit from the cargo hold. *
- * *
- * This routine will take a unit from the cargo hold and extract it. *
- * The unit extracted is the last unit added to the hold. If there *
- * is no unit in the hold or the occupant is not a unit, then NULL is *
- * returned. *
- * *
- * INPUT: none *
- * *
- * OUTPUT: Returns with a pointer to the unit that has been extracted. *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 04/23/1994 JLB : Created. *
- * 06/07/1994 JLB : Handles generic object types. *
- *=============================================================================================*/
- FootClass * CargoClass::Detach_Object(void)
- {
- TechnoClass * unit = Attached_Object();
- if (unit != NULL) {
- CargoHold = (FootClass *)(ObjectClass *)unit->Next;
- unit->Next = 0;
- Quantity--;
- }
- return((FootClass *)unit);
- }
- /***********************************************************************************************
- * CargoClass::Attached_Object -- Determine attached unit pointer. *
- * *
- * This routine will return with a pointer to the attached unit if one *
- * is present. One would need to know this if this is a transport *
- * unit and it needs to unload. *
- * *
- * INPUT: none *
- * *
- * OUTPUT: Returns a pointer to the attached unit. If there is no *
- * attached unit, then return NULL. *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 09/07/1992 JLB : Created. *
- * 06/07/1994 JLB : Handles generic object types. *
- *=============================================================================================*/
- FootClass * CargoClass::Attached_Object(void) const
- {
- if (Is_Something_Attached()) {
- return(CargoHold);
- }
- return(NULL);
- }
|