CnC_Remastered_Collection/REDALERT/BDATA.CPP

3833 lines
196 KiB
C++

//
// 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/BDATA.CPP 2 3/03/97 10:37p 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 : BDATA.CPP *
* *
* Programmer : Joe L. Bostic *
* *
* Start Date : September 10, 1993 *
* *
* Last Update : October 2, 1996 [JLB] *
* *
*---------------------------------------------------------------------------------------------*
* Functions: *
* BuildingTypeClass::As_Reference -- Fetches reference to the building type specified. *
* BuildingTypeClass::Bib_And_Offset -- Determines the bib and appropriate cell offset. *
* BuildingTypeClass::BuildingTypeClass -- This is the constructor for the building types. *
* BuildingTypeClass::Coord_Fixup -- Adjusts coordinate to be legal for assignment. *
* BuildingTypeClass::Cost_Of -- Fetches the cost of this building. *
* BuildingTypeClass::Create_And_Place -- Creates and places a building object onto the map. *
* BuildingTypeClass::Create_One_Of -- Creates a building of this type. *
* BuildingTypeClass::Dimensions -- Fetches the pixel dimensions of the building. *
* BuildingTypeClass::Display -- Renders a generic view of building. *
* BuildingTypeClass::Flush_For_Placement -- Tries to clear placement area for this building *
* BuildingTypeClass::Full_Name -- Fetches the name to give this building. *
* BuildingTypeClass::Height -- Determines the height of the building in icons. *
* BuildingTypeClass::Init -- Performs theater specific initialization. *
* BuildingTypeClass::Init_Anim -- Initialize an animation control for a building. *
* BuildingTypeClass::Init_Heap -- Initialize the heap as necessary for the building type obj*
* BuildingTypeClass::Max_Pips -- Determines the maximum pips to display. *
* BuildingTypeClass::Occupy_List -- Fetches the occupy list for the building. *
* BuildingTypeClass::One_Time -- Performs special one time action for buildings. *
* BuildingTypeClass::Overlap_List -- Fetches the overlap list for the building. *
* BuildingTypeClass::Prep_For_Add -- Prepares scenario editor for adding an object. *
* BuildingTypeClass::Raw_Cost -- Fetches the raw (base) cost of this building type. *
* BuildingTypeClass::Read_INI -- Fetch building type data from the INI database. *
* BuildingTypeClass::Width -- Determines width of building in icons. *
* BuildingTypeClass::operator delete -- Deletes a building type object from the special heap*
* BuildingTypeClass::operator new -- Allocates a building type object from the special heap.*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#include "function.h"
#define FATSHIP
#define MCW MAP_CELL_W
#define XYCELL(x,y) (y*MAP_CELL_W+x)
static short const ExitPyle[] = {
XYCELL(1,2),
XYCELL(2,2),
XYCELL(0,2),
XYCELL(-1,2),
XYCELL(-1,-1),
XYCELL(0,-1),
XYCELL(1,-1),
XYCELL(2,-1),
XYCELL(2,-1),
XYCELL(-1,0),
XYCELL(2,0),
XYCELL(2,1),
XYCELL(-1,1),
REFRESH_EOL
};
static short const ExitSub[] = {
XYCELL( 0, 2),
XYCELL( 2, 2),
XYCELL(-1, 2),
XYCELL( 1, 2),
XYCELL( 3, 2)
};
static short const ExitWeap[] = {
XYCELL(1,2),
XYCELL(-1,3),
XYCELL(0,3),
XYCELL(1,3),
XYCELL(-2,3),
XYCELL(2,3),
REFRESH_EOL
};
static short const ComList[] = {0, 1, MCW, MCW+1, REFRESH_EOL};
static short const List000111111[] = {(MCW*1), (MCW*1)+1, (MCW*1)+2, (MCW*2), (MCW*2)+1, (MCW*2)+2, REFRESH_EOL};
static short const List0010[] = {MCW, REFRESH_EOL};
static short const List0011[] = {(MCW*1), (MCW*1)+1, REFRESH_EOL};
static short const List010111100[] = {1, (MCW*1), (MCW*1)+1, (MCW*1)+2, (MCW*2), REFRESH_EOL};
static short const List0111[] = {1, (MCW*1), (MCW*1)+1, REFRESH_EOL};
static short const List1000[] = {0, REFRESH_EOL};
static short const List101000011[] = {0, 2, (MCW*2)+1, (MCW*2)+2, REFRESH_EOL};
static short const List1100[] = {0, 1, REFRESH_EOL};
static short const List1101[] = {0, 1, (MCW*1)+1, REFRESH_EOL};
static short const List11[] = {0, 1, REFRESH_EOL};
static short const List12[] = {MCW, REFRESH_EOL};
static short const List1[] = {0, REFRESH_EOL};
static short const List21[] = {0, 1, REFRESH_EOL};
static short const List22[] = {0, 1, MCW, MCW+1, REFRESH_EOL};
static short const List22_0011[] = {MCW, MCW+1, REFRESH_EOL};
static short const List22_1100[] = {0, 1, REFRESH_EOL};
static short const List2[] = {0, 1, MCW+1, MCW, REFRESH_EOL};
static short const List32[] = {0, 1, 2, MCW, MCW+1, MCW+2, REFRESH_EOL};
//static short const List42[] = {0, 1, 2, 3, MCW, MCW+1, MCW+2, MCW+3, REFRESH_EOL};
static short const ListFix[] = {1, MCW, MCW+1, MCW+2, MCW+MCW+1, REFRESH_EOL};
static short const ListWeap[] = {0, 1, 2, (MCW*1), (MCW*1)+1, (MCW*1)+2, REFRESH_EOL};
static short const ListWestwood[] = {1, 2, 3, MCW+1, MCW+2, MCW+3, REFRESH_EOL};
static short const OListSAM[] = {-MCW, -(MCW-1), REFRESH_EOL};
#ifdef FATSHIP
static short const ListSPen[] = {0, 1, 2, MCW, MCW+1, MCW+2, MCW+MCW, MCW+MCW+1, MCW+MCW+2, REFRESH_EOL};
static short const OListSPen[] = {REFRESH_EOL};
#else
static short const ListSPen[] = {1, MCW, MCW+1, MCW+2, MCW+MCW+1, REFRESH_EOL};
static short const OListSPen[] = {0, 2, MCW+MCW, MCW+MCW+2, REFRESH_EOL};
#endif
static short const OListWestwood[] = {0, MCW, REFRESH_EOL};
static short const StoreList[] = {0, REFRESH_EOL};
static short const ListFactory[] = {0, 1, 2, (MCW*1), (MCW*1)+1, (MCW*1)+2, (MCW*2), (MCW*2)+1, (MCW*2)+2, REFRESH_EOL};
static short const OListFix[] = {0, 2, MCW+MCW, MCW+MCW+2, REFRESH_EOL};
static short const OListWeap[] = {REFRESH_EOL};
static short const OComList[] = {1, REFRESH_EOL};
static short const OList12[] = {0, REFRESH_EOL};
static short const OListTmpl[] = {0, 1, 2, REFRESH_EOL};
/***************************************************************************
*/
static BuildingTypeClass const ClassBarrel(
STRUCT_BARREL,
TXT_BARREL, // NAME: Short name of the structure.
"BARL", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassBarrel3(
STRUCT_BARREL3,
TXT_BARREL, // NAME: Short name of the structure.
"BRL3", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
false, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassAVMine(
STRUCT_AVMINE,
TXT_AVMINE, // NAME: Short name of the structure.
"MINV", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_NORMAL, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
false, // Can the player select this?
false, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassAPMine(
STRUCT_APMINE,
TXT_APMINE, // NAME: Short name of the structure.
"MINP", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_NORMAL, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
false, // Can the player select this?
false, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassIronCurtain(
STRUCT_IRON_CURTAIN,
TXT_IRON_CURTAIN, // NAME: Short name of the structure.
"IRON", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List22_0011,// OCCUPYLIST: List of active foundation squares.
(short const *)List22_1100 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassForwardCom(
STRUCT_FORWARD_COM,
TXT_FORWARD_COM, // NAME: Short name of the structure.
"FCOM", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List22_0011,// OCCUPYLIST: List of active foundation squares.
(short const *)List22_1100 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassAdvancedTech(
STRUCT_ADVANCED_TECH,
TXT_ADVANCED_TECH, // NAME: Short name of the structure.
"ATEK", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List22, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassChronosphere(
STRUCT_CHRONOSPHERE,
TXT_CHRONOSPHERE, // NAME: Short name of the structure.
"PDOX", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List22, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassWeapon(
STRUCT_WEAP,
TXT_WEAPON_FACTORY, // NAME: Short name of the structure.
"WEAP", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XY_Coord(CELL_LEPTON_W+(CELL_LEPTON_W/2), CELL_LEPTON_H), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_UNITTYPE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_32, // SIZE: Building size.
(short const *)ExitWeap, // Preferred exit cell list.
(short const *)ListWeap, // OCCUPYLIST: List of active foundation squares.
(short const *)OListWeap // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassShipYard(
STRUCT_SHIP_YARD,
TXT_SHIP_YARD, // NAME: Short name of the structure.
"SYRD", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(22+(CELL_PIXEL_W/2), ((CELL_PIXEL_H*2)-(CELL_PIXEL_H/2))), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_VESSELTYPE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_33, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)ListSPen, // OCCUPYLIST: List of active foundation squares.
(short const *)OListSPen // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassSubPen(
STRUCT_SUB_PEN,
TXT_SUB_PEN, // NAME: Short name of the structure.
"SPEN", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(22+(CELL_PIXEL_W/2), ((CELL_PIXEL_H*2)-(CELL_PIXEL_H/2))), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_VESSELTYPE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_33, // SIZE: Building size.
(short const *)ExitSub, // Preferred exit cell list.
(short const *)ListSPen, // OCCUPYLIST: List of active foundation squares.
(short const *)OListSPen // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassPillbox(
STRUCT_PILLBOX,
TXT_PILLBOX, // NAME: Short name of the structure.
"PBOX", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0010, // Vertical offset.
0x0040, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassCamoPillbox(
STRUCT_CAMOPILLBOX,
TXT_CAMOPILLBOX, // NAME: Short name of the structure.
"HBOX", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0010, // Vertical offset.
0x0040, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassTesla(
STRUCT_TESLA,
TXT_TESLA, // NAME: Short name of the structure.
"TSLA", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x00C8, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_12, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List12, // OCCUPYLIST: List of active foundation squares.
(short const *)OList12 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassTurret(
STRUCT_TURRET,
TXT_TURRET, // NAME: Short name of the structure.
"GUN", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0030, // Vertical offset.
0x0080, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
true, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
(DirType)208, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassAAGun(
STRUCT_AAGUN,
TXT_AAGUN, // NAME: Short name of the structure.
"AGUN", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
true, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_NE, // Starting idle frame to match construction.
BSIZE_12, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List12, // OCCUPYLIST: List of active foundation squares.
(short const *)OList12 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassFlameTurret(
STRUCT_FLAME_TURRET,
TXT_FLAME_TURRET, // NAME: Short name of the structure.
"FTUR", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassConst(
STRUCT_CONST,
TXT_CONST_YARD, // NAME: Short name of the structure.
"FACT", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_BUILDINGTYPE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_33, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)ListFactory,// OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassFakeConst(
STRUCT_FAKECONST,
TXT_FAKE_CONST, // NAME: Short name of the structure.
"FACF", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
true, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_33, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)ListFactory,// OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassFakeWeapon(
STRUCT_FAKEWEAP,
TXT_FAKE_WEAP, // NAME: Short name of the structure.
"WEAF", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(10+(CELL_PIXEL_W/2), ((CELL_PIXEL_H*3)-(CELL_PIXEL_H/2))-21), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
true, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_32, // SIZE: Building size.
(short const *)ExitWeap, // Preferred exit cell list.
(short const *)ListWeap, // OCCUPYLIST: List of active foundation squares.
(short const *)OListWeap // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassRefinery(
STRUCT_REFINERY,
TXT_REFINERY, // NAME: Short name of the structure.
"PROC", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_33, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List010111100, // OCCUPYLIST: List of active foundation squares.
(short const *)List101000011 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassStorage(
STRUCT_STORAGE,
TXT_STORAGE, // NAME: Short name of the structure.
"SILO", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)StoreList, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassHelipad(
STRUCT_HELIPAD,
TXT_HELIPAD, // NAME: Short name of the structure.
"HPAD", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_AIRCRAFTTYPE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List2, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassCommand(
STRUCT_RADAR,
TXT_COMMAND, // NAME: Short name of the structure.
"DOME", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)ComList, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassGapGenerator(
STRUCT_GAP,
TXT_GAP_GENERATOR, // NAME: Short name of the structure.
"GAP", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_12, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List0010, // OCCUPYLIST: List of active foundation squares.
(short const *)List1 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassSAM(
STRUCT_SAM,
TXT_SAM, // NAME: Short name of the structure.
"SAM", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0030, // Vertical offset.
0x0080, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
true, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_21, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List21, // OCCUPYLIST: List of active foundation squares.
(short const *)OListSAM // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassMissileSilo(
STRUCT_MSLO,
TXT_MSLO, // NAME: Short name of the structure.
"MSLO", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_21, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List21, // OCCUPYLIST: List of active foundation squares.
(short const *)OListSAM // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassAirStrip(
STRUCT_AIRSTRIP,
TXT_AIRSTRIP, // NAME: Short name of the structure.
"AFLD", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_AIRCRAFTTYPE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_32, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List32, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassPower(
STRUCT_POWER,
TXT_POWER, // NAME: Short name of the structure.
"POWR", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List22, // OCCUPYLIST: List of active foundation squares.
(short const *)List22_1100 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassAdvancedPower(
STRUCT_ADVANCED_POWER,
TXT_ADVANCED_POWER, // NAME: Short name of the structure.
"APWR", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_33, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List000111111, // OCCUPYLIST: List of active foundation squares.
(short const *)OListTmpl // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassSovietTech(
STRUCT_SOVIET_TECH,
TXT_SOVIET_TECH, // NAME: Short name of the structure.
"STEK", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_33, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List000111111, // OCCUPYLIST: List of active foundation squares.
(short const *)OListTmpl // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassHospital(
STRUCT_HOSPITAL,
TXT_HOSPITAL, // NAME: Short name of the structure.
"HOSP", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List2, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassBioLab(
STRUCT_BIO_LAB,
TXT_BIO_LAB, // NAME: Short name of the structure.
"BIO", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List2, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassBarracks(
STRUCT_BARRACKS,
TXT_BARRACKS, // NAME: Short name of the structure.
"BARR", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
// XYP_COORD(24,47), // Exit point for produced units.
XYP_COORD(18,47), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_INFANTRYTYPE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
(short const *)ExitPyle, // Preferred exit cell list.
(short const *)List22, // OCCUPYLIST: List of active foundation squares.
NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassTent(
STRUCT_TENT,
TXT_BARRACKS, // NAME: Short name of the structure.
"TENT", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(24,47), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_INFANTRYTYPE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
(short const *)ExitPyle, // Preferred exit cell list.
(short const *)List22, // OCCUPYLIST: List of active foundation squares.
NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassKennel(
STRUCT_KENNEL,
TXT_KENNEL, // NAME: Short name of the structure.
"KENN", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(8,16), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_INFANTRYTYPE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
// (short const *)ExitPyle, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassFakeShipYard(
STRUCT_FAKE_YARD,
TXT_FAKE_YARD, // NAME: Short name of the structure.
"SYRF", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(22+(CELL_PIXEL_W/2), ((CELL_PIXEL_H*2)-(CELL_PIXEL_H/2))), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
true, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_33, // SIZE: Building size.
(short const *)ExitWeap, // Preferred exit cell list.
(short const *)ListSPen, // OCCUPYLIST: List of active foundation squares.
(short const *)OListSPen // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassFakeSubPen(
STRUCT_FAKE_PEN,
TXT_FAKE_PEN, // NAME: Short name of the structure.
"SPEF", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(22+(CELL_PIXEL_W/2), ((CELL_PIXEL_H*2)-(CELL_PIXEL_H/2))), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
true, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_33, // SIZE: Building size.
(short const *)ExitSub, // Preferred exit cell list.
(short const *)ListSPen, // OCCUPYLIST: List of active foundation squares.
(short const *)OListSPen // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassFakeCommand(
STRUCT_FAKE_RADAR,
TXT_FAKE_RADAR, // NAME: Short name of the structure.
"DOMF", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
true, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)ComList, // OCCUPYLIST: List of active foundation squares.
(short const *)OComList // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassRepair(
STRUCT_REPAIR,
TXT_FIX_IT, // NAME: Short name of the structure.
"FIX", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
false, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_33, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)ListFix, // OCCUPYLIST: List of active foundation squares.
(short const *)OListFix // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV01(
STRUCT_V01,
TXT_CIV1, // NAME: Short name of the structure.
"V01", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List0011, // OCCUPYLIST: List of active foundation squares.
(short const *)List1100 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV02(
STRUCT_V02,
TXT_CIV2, // NAME: Short name of the structure.
"V02", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List0011, // OCCUPYLIST: List of active foundation squares.
(short const *)List1100 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV03(
STRUCT_V03,
TXT_CIV3, // NAME: Short name of the structure.
"V03", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List0111, // OCCUPYLIST: List of active foundation squares.
(short const *)List1000 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV04(
STRUCT_V04,
TXT_CIV4, // NAME: Short name of the structure.
"V04", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List0011, // OCCUPYLIST: List of active foundation squares.
(short const *)List1100 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV05(
STRUCT_V05,
TXT_CIV5, // NAME: Short name of the structure.
"V05", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_21, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List11, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV06(
STRUCT_V06,
TXT_CIV6, // NAME: Short name of the structure.
"V06", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_21, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List11, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV07(
STRUCT_V07,
TXT_CIV7, // NAME: Short name of the structure.
"V07", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_21, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List11, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV08(
STRUCT_V08,
TXT_CIV8, // NAME: Short name of the structure.
"V08", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV09(
STRUCT_V09,
TXT_CIV9, // NAME: Short name of the structure.
"V09", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV10(
STRUCT_V10,
TXT_CIV10, // NAME: Short name of the structure.
"V10", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV11(
STRUCT_V11,
TXT_CIV11, // NAME: Short name of the structure.
"V11", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV12(
STRUCT_V12,
TXT_CIV12, // NAME: Short name of the structure.
"V12", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV13(
STRUCT_V13,
TXT_CIV13, // NAME: Short name of the structure.
"V13", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV14(
STRUCT_V14,
TXT_CIV14, // NAME: Short name of the structure.
"V14", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV15(
STRUCT_V15,
TXT_CIV15, // NAME: Short name of the structure.
"V15", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV16(
STRUCT_V16,
TXT_CIV16, // NAME: Short name of the structure.
"V16", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV17(
STRUCT_V17,
TXT_CIV17, // NAME: Short name of the structure.
"V17", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV18(
STRUCT_V18,
TXT_CIV18, // NAME: Short name of the structure.
"V18", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV19(
STRUCT_PUMP,
TXT_PUMP, // NAME: Short name of the structure.
"V19", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV20(
STRUCT_V20,
TXT_CIV20, // NAME: Short name of the structure.
"V20", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List0011, // OCCUPYLIST: List of active foundation squares.
(short const *)List1100 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV21(
STRUCT_V21,
TXT_CIV21, // NAME: Short name of the structure.
"V21", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1101, // OCCUPYLIST: List of active foundation squares.
(short const *)List0010 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV22(
STRUCT_V22,
TXT_CIV22, // NAME: Short name of the structure.
"V22", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_21, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List11, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV23(
STRUCT_V23,
TXT_CIV23, // NAME: Short name of the structure.
"V23", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV24(
STRUCT_V24,
TXT_CIV24, // NAME: Short name of the structure.
"V24", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List0011, // OCCUPYLIST: List of active foundation squares.
(short const *)List1100 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV25(
STRUCT_V25,
TXT_CIV25, // NAME: Short name of the structure.
"V25", // NAME: Short name of the structure.
FACING_S, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_22, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List0111, // OCCUPYLIST: List of active foundation squares.
(short const *)List1000 // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV26(
STRUCT_V26,
TXT_CIV26, // NAME: Short name of the structure.
"V26", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_21, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List11, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV27(
STRUCT_V27,
TXT_CIV27, // NAME: Short name of the structure.
"V27", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV28(
STRUCT_V28,
TXT_CIV28, // NAME: Short name of the structure.
"V28", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV29(
STRUCT_V29,
TXT_CIV29, // NAME: Short name of the structure.
"V29", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV30(
STRUCT_V30,
TXT_CIV30, // NAME: Short name of the structure.
"V30", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_21, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List11, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV31(
STRUCT_V31,
TXT_CIV31, // NAME: Short name of the structure.
"V31", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_21, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List11, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV32(
STRUCT_V32,
TXT_CIV32, // NAME: Short name of the structure.
"V32", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_21, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List11, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV33(
STRUCT_V33,
TXT_CIV33, // NAME: Short name of the structure.
"V33", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_21, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List11, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV34(
STRUCT_V34,
TXT_CIV34, // NAME: Short name of the structure.
"V34", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV35(
STRUCT_V35,
TXT_CIV35, // NAME: Short name of the structure.
"V35", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV36(
STRUCT_V36,
TXT_CIV36, // NAME: Short name of the structure.
"V36", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassV37(
STRUCT_V37,
TXT_CIV37, // NAME: Short name of the structure.
"V37", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
true, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_42, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)ListWestwood, // OCCUPYLIST: List of active foundation squares.
(short const *)OListWestwood // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassMission(
STRUCT_MISSION,
TXT_CIVMISS, // NAME: Short name of the structure.
"MISS", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_32, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List32, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
// Sandbag wall
static BuildingTypeClass const Sandbag(
STRUCT_SANDBAG_WALL,
TXT_SANDBAG_WALL, // NAME: Short name of the structure.
"SBAG", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_NONE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
true, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
false, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
// Cyclone fence
static BuildingTypeClass const Cyclone(
STRUCT_CYCLONE_WALL,
TXT_CYCLONE_WALL, // NAME: Short name of the structure.
"CYCL", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_NONE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
true, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
false, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
// Brick wall
static BuildingTypeClass const Brick(
STRUCT_BRICK_WALL,
TXT_BRICK_WALL, // NAME: Short name of the structure.
"BRIK", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_NONE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
true, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
false, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
// Barbwire wall
static BuildingTypeClass const Barbwire(
STRUCT_BARBWIRE_WALL,
TXT_BARBWIRE_WALL, // NAME: Short name of the structure.
"BARB", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_NONE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
true, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
false, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
// Wood wall
static BuildingTypeClass const Wood(
STRUCT_WOOD_WALL,
TXT_WOOD_WALL, // NAME: Short name of the structure.
"WOOD", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_NONE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
true, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
false, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const Fence(
STRUCT_FENCE,
TXT_FENCE, // NAME: Short name of the structure.
"FENC", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_NONE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
true, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
false, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
#ifdef FIXIT_ANTS
static BuildingTypeClass const ClassQueen(
STRUCT_QUEEN,
TXT_NONE, // NAME: Short name of the structure.
"QUEE", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(24,47), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
true, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
false, // Simple (one frame) damage imagery?
false, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
false, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
true, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_21, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List11, // OCCUPYLIST: List of active foundation squares.
NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassLarva1(
STRUCT_LARVA1,
TXT_NONE, // NAME: Short name of the structure.
"LAR1", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
static BuildingTypeClass const ClassLarva2(
STRUCT_LARVA2,
TXT_NONE, // NAME: Short name of the structure.
"LAR2", // NAME: Short name of the structure.
FACING_NONE, // Foundation direction from center of building.
XYP_COORD(0,0), // Exit point for produced units.
REMAP_ALTERNATE, // Sidebar remap logic.
0x0000, // Vertical offset.
0x0000, // Primary weapon offset along turret centerline.
0x0000, // Primary weapon lateral offset along turret centerline.
false, // Is this building a fake (decoy?)
false, // Animation rate is regulated for constant speed?
true, // Always use the given name for the building?
false, // Is this a wall type structure?
true, // Simple (one frame) damage imagery?
true, // Is it invisible to radar?
true, // Can the player select this?
true, // Is this a legal target for attack or move?
true, // Is this an insignificant building?
false, // Theater specific graphic image?
false, // Does it have a rotating turret?
false, // Can the building be color remapped to indicate owner?
RTTI_NONE, // The object type produced at this factory.
DIR_N, // Starting idle frame to match construction.
BSIZE_11, // SIZE: Building size.
NULL, // Preferred exit cell list.
(short const *)List1, // OCCUPYLIST: List of active foundation squares.
(short const *)NULL // OVERLAPLIST:List of overlap cell offset.
);
#endif
void const * BuildingTypeClass::WarFactoryOverlay;
void const * LightningShapes;
/***********************************************************************************************
* BuildingTypeClass::BuildingTypeClass -- This is the constructor for the building types. *
* *
* This is the constructor used to create the building types. *
* *
* INPUT: see below... *
* *
* OUTPUT: none *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 07/29/1994 JLB : Created. *
*=============================================================================================*/
BuildingTypeClass::BuildingTypeClass(
StructType type,
int name,
char const * ininame,
FacingType foundation,
COORDINATE exitpoint,
RemapType remap,
int verticaloffset,
int primaryoffset,
int primarylateral,
bool is_fake,
bool is_regulated,
bool is_nominal,
bool is_wall,
bool is_simpledamage,
bool is_stealthy,
bool is_selectable,
bool is_legal_target,
bool is_insignificant,
bool is_theater,
bool is_turret_equipped,
bool is_remappable,
RTTIType tobuild,
DirType sframe,
BSizeType size,
short const * exitlist,
short const * sizelist,
short const * overlap) :
TechnoTypeClass(RTTI_BUILDINGTYPE,
int(type),
name,
ininame,
remap,
verticaloffset,
primaryoffset,
primarylateral,
primaryoffset,
primarylateral,
is_nominal,
is_stealthy,
is_selectable,
is_legal_target,
is_insignificant,
false,
is_theater,
is_turret_equipped,
is_remappable,
true,
(is_turret_equipped ? 32 : 1),
SPEED_NONE),
IsBase(true),
IsFake(is_fake),
IsBibbed(false),
IsWall(is_wall),
IsSimpleDamage(is_simpledamage),
IsCaptureable(false),
IsRegulated(is_regulated),
IsPowered(false),
IsUnsellable(false),
FoundationFace(foundation),
Adjacent(1),
ToBuild(tobuild),
ExitCoordinate(exitpoint),
ExitList(exitlist),
Type(type),
StartFace(sframe),
Capacity(0),
Power(0),
Drain(0),
Size(size),
OccupyList(sizelist),
OverlapList(overlap),
BuildupData(0)
{
Anims[BSTATE_CONSTRUCTION].Start = 0;
Anims[BSTATE_CONSTRUCTION].Count = 1;
Anims[BSTATE_CONSTRUCTION].Rate = 0;
Anims[BSTATE_IDLE].Start = 0;
Anims[BSTATE_IDLE].Count = 1;
Anims[BSTATE_IDLE].Rate = 0;
Anims[BSTATE_ACTIVE].Start = 0;
Anims[BSTATE_ACTIVE].Count = 1;
Anims[BSTATE_ACTIVE].Rate = 0;
Anims[BSTATE_AUX1].Start = 0;
Anims[BSTATE_AUX1].Count = 1;
Anims[BSTATE_AUX1].Rate = 0;
Anims[BSTATE_AUX2].Start = 0;
Anims[BSTATE_AUX2].Count = 1;
Anims[BSTATE_AUX2].Rate = 0;
}
/***********************************************************************************************
* BuildingTypeClass::operator new -- Allocates a building type object from the special heap. *
* *
* This routine will allocate a building type object from the special heap used just for *
* allocation of object of this type. *
* *
* INPUT: none *
* *
* OUTPUT: Returns with a pointer to the newly allocated object. If the allocation could not *
* succeed, then NULL will be returned. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 07/06/1996 JLB : Created. *
*=============================================================================================*/
void * BuildingTypeClass::operator new(size_t)
{
return(BuildingTypes.Alloc());
}
/***********************************************************************************************
* BuildingTypeClass::operator delete -- Deletes a building type object from the special heap. *
* *
* This will delete a previously allocated building type object. The memory is returned *
* to the special heap that is used for that purpose. *
* *
* INPUT: ptr -- Pointer to the building type object to return to the special heap. *
* *
* OUTPUT: none *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 07/06/1996 JLB : Created. *
*=============================================================================================*/
void BuildingTypeClass::operator delete(void * ptr)
{
BuildingTypes.Free((BuildingTypeClass *)ptr);
}
/***********************************************************************************************
* BuildingTypeClass::Init_Heap -- Initialize the heap as necessary for the building type obje *
* *
* This routine performs the necessary heap initializations. Since we know exactly what *
* building type objects will be needed, they are pre-allocated at this time. *
* *
* INPUT: none *
* *
* OUTPUT: none *
* *
* WARNINGS: Call this routine only once. *
* *
* HISTORY: *
* 07/06/1996 JLB : Created. *
*=============================================================================================*/
void BuildingTypeClass::Init_Heap(void)
{
/*
** These building type class objects must be allocated in the exact order that they
** are specified in the StructType enumeration. This is necessary because the heap
** allocation block index serves double duty as the type number index.
*/
new BuildingTypeClass(ClassAdvancedTech); // STRUCT_ADVANCED_TECH
new BuildingTypeClass(ClassIronCurtain); // STRUCT_IRON_CURTAIN
new BuildingTypeClass(ClassWeapon); // STRUCT_WEAP
new BuildingTypeClass(ClassChronosphere); // STRUCT_CHRONOSPHERE
new BuildingTypeClass(ClassPillbox); // STRUCT_PILLBOX
new BuildingTypeClass(ClassCamoPillbox); // STRUCT_CAMOPILLBOX
new BuildingTypeClass(ClassCommand); // STRUCT_RADAR
new BuildingTypeClass(ClassGapGenerator); // STRUCT_GAP
new BuildingTypeClass(ClassTurret); // STRUCT_TURRET
new BuildingTypeClass(ClassAAGun); // STRUCT_AAGUN
new BuildingTypeClass(ClassFlameTurret); // STRUCT_FLAME_TURRET
new BuildingTypeClass(ClassConst); // STRUCT_CONST
new BuildingTypeClass(ClassRefinery); // STRUCT_REFINERY
new BuildingTypeClass(ClassStorage); // STRUCT_STORAGE
new BuildingTypeClass(ClassHelipad); // STRUCT_HELIPAD
new BuildingTypeClass(ClassSAM); // STRUCT_SAM
new BuildingTypeClass(ClassAirStrip); // STRUCT_AIRSTRIP
new BuildingTypeClass(ClassPower); // STRUCT_POWER
new BuildingTypeClass(ClassAdvancedPower);// STRUCT_ADVANCED_POWER
new BuildingTypeClass(ClassSovietTech); // STRUCT_SOVIET_TECH
new BuildingTypeClass(ClassHospital); // STRUCT_HOSPITAL
new BuildingTypeClass(ClassBarracks); // STRUCT_BARRACKS
new BuildingTypeClass(ClassTent); // STRUCT_TENT
new BuildingTypeClass(ClassKennel); // STRUCT_KENNEL
new BuildingTypeClass(ClassRepair); // STRUCT_REPAIR
new BuildingTypeClass(ClassBioLab); // STRUCT_BIO_LAB
new BuildingTypeClass(ClassMission); // STRUCT_MISSION
new BuildingTypeClass(ClassShipYard); // STRUCT_SHIP_YARD
new BuildingTypeClass(ClassSubPen); // STRUCT_SUB_PEN
new BuildingTypeClass(ClassMissileSilo); // STRUCT_MSLO
new BuildingTypeClass(ClassForwardCom); // STRUCT_FORWARD_COM
new BuildingTypeClass(ClassTesla); // STRUCT_TESLA
new BuildingTypeClass(ClassFakeWeapon); // STRUCT_FAKEWEAP
new BuildingTypeClass(ClassFakeConst); // STRUCT_FAKECONST
new BuildingTypeClass(ClassFakeShipYard); // STRUCT_FAKE_YARD
new BuildingTypeClass(ClassFakeSubPen); // STRUCT_FAKE_PEN
new BuildingTypeClass(ClassFakeCommand); // STRUCT_FAKE_RADAR
new BuildingTypeClass(Sandbag); // STRUCT_SANDBAG_WALL
new BuildingTypeClass(Cyclone); // STRUCT_CYCLONE_WALL
new BuildingTypeClass(Brick); // STRUCT_BRICK_WALL
new BuildingTypeClass(Barbwire); // STRUCT_BARBWIRE_WALL
new BuildingTypeClass(Wood); // STRUCT_WOOD_WALL
new BuildingTypeClass(Fence); // STRUCT_FENCE
new BuildingTypeClass(ClassAVMine); // STRUCT_AVMINE
new BuildingTypeClass(ClassAPMine); // STRUCT_APMINE
new BuildingTypeClass(ClassV01); // STRUCT_V1
new BuildingTypeClass(ClassV02); // STRUCT_V2
new BuildingTypeClass(ClassV03); // STRUCT_V3
new BuildingTypeClass(ClassV04); // STRUCT_V4
new BuildingTypeClass(ClassV05); // STRUCT_V5
new BuildingTypeClass(ClassV06); // STRUCT_V6
new BuildingTypeClass(ClassV07); // STRUCT_V7
new BuildingTypeClass(ClassV08); // STRUCT_V8
new BuildingTypeClass(ClassV09); // STRUCT_V9
new BuildingTypeClass(ClassV10); // STRUCT_V10
new BuildingTypeClass(ClassV11); // STRUCT_V11
new BuildingTypeClass(ClassV12); // STRUCT_V12
new BuildingTypeClass(ClassV13); // STRUCT_V13
new BuildingTypeClass(ClassV14); // STRUCT_V14
new BuildingTypeClass(ClassV15); // STRUCT_V15
new BuildingTypeClass(ClassV16); // STRUCT_V16
new BuildingTypeClass(ClassV17); // STRUCT_V17
new BuildingTypeClass(ClassV18); // STRUCT_V18
new BuildingTypeClass(ClassV19); // STRUCT_PUMP
new BuildingTypeClass(ClassV20); // STRUCT_V20
new BuildingTypeClass(ClassV21); // STRUCT_V21
new BuildingTypeClass(ClassV22); // STRUCT_V22
new BuildingTypeClass(ClassV23); // STRUCT_V23
new BuildingTypeClass(ClassV24); // STRUCT_V24
new BuildingTypeClass(ClassV25); // STRUCT_V25
new BuildingTypeClass(ClassV26); // STRUCT_V26
new BuildingTypeClass(ClassV27); // STRUCT_V27
new BuildingTypeClass(ClassV28); // STRUCT_V28
new BuildingTypeClass(ClassV29); // STRUCT_V29
new BuildingTypeClass(ClassV30); // STRUCT_V30
new BuildingTypeClass(ClassV31); // STRUCT_V31
new BuildingTypeClass(ClassV32); // STRUCT_V32
new BuildingTypeClass(ClassV33); // STRUCT_V33
new BuildingTypeClass(ClassV34); // STRUCT_V34
new BuildingTypeClass(ClassV35); // STRUCT_V35
new BuildingTypeClass(ClassV36); // STRUCT_V36
new BuildingTypeClass(ClassV37); // STRUCT_V37
new BuildingTypeClass(ClassBarrel); // STRUCT_BARREL
new BuildingTypeClass(ClassBarrel3); // STRUCT_BARREL3
#ifdef FIXIT_ANTS
new BuildingTypeClass(ClassQueen); // STRUCT_QUEEN
new BuildingTypeClass(ClassLarva1); // STRUCT_LARVA1
new BuildingTypeClass(ClassLarva2); // STRUCT_LARVA2
#endif
}
/***********************************************************************************************
* BuildingTypeClass::One_Time -- Performs special one time action for buildings. *
* *
* This routine is used to do the one time action necessary to handle building type class *
* objects. This entails loading of the building shapes and the brain file used by *
* buildings. *
* *
* INPUT: none *
* *
* OUTPUT: none *
* *
* WARNINGS: This routine should only be called ONCE. *
* *
* HISTORY: *
* 05/28/1994 JLB : Created. *
* 06/11/1994 JLB : Updated construction time and frame count logic. *
*=============================================================================================*/
void BuildingTypeClass::One_Time(void)
{
static const struct {
StructType Class; // Building class number.
BStateType Stage; // Animation sequence to assign animation range to.
int Start; // Starting frame number.
int Length; // Number of frames (-1 means use all frames).
int Rate; // Rate of animation.
} _anims[] = {
{STRUCT_CHRONOSPHERE, BSTATE_IDLE, 0, 4, 3}, // idling
{STRUCT_CHRONOSPHERE, BSTATE_ACTIVE, 4, 16,3}, // charging up and activating
{STRUCT_MSLO, BSTATE_IDLE, 0, 0, 0},
{STRUCT_MSLO, BSTATE_ACTIVE, 0, 5, 2}, // door opening
{STRUCT_MSLO, BSTATE_AUX1, 4, 1, 0}, // door held open
{STRUCT_MSLO, BSTATE_AUX2, 5, 3, 2}, // door closing
{STRUCT_CAMOPILLBOX, BSTATE_ACTIVE, 0, 2, 1},
{STRUCT_GAP, BSTATE_IDLE, 0, 32,3},
{STRUCT_AIRSTRIP, BSTATE_IDLE, 0, 0, 0},
{STRUCT_AIRSTRIP, BSTATE_AUX1, 0, 8, 3},
{STRUCT_BARRACKS, BSTATE_ACTIVE, 0, 10,3},
{STRUCT_BARRACKS, BSTATE_IDLE, 0, 10,3},
{STRUCT_TENT, BSTATE_ACTIVE, 0, 10,3},
{STRUCT_TENT, BSTATE_IDLE, 0, 10,3},
#ifdef FIXIT_ANTS
{STRUCT_QUEEN, BSTATE_IDLE, 0, 10,3},
#endif
{STRUCT_CONST, BSTATE_ACTIVE, 0, 26,3},
{STRUCT_FAKECONST, BSTATE_ACTIVE, 0, 26,3},
{STRUCT_HELIPAD, BSTATE_ACTIVE, 0, 7, 4},
{STRUCT_HELIPAD, BSTATE_IDLE, 0, 0, 0},
{STRUCT_HOSPITAL, BSTATE_IDLE, 0, 4, 3},
{STRUCT_PUMP, BSTATE_IDLE, 0, 14,4},
{STRUCT_REPAIR, BSTATE_ACTIVE, 0, 7, 2},
{STRUCT_REPAIR, BSTATE_IDLE, 0, 1, 0},
{STRUCT_V20, BSTATE_IDLE, 0, 3, 3},
{STRUCT_V21, BSTATE_IDLE, 0, 3, 3},
{STRUCT_V22, BSTATE_IDLE, 0, 3, 3},
{STRUCT_V23, BSTATE_IDLE, 0, 3, 3},
{STRUCT_WEAP, BSTATE_ACTIVE, 0, 1, 0},
{STRUCT_WEAP, BSTATE_IDLE, 0, 1, 0},
{STRUCT_FAKEWEAP, BSTATE_ACTIVE, 0, 1, 0},
{STRUCT_FAKEWEAP, BSTATE_IDLE, 0, 1, 0},
{STRUCT_IRON_CURTAIN, BSTATE_ACTIVE, 0, 11,3},
{STRUCT_TESLA, BSTATE_ACTIVE, 0, 10,2},
{STRUCT_AIRSTRIP, BSTATE_IDLE, 0, 8, 3}
};
for (int sindex = STRUCT_FIRST; sindex < STRUCT_COUNT; sindex++) {
char fullname[_MAX_FNAME+_MAX_EXT];
char buffer[_MAX_FNAME];
BuildingTypeClass const & building = As_Reference((StructType)sindex);
/*
** Fetch the sidebar cameo image for this building.
*/
if (building.Level != -1) {
// if (building.IsBuildable) {
sprintf(buffer, "%sICON", building.Graphic_Name());
if (building.IsFake) {
buffer[3] = 'F';
}
_makepath(fullname, NULL, NULL, buffer, ".SHP");
((void const *&)building.CameoData) = MFCD::Retrieve(fullname);
}
/*
** Fetch the construction animation for this building.
*/
sprintf(buffer, "%sMAKE", building.Graphic_Name());
_makepath(fullname, NULL, NULL, buffer, ".SHP");
void const * dataptr;
dataptr = MFCD::Retrieve(fullname);
((void const *&)building.BuildupData) = dataptr;
if (dataptr != NULL) {
int timedelay = 1;
int count = Get_Build_Frame_Count(dataptr);
if (count > 0) {
timedelay = (Rule.BuildupTime * TICKS_PER_MINUTE) / count;
}
building.Init_Anim(BSTATE_CONSTRUCTION, 0, count, timedelay);
}
/*
** Fetch the normal game shape for this building.
*/
_makepath(fullname, NULL, NULL, building.Graphic_Name(), ".SHP");
((void const *&)building.ImageData) = MFCD::Retrieve(fullname);
}
// Try to load weap2.shp and tesla coil's lightning shapes
char fullname[_MAX_FNAME+_MAX_EXT];
_makepath(fullname, NULL, NULL, (char const *)"WEAP2",".SHP");
WarFactoryOverlay = MFCD::Retrieve(fullname);
_makepath(fullname, NULL, NULL, (char const *)"LITNING",".SHP");
LightningShapes = MFCD::Retrieve(fullname);
/*
** Install all the special animation sequences for the different building types.
*/
for (unsigned index = 0; index < (sizeof(_anims) / sizeof(_anims[0])); index++) {
As_Reference(_anims[index].Class).Init_Anim(_anims[index].Stage, _anims[index].Start, _anims[index].Length, _anims[index].Rate);
}
}
/***********************************************************************************************
* Struct_From_Name -- Find BData structure from its name. *
* *
* This routine will convert an ASCII name for a building class into *
* the actual building class it represents. *
* *
* INPUT: name -- ASCII representation of a building class. *
* *
* OUTPUT: Returns with the actual building class number that the string *
* represents. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 10/07/1992 JLB : Created. *
* 05/02/1994 JLB : Converted to member function. *
*=============================================================================================*/
StructType BuildingTypeClass::From_Name(char const * name)
{
if (name != NULL) {
for (int classid = STRUCT_FIRST; classid < STRUCT_COUNT; classid++) {
if (stricmp(As_Reference((StructType)classid).IniName, name) == 0) {
return((StructType)classid);
}
}
}
return(STRUCT_NONE);
}
#ifdef SCENARIO_EDITOR
/***********************************************************************************************
* BuildingTypeClass::Display -- Renders a generic view of building. *
* *
* This routine is used to display a generic representation of the *
* building. Typical use of this occurs with the scenario editor. *
* *
* INPUT: x,y -- Coordinate to display the building (centered). *
* *
* window -- The window the building should be rendered *
* relative to. *
* *
* house -- The house color to use for the building. *
* *
* OUTPUT: none *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 05/23/1994 JLB : Created. *
*=============================================================================================*/
void BuildingTypeClass::Display(int x, int y, WindowNumberType window, HousesType ) const
{
void const * ptr = Get_Cameo_Data();
if (ptr == NULL) {
IsTheaterShape = IsTheater;
ptr = Get_Image_Data();
}
CC_Draw_Shape(ptr, 0, x, y, window, SHAPE_CENTER|SHAPE_WIN_REL);
IsTheaterShape = false;
}
/***********************************************************************************************
* BuildingTypeClass::Prep_For_Add -- Prepares scenario editor for adding a *
* *
* This routine is used to prepare the scenario editor for the addition *
* of a building object to the game. *
* *
* INPUT: none *
* *
* OUTPUT: none *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 05/23/1994 JLB : Created. *
* 06/04/1994 JLB : Uses map editing interface routines. *
*=============================================================================================*/
void BuildingTypeClass::Prep_For_Add(void)
{
for (StructType index = STRUCT_FIRST; index < STRUCT_COUNT; index++) {
if (As_Reference(index).Get_Image_Data()) {
Map.Add_To_List(&As_Reference(index));
}
}
}
#endif
/***********************************************************************************************
* BuildingTypeClass::Create_And_Place -- Creates and places a building object onto the map. *
* *
* This routine is used by the scenario editor to create and place buildings on the map. *
* *
* INPUT: cell -- The cell that the building is to be placed upon. *
* *
* house -- The owner of the building. *
* *
* OUTPUT: bool; Was the building successfully created and placed on the map? *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 05/28/1994 JLB : Created. *
*=============================================================================================*/
bool BuildingTypeClass::Create_And_Place(CELL cell, HousesType house) const
{
BuildingClass * ptr;
ptr = new BuildingClass(Type, house);
if (ptr != NULL) {
return(ptr->Unlimbo(Cell_Coord(cell), DIR_N));
}
return(false);
}
/***********************************************************************************************
* BuildingTypeClass::Create_One_Of -- Creates a building of this type. *
* *
* This routine will create a building object of this type. The building object is in a *
* limbo state. It is presumed that the building object will be unlimboed at the correct *
* place and time. Typical use is when the building is created in a factory situation *
* and will be placed on the map when construction completes. *
* *
* INPUT: house -- Pointer to the house that is to be the owner of the building. *
* *
* OUTPUT: Returns with a pointer to the building. If the building could not be created *
* then a NULL is returned. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 06/07/1994 JLB : Created. *
*=============================================================================================*/
ObjectClass * BuildingTypeClass::Create_One_Of(HouseClass * house) const
{
HousesType htype = HOUSE_NEUTRAL;
if (house != NULL) {
htype = house->Class->House;
}
return(new BuildingClass(Type, htype));
}
/***********************************************************************************************
* BuildingTypeClass::Init_Anim -- Initialize an animation control for a building. *
* *
* This routine will initialize one animation control element for a *
* specified building. This modifies a "const" class and thus must *
* perform some strategic casting to get away with this. *
* *
* INPUT: state -- The animation state to apply these data values to. *
* *
* start -- Starting frame for the building's animation. *
* *
* count -- The number of frames in this animation. *
* *
* rate -- The countdown timer between animation frames. *
* *
* OUTPUT: none *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 04/18/1994 JLB : Created. *
*=============================================================================================*/
void BuildingTypeClass::Init_Anim(BStateType state, int start, int count, int rate) const
{
((int &)Anims[state].Start) = start;
((int &)Anims[state].Count) = count;
((int &)Anims[state].Rate) = rate;
}
/***********************************************************************************************
* BuildingTypeClass::Init -- Performs theater specific initialization. *
* *
* This routine is used to perform any initialization that is custom per theater. *
* Typically, this is fetching the building shape data for those building types that have *
* theater specific art. *
* *
* INPUT: theater -- The theater to base this initialization on. *
* *
* OUTPUT: none *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 01/21/1995 JLB : Created. *
*=============================================================================================*/
void BuildingTypeClass::Init(TheaterType theater)
{
if (theater != LastTheater) {
char fullname[_MAX_FNAME+_MAX_EXT];
for (int sindex = STRUCT_FIRST; sindex < STRUCT_COUNT; sindex++) {
BuildingTypeClass const * classptr = &As_Reference((StructType)sindex);
if (classptr->IsTheater) {
_makepath(fullname, NULL, NULL, classptr->Graphic_Name(), Theaters[theater].Suffix);
((void const *&)classptr->ImageData) = MFCD::Retrieve(fullname);
/*
** Buildup data is probably theater specific as well. Fetch a pointer to the
** data at this time as well.
*/
sprintf(fullname, "%sMAKE.%s", classptr->Graphic_Name(), Theaters[theater].Suffix);
((void const *&)classptr->BuildupData) = MFCD::Retrieve(fullname);
if (classptr->BuildupData) {
int timedelay = 1;
int count = Get_Build_Frame_Count(classptr->BuildupData);
if (count != 0) {
timedelay = (5 * TICKS_PER_SECOND) / count;
}
classptr->Init_Anim(BSTATE_CONSTRUCTION, 0, count, timedelay);
}
}
}
}
}
/***********************************************************************************************
* BuildingTypeClass::Dimensions -- Fetches the pixel dimensions of the building. *
* *
* This routine will fetch the dimensions of the building (in pixels). These dimensions are *
* used to render the selection rectangle and the health bar. *
* *
* INPUT: width -- Reference to the pixel width (to be filled in). *
* *
* height -- Reference to the pixel height (to be filled in). *
* *
* OUTPUT: none *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 01/23/1995 JLB : Created. *
*=============================================================================================*/
void BuildingTypeClass::Dimensions(int &width, int &height) const
{
width = Width() * ICON_PIXEL_W;
width -= (width/5);
height = Height() * ICON_PIXEL_H;
height -= (height/5);
}
/***********************************************************************************************
* BuildingTypeClass::As_Reference -- Fetches reference to the building type specified. *
* *
* This routine will fetch a reference to the BuildingTypeClass as indicated by the *
* building type number specified. *
* *
* INPUT: type -- The building type number to convert into a BuildingTypeClass reference. *
* *
* OUTPUT: Returns with a reference to the building type class as indicated by the *
* parameter. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 01/23/1995 JLB : Created. *
*=============================================================================================*/
BuildingTypeClass & BuildingTypeClass::As_Reference(StructType type)
{
return(*BuildingTypes.Ptr(type));
}
/***********************************************************************************************
* BuildingTypeClass::Occupy_List -- Fetches the occupy list for the building. *
* *
* Use this routine to fetch the occupy list pointer for the building. The occupy list is *
* used to determine what cells the building occupies and thus precludes other buildings *
* or objects from using. *
* *
* INPUT: placement -- Is this for placement legality checking only? The normal condition *
* is for marking occupation flags. *
* *
* OUTPUT: Returns with a pointer to a cell offset list to be used to determine what cells *
* this building occupies. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 01/23/1995 JLB : Created. *
*=============================================================================================*/
short const * BuildingTypeClass::Occupy_List(bool placement) const
{
SmudgeType bib = SMUDGE_NONE;
CELL cell=0;
if (placement && Bib_And_Offset(bib, cell)) {
SmudgeTypeClass const & smudge = SmudgeTypeClass::As_Reference(bib);
static short _list[25];
short * dest = &_list[0];
/*
** Copy the bib overlap list into the working buffer.
*/
short const * src = smudge.Occupy_List();
while (*src != REFRESH_EOL) {
*dest++ = (*src++) + cell;
}
/*
** Append the building occupy list to this working buffer.
*/
src = OccupyList;
while (src && *src != REFRESH_EOL) {
*dest++ = *src++;
}
*dest = REFRESH_EOL;
return(&_list[0]);
}
if (OccupyList != NULL) {
return(OccupyList);
}
static short const _templap[] = {REFRESH_EOL};
return(&_templap[0]);
}
/***********************************************************************************************
* BuildingTypeClass::Overlap_List -- Fetches the overlap list for the building. *
* *
* This routine will fetch the overlap list for the building. The overlap list is used *
* to determine what cells the building's graphics cover, but is not considered to occupy *
* for movement purposes. *
* *
* INPUT: none *
* *
* OUTPUT: Returns with a pointer to the cell offset list that is used to determine the *
* cells that this building overlaps. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 01/23/1995 JLB : Created. *
*=============================================================================================*/
short const * BuildingTypeClass::Overlap_List(void) const
{
if (OverlapList != NULL) {
return(OverlapList);
}
static short const _templap[] = {REFRESH_EOL};
return(&_templap[0]);
}
/***********************************************************************************************
* BuildingTypeClass::Width -- Determines width of building in icons. *
* *
* Use this routine to determine the width of the building type in icons. *
* *
* INPUT: none *
* *
* OUTPUT: Returns with the building width in icons. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 02/23/1995 JLB : Created. *
*=============================================================================================*/
int BuildingTypeClass::Width(void) const
{
static int width[BSIZE_COUNT] = {
1,
2,
1,
2,
2,
3,
3,
4,
5
};
return(width[Size]);
}
/***********************************************************************************************
* BuildingTypeClass::Height -- Determines the height of the building in icons. *
* *
* Use this routine to find the height of the building in icons. *
* *
* INPUT: none *
* *
* OUTPUT: Returns with the building height in icons. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 02/23/1995 JLB : Created. *
*=============================================================================================*/
int BuildingTypeClass::Height(bool bib) const
{
static int height[BSIZE_COUNT] = {
1,
1,
2,
2,
3,
2,
3,
2,
5
};
return(height[Size] + ((bib && IsBibbed) ? 1 : 0));
}
/***********************************************************************************************
* BuildingTypeClass::Bib_And_Offset -- Determines the bib and appropriate cell offset. *
* *
* This routine is used to determine what (if any) bib should be used for this building *
* and also the cell offset for the upper left corner of the bib smudge type. *
* *
* INPUT: bib -- Reference to the bib that should be used for this building. *
* *
* cell -- The cell offset for the upper left corner of the bib. This offset is *
* relative to the upper left corner of the building. *
* *
* OUTPUT: Is a bib required for this building? If the result is true, then the correct *
* bib and cell offset will be filled in. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 05/23/1995 JLB : Created. *
*=============================================================================================*/
bool BuildingTypeClass::Bib_And_Offset(SmudgeType & bib, CELL & cell) const
{
bib = SMUDGE_NONE;
if (IsBibbed) {
switch (Width()) {
case 2:
bib = SMUDGE_BIB3;
break;
case 3:
bib = SMUDGE_BIB2;
break;
case 4:
bib = SMUDGE_BIB1;
break;
default:
bib = SMUDGE_NONE;
break;
}
/*
** Adjust the bib position for special buildings that have the bib as part
** of the building art itself.
*/
if (bib != SMUDGE_NONE) {
cell += ((Height()-1)*MAP_CELL_W);
}
}
return(bib != SMUDGE_NONE);
}
/***********************************************************************************************
* BuildingTypeClass::Max_Pips -- Determines the maximum pips to display. *
* *
* Use this routine to determine the maximum number of pips to display on this building *
* when it is rendered. Typically, this is the tiberium capacity divided by 100. *
* *
* INPUT: none *
* *
* OUTPUT: Returns with the number of pips to display on this building when selected. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 06/29/1995 JLB : Created. *
*=============================================================================================*/
int BuildingTypeClass::Max_Pips(void) const
{
int maxpips = (Width() * ICON_PIXEL_W) / 4;
return(Bound((int)(Capacity/100), 0, maxpips));
}
/***********************************************************************************************
* BuildingTypeClass::Raw_Cost -- Fetches the raw (base) cost of this building type. *
* *
* This routine is used to fetch the real raw base cost of the building. The raw cost *
* is the cost of the building less any free unit that would come with the building *
* if it were built in the normal fashion. Specifically, the helicopter cost is subtracted *
* from the helipad and the harvester cost is subtracted from the refinery. This cost *
* is used for refunding. *
* *
* INPUT: none *
* *
* OUTPUT: Returns the raw (base) cost to build the building of this type. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 09/21/1995 JLB : Created. *
*=============================================================================================*/
int BuildingTypeClass::Raw_Cost(void) const
{
int cost = TechnoTypeClass::Raw_Cost();
if (Type == STRUCT_HELIPAD && !Rule.IsSeparate) {
cost -= (AircraftTypeClass::As_Reference(AIRCRAFT_HIND).Cost + AircraftTypeClass::As_Reference(AIRCRAFT_HIND).Cost)/2;
}
if (Type == STRUCT_REFINERY) {
cost -= UnitTypeClass::As_Reference(UNIT_HARVESTER).Cost;
}
return(cost);
}
/***********************************************************************************************
* BuildingTypeClass::Cost_Of -- Fetches the cost of this building. *
* *
* This routine will fetch the cost to build the building of this type. *
* *
* INPUT: none *
* *
* OUTPUT: Returns with the cost to produce this building. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 09/21/1995 JLB : Created. *
*=============================================================================================*/
int BuildingTypeClass::Cost_Of(void) const
{
if (Rule.IsSeparate && Type == STRUCT_HELIPAD) {
return(Raw_Cost());
}
return(TechnoTypeClass::Cost_Of());
}
/***********************************************************************************************
* BuildingTypeClass::Flush_For_Placement -- Tries to clear placement area for this building t *
* *
* This routine is called when a clear space for placement is desired at the cell location *
* specified. Typical use of this routine is by the computer when it wants to build up *
* its base. *
* *
* INPUT: cell -- The cell that the building of this type would like to be placed down at. *
* *
* house -- Pointer to the house that want to clear the foundation zone. *
* *
* OUTPUT: Placement is temporarily blocked, please try again later? *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 09/27/1995 JLB : Created. *
*=============================================================================================*/
bool BuildingTypeClass::Flush_For_Placement(CELL cell, HouseClass * house) const
{
bool again = false;
if (cell > 0) {
short const * list = Occupy_List(true);
while (*list != REFRESH_EOL) {
CELL newcell = cell + *list++;
if (Map.In_Radar(newcell)) {
TechnoClass * occupier = Map[newcell].Cell_Techno();
if (occupier != NULL) {
again = true;
if (occupier->House->Is_Ally(house) && occupier->Is_Foot() && !Target_Legal(((FootClass *)occupier)->NavCom)) {
Map[newcell].Incoming(0, true);
} else {
// Base_Is_Attacked(occupier);
}
}
}
}
}
return(again);
}
/***********************************************************************************************
* BuildingTypeClass::Read_INI -- Fetch building type data from the INI database. *
* *
* This routine will fetch the building type class data from the INI database file. *
* *
* INPUT: ini -- Reference to the INI database that will be examined. *
* *
* OUTPUT: bool; Was the building entry found and the data extracted? *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 07/19/1996 JLB : Created. *
*=============================================================================================*/
bool BuildingTypeClass::Read_INI(CCINIClass & ini)
{
if (TechnoTypeClass::Read_INI(ini)) {
Speed = ini.Get_Bool(Name(), "WaterBound", (Speed == SPEED_FLOAT)) ? SPEED_FLOAT : SPEED_NONE;
Capacity = ini.Get_Int(Name(), "Storage", Capacity);
Adjacent = ini.Get_Int(Name(), "Adjacent", Adjacent);
IsCaptureable = ini.Get_Bool(Name(), "Capturable", IsCaptureable);
IsPowered = ini.Get_Bool(Name(), "Powered", IsPowered);
IsBibbed = ini.Get_Bool(Name(), "Bib", IsBibbed);
IsUnsellable = ini.Get_Bool(Name(), "Unsellable", IsUnsellable);
IsBase = ini.Get_Bool(Name(), "BaseNormal", IsBase);
Power = ini.Get_Int(Name(), "Power", (Power > 0) ? Power : -Drain);
if (Power < 0) {
Drain = -Power;
Power = 0;
}
return(true);
}
return(false);
}
/***********************************************************************************************
* BuildingTypeClass::Coord_Fixup -- Adjusts coordinate to be legal for assignment. *
* *
* This routine will adjust the specified coordinate so that it will be legal for assignment*
* to this building. All buildings are given a coordinate that is in the upper left corner *
* of a cell. This routine will drop the fractional component of the coordinate. *
* *
* INPUT: coord -- The coordinate to fixup into a legal to assign value. *
* *
* OUTPUT: Returns with a coordinate that can be assigned to the building. *
* *
* WARNINGS: The coordinate is not examined to see if the cell is legal for placing the *
* building. It merely adjusts the coordinate so that is legal at first glance. *
* *
* HISTORY: *
* 08/14/1996 JLB : Created. *
*=============================================================================================*/
COORDINATE BuildingTypeClass::Coord_Fixup(COORDINATE coord) const
{
return Coord_Whole(coord);
}
/***********************************************************************************************
* BuildingTypeClass::Full_Name -- Fetches the name to give this building. *
* *
* This routine will return the displayable given name for this building type. Normally, *
* this is the official name as well, however in the case of civilian buildings, the *
* name will just be "Civilian Building" unless special options are in place. *
* *
* INPUT: none *
* *
* OUTPUT: Returns with the text number of the building type. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 10/02/1996 JLB : Created. *
*=============================================================================================*/
int BuildingTypeClass::Full_Name(void) const
{
if (Debug_Map || Rule.IsNamed || *this < STRUCT_V01 || *this > STRUCT_V37) {
return(TechnoTypeClass::Full_Name());
}
return(TXT_CIVILIAN_BUILDING);
}