| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709 |
- //
- // 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/VDATA.CPP 1 3/03/97 10:26a 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 : VDATA.CPP *
- * *
- * Programmer : Joe L. Bostic *
- * *
- * Start Date : 03/13/96 *
- * *
- * Last Update : July 9, 1996 [JLB] *
- * *
- *---------------------------------------------------------------------------------------------*
- * Functions: *
- * VesselTypeClass::As_Reference -- Converts a vessel type into a VesselTypeClass reference. *
- * VesselTypeClass::Create_And_Place -- Creates a vessel and places it at location. *
- * VesselTypeClass::Create_One_Of -- Creates a vessel object that matches this vessel type. *
- * VesselTypeClass::Dimensions -- Fetches the pixel width and height of this vessel type. *
- * VesselTypeClass::Display -- Displays a generic representation of this vessel type. *
- * VesselTypeClass::From_Name -- Converts a name into a vessel type. *
- * VesselTypeClass::Init_Heap -- Initialize the vessel heap. *
- * VesselTypeClass::One_Time -- Performs one time initialization for vessel types. *
- * VesselTypeClass::Overlap_List -- Figures the overlap list for the vessel type. *
- * VesselTypeClass::Prep_For_Add -- Adds vessel types to the scenario editor object list. *
- * VesselTypeClass::Turret_Adjust -- Adjust turret offset according to facing specified. *
- * VesselTypeClass::VesselTypeClass -- Constructor for naval vessel types. *
- * VesselTypeClass::Who_Can_Build_Me -- Fetches pointer to available factory for this vessel.*
- * VesselTypeClass::operator delete -- Returns a vessel type object back to the memory pool. *
- * VesselTypeClass::operator new -- Allocate a vessel type object from the special memory poo*
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- #include "function.h"
- // Submarine
- static VesselTypeClass const VesselSubmarine(
- VESSEL_SS,
- TXT_SS, // NAME: Text name of this unit type.
- "SS", // NAME: Text name of this unit type.
- ANIM_FBALL1, // EXPLOSION: Type of explosion when destroyed.
- 0x0000, // Vertical offset.
- 0x0000, // Primary weapon offset along turret centerline.
- 0x0000, // Primary weapon lateral offset along turret centerline.
- 0x0000, // Secondary weapon offset along turret centerline.
- 0x0000, // Secondary weapon lateral offset along turret centerling.
- false, // Only has eight facings?
- true, // Always use the given name for the vehicle?
- false, // Is it equipped with a combat turret?
- 8, // Rotation stages.
- 14 // Turret center offset along body centerline.
- );
- // Destroyer
- static VesselTypeClass const VesselDestroyer(
- VESSEL_DD,
- TXT_DD, // NAME: Text name of this unit type.
- "DD", // NAME: Text name of this unit type.
- ANIM_FBALL1, // EXPLOSION: Type of explosion when destroyed.
- 0x0000, // Vertical offset.
- 0x0000, // Primary weapon offset along turret centerline.
- 0x0000, // Primary weapon lateral offset along turret centerline.
- 0x0000, // Secondary weapon offset along turret centerline.
- 0x0000, // Secondary weapon lateral offset along turret centerling.
- false, // Only has eight facings?
- true, // Always use the given name for the vehicle?
- true, // Is it equipped with a combat turret?
- 8, // Rotation stages.
- 14 // Turret center offset along body centerline.
- );
- // Cruiser
- static VesselTypeClass const VesselCruiser(
- VESSEL_CA,
- TXT_CA, // NAME: Text name of this unit type.
- "CA", // NAME: Text name of this unit type.
- ANIM_FBALL1, // EXPLOSION: Type of explosion when destroyed.
- 0x0000, // Vertical offset.
- 0x0000, // Primary weapon offset along turret centerline.
- 0x0000, // Primary weapon lateral offset along turret centerline.
- 0x0000, // Secondary weapon offset along turret centerline.
- 0x0000, // Secondary weapon lateral offset along turret centerling.
- false, // Only has eight facings?
- true, // Always use the given name for the vehicle?
- true, // Is it equipped with a combat turret?
- 8, // Rotation stages.
- 14 // Turret center offset along body centerline.
- );
- // Transport
- static VesselTypeClass const VesselTransport(
- VESSEL_TRANSPORT,
- TXT_TRANSPORT, // NAME: Text name of this unit type.
- "LST", // NAME: Text name of this unit type.
- ANIM_FBALL1, // EXPLOSION: Type of explosion when destroyed.
- 0x0000, // Vertical offset.
- 0x0000, // Primary weapon offset along turret centerline.
- 0x0000, // Primary weapon lateral offset along turret centerline.
- 0x0000, // Secondary weapon offset along turret centerline.
- 0x0000, // Secondary weapon lateral offset along turret centerling.
- false, // Only has eight facings?
- true, // Always use the given name for the vehicle?
- false, // Is it equipped with a combat turret?
- 0, // Rotation stages.
- 0 // Turret center offset along body centerline.
- );
- // Gun Boat
- static VesselTypeClass const VesselPTBoat(
- VESSEL_PT,
- TXT_PT, // NAME: Text name of this unit type.
- "PT", // NAME: Text name of this unit type.
- ANIM_FBALL1, // EXPLOSION: Type of explosion when destroyed.
- 0x0000, // Vertical offset.
- 0x0000, // Primary weapon offset along turret centerline.
- 0x0000, // Primary weapon lateral offset along turret centerline.
- 0x0000, // Secondary weapon offset along turret centerline.
- 0x0000, // Secondary weapon lateral offset along turret centerling.
- false, // Only has eight facings?
- true, // Always use the given name for the vehicle?
- true, // Is it equipped with a combat turret?
- 8, // Rotation stages.
- 14 // Turret center offset along body centerline.
- );
- #ifdef FIXIT_CSII // checked - ajw 9/28/98
- // Missile Submarine
- static VesselTypeClass const VesselMissileSubmarine(
- VESSEL_MISSILESUB,
- TXT_MISSILESUB, // NAME: Text name of this unit type.
- "MSUB", // NAME: Text name of this unit type.
- ANIM_FBALL1, // EXPLOSION: Type of explosion when destroyed.
- 0x0000, // Vertical offset.
- 0x0000, // Primary weapon offset along turret centerline.
- 0x0000, // Primary weapon lateral offset along turret centerline.
- 0x0000, // Secondary weapon offset along turret centerline.
- 0x0000, // Secondary weapon lateral offset along turret centerling.
- false, // Only has eight facings?
- true, // Always use the given name for the vehicle?
- false, // Is it equipped with a combat turret?
- 8, // Rotation stages.
- 14 // Turret center offset along body centerline.
- );
- #endif
- #ifdef FIXIT_CARRIER // checked - ajw 9/28/98
- // Transport
- static VesselTypeClass const VesselCarrier(
- VESSEL_CARRIER,
- TXT_CARRIER, // NAME: Text name of this unit type.
- "CARR", // NAME: Text name of this unit type.
- ANIM_FBALL1, // EXPLOSION: Type of explosion when destroyed.
- 0x0000, // Vertical offset.
- 0x0000, // Primary weapon offset along turret centerline.
- 0x0000, // Primary weapon lateral offset along turret centerline.
- 0x0000, // Secondary weapon offset along turret centerline.
- 0x0000, // Secondary weapon lateral offset along turret centerling.
- false, // Only has eight facings?
- true, // Always use the given name for the vehicle?
- false, // Is it equipped with a combat turret?
- 0, // Rotation stages.
- 0 // Turret center offset along body centerline.
- );
- #endif
- /***********************************************************************************************
- * VesselTypeClass::VesselTypeClass -- Constructor for unit types. *
- * *
- * This is the constructor for the vessel static data. Each vessels is assign a specific *
- * variation. This class elaborates what the variation actually is. *
- * *
- * INPUT: bla bla bla... see below *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 03/14/1996 JLB : Created *
- *=============================================================================================*/
- VesselTypeClass::VesselTypeClass(
- VesselType type,
- int name,
- char const * ininame,
- AnimType exp,
- int verticaloffset,
- int primaryoffset,
- int primarylateral,
- int secondaryoffset,
- int secondarylateral,
- bool is_eight,
- bool is_nominal,
- bool is_turret_equipped,
- int rotation,
- int toffset
- ) :
- TechnoTypeClass(
- RTTI_VESSELTYPE,
- int(type),
- name,
- ininame,
- REMAP_NORMAL,
- verticaloffset,
- primaryoffset,
- primarylateral,
- secondaryoffset,
- secondarylateral,
- is_nominal,
- false,
- true,
- true,
- false,
- false,
- false,
- is_turret_equipped,
- true,
- true,
- rotation,
- SPEED_FLOAT
- ),
- IsPieceOfEight(is_eight),
- Type(type),
- TurretOffset(toffset),
- Mission(MISSION_GUARD),
- Explosion(exp),
- MaxSize(0)
- {
- /*
- ** Forced vessel overrides from the default.
- */
- IsCrew = false;
- Speed = SPEED_FLOAT;
- IsScanner = true;
- }
- /***********************************************************************************************
- * VesselTypeClass::operator new -- Allocate a vessel type object from the special memory pool *
- * *
- * This will allocate a vessel type class object from the memory pool. *
- * *
- * INPUT: none *
- * *
- * OUTPUT: Returns with a pointer to the allocated vessel type class object. If memory in the *
- * special heap has been exhaused, then NULL will be returned. *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 07/09/1996 JLB : Created. *
- *=============================================================================================*/
- void * VesselTypeClass::operator new(size_t)
- {
- return(VesselTypes.Alloc());
- }
- /***********************************************************************************************
- * VesselTypeClass::operator delete -- Returns a vessel type object back to the memory pool. *
- * *
- * This will return a previously allocated vessel object back to the special pool from *
- * whence it was originally allocated. *
- * *
- * INPUT: pointer -- Pointer to the vessel type object to return to the pool. *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 07/09/1996 JLB : Created. *
- *=============================================================================================*/
- void VesselTypeClass::operator delete(void * pointer)
- {
- VesselTypes.Free((VesselTypeClass *)pointer);
- }
- /***********************************************************************************************
- * VesselTypeClass::Init_Heap -- Initialize the vessel heap. *
- * *
- * This will pre-allocate all the vessel types required. *
- * *
- * INPUT: none *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: Only call this routine once and do so before processing the rules.ini file. *
- * *
- * HISTORY: *
- * 07/09/1996 JLB : Created. *
- *=============================================================================================*/
- void VesselTypeClass::Init_Heap(void)
- {
- /*
- ** These vessel type class objects must be allocated in the exact order that they
- ** are specified in the VesselType enumeration. This is necessary because the heap
- ** allocation block index serves double duty as the type number index.
- */
- new VesselTypeClass(VesselSubmarine); // VESSEL_SS
- new VesselTypeClass(VesselDestroyer); // VESSEL_DD
- new VesselTypeClass(VesselCruiser); // VESSEL_CA
- new VesselTypeClass(VesselTransport); // VESSEL_TRANSPORT
- new VesselTypeClass(VesselPTBoat); // VESSEL_PT
- #ifdef FIXIT_CSII // checked - ajw 9/28/98
- new VesselTypeClass(VesselMissileSubmarine); // VESSEL_MISSILESUB
- #endif
- #ifdef FIXIT_CARRIER // checked - ajw 9/28/98
- new VesselTypeClass(VesselCarrier); // VESSEL_CARRIER
- #endif
- }
- /***********************************************************************************************
- * VesselTypeClass::As_Reference -- Converts a vessel type into a VesselTypeClass reference. *
- * *
- * This routine will fetch a reference to the vessel type that corresponds to the vessel *
- * type specified. *
- * *
- * INPUT: type -- The vessel type number to convert. *
- * *
- * OUTPUT: Returns with a reference to the vessel type class that corresponds to the vessel *
- * type specified. *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 03/20/1996 JLB : Created. *
- *=============================================================================================*/
- VesselTypeClass & VesselTypeClass::As_Reference(VesselType type)
- {
- return(*VesselTypes.Ptr(type));
- }
- #ifdef NEVER
- /***********************************************************************************************
- * VesselTypeClass::Who_Can_Build_Me -- Fetches pointer to available factory for this vessel. *
- * *
- * Use this routine to fetch a pointer to the vessel factory that can build this vessel *
- * type. *
- * *
- * INPUT: intheory -- If true, then this indicates that if the factory is currently *
- * busy doing other things, this won't make in ineligible for searching. *
- * Typical use of this is by the sidebar logic which needs only to know *
- * if theoretical production is allowed. *
- * *
- * legal -- If true, then the buildings are checked for specific legality when *
- * being scanned. For building placement, this is usually false, for *
- * sidebar button adding, this is usually true. *
- * *
- * house -- The owner of the unit to be produced. This has an effect of legality. *
- * *
- * OUTPUT: Returns with a pointer to the factory (building) that can produce this vessel type.*
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 03/20/1996 JLB : Created. *
- *=============================================================================================*/
- BuildingClass * VesselTypeClass::Who_Can_Build_Me(bool intheory, bool legal, HousesType house) const
- {
- BuildingClass * anybuilding = NULL;
- for (int index = 0; index < Buildings.Count(); index++) {
- BuildingClass * building = Buildings.Ptr(index);
- assert(building != NULL);
- if ( !building->IsInLimbo &&
- building->House->Class->House == house &&
- building->Class->ToBuild == RTTI_VESSELTYPE &&
- building->Mission != MISSION_DECONSTRUCTION &&
- ((1L << building->ActLike) & Ownable) &&
- (!legal || building->House->Can_Build(Type, building->ActLike)) &&
- (intheory || !building->In_Radio_Contact())) {
- if (building->IsLeader) return(building);
- anybuilding = building;
- }
- }
- return(anybuilding);
- }
- #endif
- /***********************************************************************************************
- * VesselTypeClass::Display -- Displays a generic representation of this vessel type. *
- * *
- * This routine is used by the scenario editor to display a representation of this *
- * vessel type in the object placement dialog. *
- * *
- * INPUT: x,y -- Pixel coordinate to render the center of this vessel type to. *
- * *
- * window -- The window to clip the shape to. The pixel coordinates are relative *
- * to this window. *
- * *
- * house -- The owner of the vessel. This is used to give the vessel its color. *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 03/20/1996 JLB : Created. *
- *=============================================================================================*/
- #ifdef SCENARIO_EDITOR
- void VesselTypeClass::Display(int x, int y, WindowNumberType window, HousesType ) const
- {
- int shape = 0;
- void const * ptr = Get_Cameo_Data();
- if (ptr == NULL) {
- ptr = Get_Image_Data();
- shape = Rotation/6;
- }
- CC_Draw_Shape(ptr, shape, x, y, window, SHAPE_CENTER|SHAPE_WIN_REL);
- }
- /***********************************************************************************************
- * VesselTypeClass::Prep_For_Add -- Adds vessel types to the scenario editor object list. *
- * *
- * This routine is called when the scenario editor needs to obtain a list of the *
- * vessel object that can be placed down. It will submit all the vessel types that can *
- * be placed down. *
- * *
- * INPUT: none *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 03/20/1996 JLB : Created. *
- *=============================================================================================*/
- void VesselTypeClass::Prep_For_Add(void)
- {
- for (VesselType index = VESSEL_FIRST; index < VESSEL_COUNT; index++) {
- if (As_Reference(index).Get_Image_Data() != NULL) {
- Map.Add_To_List(&As_Reference(index));
- }
- }
- }
- #endif //SCENARIO_EDITOR
- /***********************************************************************************************
- * VesselTypeClass::Create_One_Of -- Creates a vessel object that matches this vessel type. *
- * *
- * This routine is called when the type of vessel is known (by way of a VesselTypeClass) *
- * and a corresponding vessel object needs to be created. *
- * *
- * INPUT: house -- Pointer to the owner that this vessel will be assigned to. *
- * *
- * OUTPUT: Returns with a pointer to the vessel object created. If no vessel could be *
- * created, then NULL is returned. *
- * *
- * WARNINGS: The vessel is created in a limbo state. It must first be placed down upon *
- * the map before it starts to function. *
- * *
- * HISTORY: *
- * 03/20/1996 JLB : Created. *
- *=============================================================================================*/
- ObjectClass * VesselTypeClass::Create_One_Of(HouseClass * house) const
- {
- return(new VesselClass(Type, house->Class->House));
- }
- /***********************************************************************************************
- * VesselTypeClass::Create_And_Place -- Creates a vessel and places it at location. *
- * *
- * This routine is used to create a vessel and then place it down upon the *
- * map. *
- * *
- * INPUT: cell -- The location to place this vessel down upon. *
- * *
- * house -- The house to assign this vessel's ownership to. *
- * *
- * OUTPUT: bool; Was the vessel successfully created and placed down upon the map? *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 03/20/1996 JLB : Created. *
- *=============================================================================================*/
- bool VesselTypeClass::Create_And_Place(CELL cell, HousesType house) const
- {
- VesselClass * unit = new VesselClass(Type, house);
- if (unit != NULL) {
- return(unit->Unlimbo(Cell_Coord(cell), Random_Pick(DIR_N, DIR_MAX)));
- }
- delete unit;
- return(false);
- }
- /***********************************************************************************************
- * VesselTypeClass::Dimensions -- Fetches the pixel width and height of this vessel type. *
- * *
- * This routine is used to fetch the width and height of this vessel type. These dimensions *
- * are not specific to any particular facing. Rather, they are only for the generic vessel *
- * size. *
- * *
- * INPUT: width, height -- Reference to the integers that are to be initialized with the *
- * pixel width and height of this vessel type. *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 03/20/1996 JLB : Created. *
- *=============================================================================================*/
- void VesselTypeClass::Dimensions(int & width, int & height) const
- {
- width = 48;
- height = 48;
- }
- /***********************************************************************************************
- * VesselTypeClass::One_Time -- Performs one time initialization for vessel types. *
- * *
- * This routine will load in the vessel shape data. It should be called only once at the *
- * beginning of the game. *
- * *
- * INPUT: none *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: Only call this once. *
- * *
- * HISTORY: *
- * 03/20/1996 JLB : Created. *
- *=============================================================================================*/
- void VesselTypeClass::One_Time(void)
- {
- for (VesselType index = VESSEL_FIRST; index < VESSEL_COUNT; index++) {
- char fullname[_MAX_FNAME+_MAX_EXT];
- char buffer[_MAX_FNAME];
- VesselTypeClass const & uclass = As_Reference(index);
- #ifdef FIXIT_CARRIER // checked - ajw 9/28/98
- if (uclass.Level != -1 || index==VESSEL_CARRIER) {
- #else
- if (uclass.Level != -1) {
- #endif
- // if (uclass.IsBuildable) {
- /*
- ** Fetch the supporting data files for the unit.
- */
- sprintf(buffer, "%sICON", uclass.Graphic_Name());
- _makepath(fullname, NULL, NULL, buffer, ".SHP");
- ((void const *&)uclass.CameoData) = MFCD::Retrieve(fullname);
- }
- /*
- ** Fetch a pointer to the unit's shape data.
- */
- _makepath(fullname, NULL, NULL, uclass.Graphic_Name(), ".SHP");
- ((void const *&)uclass.ImageData) = MFCD::Retrieve(fullname);
- ((int &)uclass.MaxSize) = 26;
- }
- }
- /***********************************************************************************************
- * VesselTypeClass::Turret_Adjust -- Adjust turret offset according to facing specified. *
- * *
- * This routine will determine the pixel adjustment necessary for a turret. The direction *
- * specified is what the vessel body is facing. *
- * *
- * INPUT: dir -- The presumed direction of the body facing for the vessel. *
- * *
- * x,y -- The center pixel position for the vessel. These values should be *
- * adjusted (they are references) to match the adjusted offset for the *
- * turret. *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 03/20/1996 JLB : Created. *
- *=============================================================================================*/
- void VesselTypeClass::Turret_Adjust(DirType dir, int & x, int & y) const
- {
- short xx = x;
- short yy = y;
- switch (Type) {
- case VESSEL_CA:
- Normal_Move_Point(xx, yy, dir, 22);
- x = xx;
- y = yy-4;
- break;
- case VESSEL_PT:
- Normal_Move_Point(xx, yy, dir, 14);
- x = xx;
- y = yy+1;
- break;
- case VESSEL_DD:
- Normal_Move_Point(xx, yy, dir+DIR_S, 8);
- x = xx;
- y = yy-4;
- break;
- }
- }
- /***********************************************************************************************
- * VesselTypeClass::Overlap_List -- Figures the overlap list for the vessel type. *
- * *
- * This routine will return the overlap list for a vessel that is sitting still in the *
- * center of a cell. *
- * *
- * INPUT: none *
- * *
- * OUTPUT: Returns with a pointer to the overlap list that this vessel would use. *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 03/20/1996 JLB : Created. *
- *=============================================================================================*/
- short const * VesselTypeClass::Overlap_List(void) const
- {
- static short const _ship[] = {-3, -2, -1, 1, 2, 3,
- -MAP_CELL_W, -(MAP_CELL_W+1), -(MAP_CELL_W-1), -(MAP_CELL_W+2), -(MAP_CELL_W-2),
- +MAP_CELL_W, +(MAP_CELL_W+1), +(MAP_CELL_W-1), +(MAP_CELL_W+2), +(MAP_CELL_W-2),
- REFRESH_EOL};
- // static short const _ship[] = {-1, 1,
- // -MAP_CELL_W, -(MAP_CELL_W+1), -(MAP_CELL_W-1),
- // +MAP_CELL_W, +(MAP_CELL_W+1), +(MAP_CELL_W-1),
- // REFRESH_EOL};
- return(&_ship[0]);
- }
- /***********************************************************************************************
- * VesselTypeClass::From_Name -- Converts a name into a vessel type. *
- * *
- * Use this routine to convert an ASCII version of a vessel type into the corresponding *
- * VesselType id value. Typical use of this would be to parse the INI file. *
- * *
- * INPUT: name -- Pointer to the ASCII name to be converted into a vessel type. *
- * *
- * OUTPUT: Returns with the vessel type number that matches the string specified. *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 03/20/1996 JLB : Created. *
- *=============================================================================================*/
- VesselType VesselTypeClass::From_Name(char const * name)
- {
- if (name != NULL) {
- for (VesselType classid = VESSEL_FIRST; classid < VESSEL_COUNT; classid++) {
- if (stricmp(As_Reference(classid).IniName, name) == 0) {
- return(classid);
- }
- }
- }
- return(VESSEL_NONE);
- }
- /***********************************************************************************************
- * VesselTypeClass::Max_Pips -- Fetches the maximum pips allowed for this vessel. *
- * *
- * This routine will determine the number of pips (maximum) allowed for this unit type. *
- * Typically, this is the number of passengers allowed. *
- * *
- * INPUT: none *
- * *
- * OUTPUT: Returns with the maximum number of pips allowed for this vessel type. *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 06/01/1996 BWG : Created. *
- *=============================================================================================*/
- int VesselTypeClass::Max_Pips(void) const
- {
- return(Max_Passengers());
- }
|