3833 lines
196 KiB
C++
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);
|
|
}
|