// // 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/CDATA.CPP 1 3/03/97 10:24a Joe_bostic $ */ /*********************************************************************************************** *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S *** *********************************************************************************************** * * * Project Name : Command & Conquer * * * * File Name : CDATA.CPP * * * * Programmer : Joe L. Bostic * * * * Start Date : May 16, 1994 * * * * Last Update : July 6, 1996 [JLB] * * * *---------------------------------------------------------------------------------------------* * Functions: * * TemplateTypeClass::As_Reference -- Fetches a reference to the template specified. * * TemplateTypeClass::Create_And_Place -- Creates and places a template object on the map. * * TemplateTypeClass::Create_One_Of -- Creates an object of this template type. * * TemplateTypeClass::Display -- Displays a generic representation of template. * * TemplateTypeClass::From_Name -- Determine template from ASCII name. * * TemplateTypeClass::Init -- Loads graphic data for templates. * * TemplateTypeClass::Land_Type -- Determines land type from template and icon number. * * TemplateTypeClass::Occupy_List -- Determines occupation list. * * TemplateTypeClass::One_Time -- Performs one-time initialization * * TemplateTypeClass::Prep_For_Add -- Prepares to add template to scenario. * * TemplateTypeClass::TemplateTypeClass -- Constructor for template type objects. * * TemplateTypeClass::operator delete -- Deletes a template type object. * * TemplateTypeClass::operator new -- Allocates a template type from special heap. * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ #include "function.h" #include "image.h" static TemplateTypeClass const PRoad01( TEMPLATE_PROAD01, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD01", TXT_CLEAR ); static TemplateTypeClass const PRoad01a( TEMPLATE_PROAD01a, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD01A", TXT_CLEAR ); static TemplateTypeClass const PRoad01b( TEMPLATE_PROAD01b, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD01B", TXT_CLEAR ); static TemplateTypeClass const PRoad02( TEMPLATE_PROAD02, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD02", TXT_CLEAR ); static TemplateTypeClass const PRoad02a( TEMPLATE_PROAD02a, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD02A", TXT_CLEAR ); static TemplateTypeClass const PRoad02b( TEMPLATE_PROAD02b, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD02B", TXT_CLEAR ); static TemplateTypeClass const PRoad03( TEMPLATE_PROAD03, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD03", TXT_CLEAR ); static TemplateTypeClass const PRoad04( TEMPLATE_PROAD04, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD04", TXT_CLEAR ); static TemplateTypeClass const PRoad05( TEMPLATE_PROAD05, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD05", TXT_CLEAR ); static TemplateTypeClass const PRoad06( TEMPLATE_PROAD06, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD06", TXT_CLEAR ); static TemplateTypeClass const PRoad07( TEMPLATE_PROAD07, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD07", TXT_CLEAR ); static TemplateTypeClass const PRoad08( TEMPLATE_PROAD08, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD08", TXT_CLEAR ); static TemplateTypeClass const PRoad09( TEMPLATE_PROAD09, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD09", TXT_CLEAR ); static TemplateTypeClass const PRoad10( TEMPLATE_PROAD10, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD10", TXT_CLEAR ); static TemplateTypeClass const PRoad11( TEMPLATE_PROAD11, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD11", TXT_CLEAR ); static TemplateTypeClass const PRoad12( TEMPLATE_PROAD12, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD12", TXT_CLEAR ); static TemplateTypeClass const PRoad13( TEMPLATE_PROAD13, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD13", TXT_CLEAR ); static TemplateTypeClass const PRoad14( TEMPLATE_PROAD14, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD14", TXT_CLEAR ); static TemplateTypeClass const PRoad15( TEMPLATE_PROAD15, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD15", TXT_CLEAR ); static TemplateTypeClass const PRoad16( TEMPLATE_PROAD16, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD16", TXT_CLEAR ); static TemplateTypeClass const PRoad17( TEMPLATE_PROAD17, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD17", TXT_CLEAR ); static TemplateTypeClass const PRoad18( TEMPLATE_PROAD18, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD18", TXT_CLEAR ); static TemplateTypeClass const PRoad19( TEMPLATE_PROAD19, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD19", TXT_CLEAR ); static TemplateTypeClass const PRoad20( TEMPLATE_PROAD20, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD20", TXT_CLEAR ); static TemplateTypeClass const PRoad21( TEMPLATE_PROAD21, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "PROAD21", TXT_CLEAR ); static TemplateTypeClass const Empty( TEMPLATE_CLEAR1, THEATERF_TEMPERATE|THEATERF_SNOW|THEATERF_INTERIOR, "CLEAR01", TXT_CLEAR ); static TemplateTypeClass const Clear( TEMPLATE_CLEAR1, THEATERF_TEMPERATE|THEATERF_SNOW|THEATERF_INTERIOR, "CLEAR01", TXT_CLEAR ); static TemplateTypeClass const ClearA( TEMPLATE_CLEAR1A, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "CLEAR01A", TXT_CLEAR ); static TemplateTypeClass const ClearB( TEMPLATE_CLEAR1B, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "CLEAR01B", TXT_CLEAR ); static TemplateTypeClass const ClearC( TEMPLATE_CLEAR1C, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "CLEAR01C", TXT_CLEAR ); static TemplateTypeClass const ClearD( TEMPLATE_CLEAR1D, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "CLEAR01D", TXT_CLEAR ); static TemplateTypeClass const ClearE( TEMPLATE_CLEAR1E, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "CLEAR01E", TXT_CLEAR ); static TemplateTypeClass const ClearF( TEMPLATE_CLEAR1F, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "CLEAR01F", TXT_CLEAR ); static TemplateTypeClass const ClearG( TEMPLATE_CLEAR1G, THEATERF_TEMPERATE | THEATERF_SNOW | THEATERF_INTERIOR, "CLEAR01G", TXT_CLEAR ); static TemplateTypeClass const Road01( TEMPLATE_ROAD01, THEATERF_TEMPERATE|THEATERF_SNOW, "CLEAR01", TXT_ROAD ); static TemplateTypeClass const Road02( TEMPLATE_ROAD02, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC02", TXT_ROAD ); static TemplateTypeClass const Road03( TEMPLATE_ROAD03, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC03", TXT_ROAD ); static TemplateTypeClass const Road04( TEMPLATE_ROAD04, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC04", TXT_ROAD ); static TemplateTypeClass const Road05( TEMPLATE_ROAD05, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC05", TXT_ROAD ); static TemplateTypeClass const Road06( TEMPLATE_ROAD06, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC06", TXT_ROAD ); static TemplateTypeClass const Road07( TEMPLATE_ROAD07, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC07", TXT_ROAD ); static TemplateTypeClass const Road08( TEMPLATE_ROAD08, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC08", TXT_ROAD ); static TemplateTypeClass const Road09( TEMPLATE_ROAD09, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC09", TXT_ROAD ); static TemplateTypeClass const Road10( TEMPLATE_ROAD10, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC10", TXT_ROAD ); static TemplateTypeClass const Road11( TEMPLATE_ROAD11, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC11", TXT_ROAD ); static TemplateTypeClass const Road12( TEMPLATE_ROAD12, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC12", TXT_ROAD ); static TemplateTypeClass const Road13( TEMPLATE_ROAD13, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC13", TXT_ROAD ); static TemplateTypeClass const Road14( TEMPLATE_ROAD14, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC14", TXT_ROAD ); static TemplateTypeClass const Road15( TEMPLATE_ROAD15, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC15", TXT_ROAD ); static TemplateTypeClass const Road16( TEMPLATE_ROAD16, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC16", TXT_ROAD ); static TemplateTypeClass const Road17( TEMPLATE_ROAD17, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC17", TXT_ROAD ); static TemplateTypeClass const Road18( TEMPLATE_ROAD18, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC18", TXT_ROAD ); static TemplateTypeClass const Road19( TEMPLATE_ROAD19, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC19", TXT_ROAD ); static TemplateTypeClass const Road20( TEMPLATE_ROAD20, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC20", TXT_ROAD ); static TemplateTypeClass const Road21( TEMPLATE_ROAD21, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC21", TXT_ROAD ); static TemplateTypeClass const Road22( TEMPLATE_ROAD22, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC22", TXT_ROAD ); static TemplateTypeClass const Road23( TEMPLATE_ROAD23, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC23", TXT_ROAD ); static TemplateTypeClass const Road24( TEMPLATE_ROAD24, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC24", TXT_ROAD ); static TemplateTypeClass const Road25( TEMPLATE_ROAD25, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC01", TXT_ROAD ); static TemplateTypeClass const Road26( TEMPLATE_ROAD26, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC02", TXT_ROAD ); static TemplateTypeClass const Road27( TEMPLATE_ROAD27, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC02", TXT_ROAD ); static TemplateTypeClass const Road28( TEMPLATE_ROAD28, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC03", TXT_ROAD ); static TemplateTypeClass const Road29( TEMPLATE_ROAD29, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC04", TXT_ROAD ); static TemplateTypeClass const Road30( TEMPLATE_ROAD30, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC05", TXT_ROAD ); static TemplateTypeClass const Road31( TEMPLATE_ROAD31, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC06", TXT_ROAD ); static TemplateTypeClass const Road32( TEMPLATE_ROAD32, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC07", TXT_ROAD ); static TemplateTypeClass const Road33( TEMPLATE_ROAD33, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC08", TXT_ROAD ); static TemplateTypeClass const Road34( TEMPLATE_ROAD34, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC09", TXT_ROAD ); static TemplateTypeClass const Road35( TEMPLATE_ROAD35, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC10", TXT_ROAD ); static TemplateTypeClass const Road36( TEMPLATE_ROAD36, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC11", TXT_ROAD ); static TemplateTypeClass const Road37( TEMPLATE_ROAD37, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC12", TXT_ROAD ); static TemplateTypeClass const Road38( TEMPLATE_ROAD38, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC13", TXT_ROAD ); static TemplateTypeClass const Road39( TEMPLATE_ROAD39, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC14", TXT_ROAD ); static TemplateTypeClass const Road40( TEMPLATE_ROAD40, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC15", TXT_ROAD ); static TemplateTypeClass const Road41( TEMPLATE_ROAD41, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC16", TXT_ROAD ); static TemplateTypeClass const Road42( TEMPLATE_ROAD42, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC17", TXT_ROAD ); static TemplateTypeClass const Road43( TEMPLATE_ROAD43, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADC18", TXT_ROAD ); static TemplateTypeClass const Water( TEMPLATE_WATER, THEATERF_TEMPERATE|THEATERF_SNOW, "WATER01", TXT_WATER ); static TemplateTypeClass const Water2( TEMPLATE_WATER2, THEATERF_TEMPERATE|THEATERF_SNOW, "WATER02", TXT_WATER ); static TemplateTypeClass const Shore01( TEMPLATE_SHORE01, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE01", TXT_SHORE ); static TemplateTypeClass const Shore02( TEMPLATE_SHORE02, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE02", TXT_SHORE ); static TemplateTypeClass const Shore03( TEMPLATE_SHORE03, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE03", TXT_SHORE ); static TemplateTypeClass const Shore04( TEMPLATE_SHORE04, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE04", TXT_SHORE ); static TemplateTypeClass const Shore05( TEMPLATE_SHORE05, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE05", TXT_SHORE ); static TemplateTypeClass const Shore06( TEMPLATE_SHORE06, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE06", TXT_SHORE ); static TemplateTypeClass const Shore07( TEMPLATE_SHORE07, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE07", TXT_SHORE ); static TemplateTypeClass const Shore08( TEMPLATE_SHORE08, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE08", TXT_SHORE ); static TemplateTypeClass const Shore09( TEMPLATE_SHORE09, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE09", TXT_SHORE ); static TemplateTypeClass const Shore10( TEMPLATE_SHORE10, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE10", TXT_SHORE ); static TemplateTypeClass const Shore11( TEMPLATE_SHORE11, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE11", TXT_SHORE ); static TemplateTypeClass const Shore12( TEMPLATE_SHORE12, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE12", TXT_SHORE ); static TemplateTypeClass const Shore13( TEMPLATE_SHORE13, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE13", TXT_SHORE ); static TemplateTypeClass const Shore14( TEMPLATE_SHORE14, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE14", TXT_SHORE ); static TemplateTypeClass const Shore15( TEMPLATE_SHORE15, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE15", TXT_SHORE ); static TemplateTypeClass const Shore16( TEMPLATE_SHORE16, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE16", TXT_SHORE ); static TemplateTypeClass const Shore17( TEMPLATE_SHORE17, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE17", TXT_SHORE ); static TemplateTypeClass const Shore18( TEMPLATE_SHORE18, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE18", TXT_SHORE ); static TemplateTypeClass const Shore19( TEMPLATE_SHORE19, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE19", TXT_SHORE ); static TemplateTypeClass const Shore20( TEMPLATE_SHORE20, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE20", TXT_SHORE ); static TemplateTypeClass const Shore21( TEMPLATE_SHORE21, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE21", TXT_SHORE ); static TemplateTypeClass const Shore22( TEMPLATE_SHORE22, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE22", TXT_SHORE ); static TemplateTypeClass const Shore23( TEMPLATE_SHORE23, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE23", TXT_SHORE ); static TemplateTypeClass const Shore24( TEMPLATE_SHORE24, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE24", TXT_SHORE ); static TemplateTypeClass const Shore25( TEMPLATE_SHORE25, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE25", TXT_SHORE ); static TemplateTypeClass const Shore26( TEMPLATE_SHORE26, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE26", TXT_SHORE ); static TemplateTypeClass const Shore27( TEMPLATE_SHORE27, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE27", TXT_SHORE ); static TemplateTypeClass const Shore28( TEMPLATE_SHORE28, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE28", TXT_SHORE ); static TemplateTypeClass const Shore29( TEMPLATE_SHORE29, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE29", TXT_SHORE ); static TemplateTypeClass const Shore30( TEMPLATE_SHORE30, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE30", TXT_SHORE ); static TemplateTypeClass const Shore31( TEMPLATE_SHORE31, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE31", TXT_SHORE ); static TemplateTypeClass const Shore32( TEMPLATE_SHORE32, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE32", TXT_SHORE ); static TemplateTypeClass const Shore33( TEMPLATE_SHORE33, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE33", TXT_SHORE ); static TemplateTypeClass const Shore34( TEMPLATE_SHORE34, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE4", TXT_SHORE ); static TemplateTypeClass const Shore35( TEMPLATE_SHORE35, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE35", TXT_SHORE ); static TemplateTypeClass const Shore36( TEMPLATE_SHORE36, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE36", TXT_SHORE ); static TemplateTypeClass const Shore37( TEMPLATE_SHORE37, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE37", TXT_SHORE ); static TemplateTypeClass const Shore38( TEMPLATE_SHORE38, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE38", TXT_SHORE ); static TemplateTypeClass const Shore39( TEMPLATE_SHORE39, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE39", TXT_SHORE ); static TemplateTypeClass const Shore40( TEMPLATE_SHORE40, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE40", TXT_SHORE ); static TemplateTypeClass const Shore41( TEMPLATE_SHORE41, THEATERF_TEMPERATE|THEATERF_SNOW, "SHORE41", TXT_SHORE ); // jmarshall static TemplateTypeClass const Bridge1x( TEMPLATE_BRIDGE1X, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge1( TEMPLATE_BRIDGE1, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge1h( TEMPLATE_BRIDGE1H, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge1d( TEMPLATE_BRIDGE1D, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge2x( TEMPLATE_BRIDGE2X, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge2( TEMPLATE_BRIDGE2, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge2h( TEMPLATE_BRIDGE2H, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge2d( TEMPLATE_BRIDGE2D, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge1ax( TEMPLATE_BRIDGE_1AX, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge1a( TEMPLATE_BRIDGE_1A, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge1b( TEMPLATE_BRIDGE_1B, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge1c( TEMPLATE_BRIDGE_1C, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge2ax( TEMPLATE_BRIDGE_2AX, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge2a( TEMPLATE_BRIDGE_2A, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge2b( TEMPLATE_BRIDGE_2B, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge2c( TEMPLATE_BRIDGE_2C, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge3a( TEMPLATE_BRIDGE_3A, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge3b( TEMPLATE_BRIDGE_3B, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge3c( TEMPLATE_BRIDGE_3C, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge3d( TEMPLATE_BRIDGE_3D, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge3e( TEMPLATE_BRIDGE_3E, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const Bridge3f( TEMPLATE_BRIDGE_3F, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_BRIDGE ); static TemplateTypeClass const ShoreCliff01( TEMPLATE_SHORECLIFF01, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF01", TXT_SHORE ); static TemplateTypeClass const ShoreCliff02( TEMPLATE_SHORECLIFF02, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF02", TXT_SHORE ); static TemplateTypeClass const ShoreCliff03( TEMPLATE_SHORECLIFF03, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF03", TXT_SHORE ); static TemplateTypeClass const ShoreCliff04( TEMPLATE_SHORECLIFF04, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF04", TXT_SHORE ); static TemplateTypeClass const ShoreCliff05( TEMPLATE_SHORECLIFF05, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF05", TXT_SHORE ); static TemplateTypeClass const ShoreCliff06( TEMPLATE_SHORECLIFF06, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF06", TXT_SHORE ); static TemplateTypeClass const ShoreCliff07( TEMPLATE_SHORECLIFF07, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF07", TXT_SHORE ); static TemplateTypeClass const ShoreCliff08( TEMPLATE_SHORECLIFF08, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF08", TXT_SHORE ); static TemplateTypeClass const ShoreCliff09( TEMPLATE_SHORECLIFF09, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF09", TXT_SHORE ); static TemplateTypeClass const ShoreCliff10( TEMPLATE_SHORECLIFF10, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF10", TXT_SHORE ); static TemplateTypeClass const ShoreCliff11( TEMPLATE_SHORECLIFF11, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF11", TXT_SHORE ); static TemplateTypeClass const ShoreCliff12( TEMPLATE_SHORECLIFF12, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF12", TXT_SHORE ); static TemplateTypeClass const ShoreCliff13( TEMPLATE_SHORECLIFF13, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF13", TXT_SHORE ); static TemplateTypeClass const ShoreCliff14( TEMPLATE_SHORECLIFF14, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF14", TXT_SHORE ); static TemplateTypeClass const ShoreCliff15( TEMPLATE_SHORECLIFF15, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF15", TXT_SHORE ); static TemplateTypeClass const ShoreCliff16( TEMPLATE_SHORECLIFF16, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF16", TXT_SHORE ); static TemplateTypeClass const ShoreCliff17( TEMPLATE_SHORECLIFF17, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF17", TXT_SHORE ); static TemplateTypeClass const ShoreCliff18( TEMPLATE_SHORECLIFF18, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF18", TXT_SHORE ); static TemplateTypeClass const ShoreCliff19( TEMPLATE_SHORECLIFF19, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF19", TXT_SHORE ); static TemplateTypeClass const ShoreCliff20( TEMPLATE_SHORECLIFF20, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF20", TXT_SHORE ); static TemplateTypeClass const ShoreCliff21( TEMPLATE_SHORECLIFF21, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF21", TXT_SHORE ); static TemplateTypeClass const ShoreCliff22( TEMPLATE_SHORECLIFF22, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF22", TXT_SHORE ); static TemplateTypeClass const ShoreCliff23( TEMPLATE_SHORECLIFF23, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF23", TXT_SHORE ); static TemplateTypeClass const ShoreCliff24( TEMPLATE_SHORECLIFF24, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF24", TXT_SHORE ); static TemplateTypeClass const ShoreCliff25( TEMPLATE_SHORECLIFF25, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF25", TXT_SHORE ); static TemplateTypeClass const ShoreCliff26( TEMPLATE_SHORECLIFF26, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF26", TXT_SHORE ); static TemplateTypeClass const ShoreCliff27( TEMPLATE_SHORECLIFF27, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF27", TXT_SHORE ); static TemplateTypeClass const ShoreCliff28( TEMPLATE_SHORECLIFF28, THEATERF_TEMPERATE|THEATERF_SNOW, "WCLIFF28", TXT_SHORE ); static TemplateTypeClass const Rough01( TEMPLATE_ROUGH01, THEATERF_TEMPERATE|THEATERF_SNOW, "ROUGH01", TXT_ROCK ); static TemplateTypeClass const Rough02( TEMPLATE_ROUGH02, THEATERF_TEMPERATE|THEATERF_SNOW, "ROUGH02", TXT_ROCK ); static TemplateTypeClass const Rough03( TEMPLATE_ROUGH03, THEATERF_TEMPERATE|THEATERF_SNOW, "ROUGH03", TXT_ROCK ); static TemplateTypeClass const Rough04( TEMPLATE_ROUGH04, THEATERF_TEMPERATE|THEATERF_SNOW, "ROUGH04", TXT_ROCK ); static TemplateTypeClass const Rough05( TEMPLATE_ROUGH05, THEATERF_TEMPERATE|THEATERF_SNOW, "ROUGH05", TXT_ROCK ); static TemplateTypeClass const Rough06( TEMPLATE_ROUGH06, THEATERF_TEMPERATE|THEATERF_SNOW, "ROUGH06", TXT_ROCK ); static TemplateTypeClass const Rough07( TEMPLATE_ROUGH07, THEATERF_TEMPERATE|THEATERF_SNOW, "ROUGH07", TXT_ROCK ); static TemplateTypeClass const Rough08( TEMPLATE_ROUGH08, THEATERF_TEMPERATE|THEATERF_SNOW, "ROUGH08", TXT_ROCK ); static TemplateTypeClass const Rough09( TEMPLATE_ROUGH09, THEATERF_TEMPERATE|THEATERF_SNOW, "ROUGH10", TXT_ROCK ); static TemplateTypeClass const Rough10( TEMPLATE_ROADS1, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADS01", TXT_ROCK ); static TemplateTypeClass const Rough11( TEMPLATE_ROADS2, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADS02", TXT_ROCK ); static TemplateTypeClass const RiverCliff01( TEMPLATE_ROADS3, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADS03", TXT_RIVER ); static TemplateTypeClass const RiverCliff02( TEMPLATE_ROADS4, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADS04", TXT_RIVER ); static TemplateTypeClass const RiverCliff03( TEMPLATE_ROADS5, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADS05", TXT_RIVER ); static TemplateTypeClass const RiverCliff04( TEMPLATE_ROADS6, THEATERF_TEMPERATE|THEATERF_SNOW, "DROADS06", TXT_RIVER ); static TemplateTypeClass const F01( TEMPLATE_F01, THEATERF_TEMPERATE|THEATERF_SNOW, "F01", TXT_RIVER ); static TemplateTypeClass const F02( TEMPLATE_F02, THEATERF_TEMPERATE|THEATERF_SNOW, "F02", TXT_RIVER ); static TemplateTypeClass const F03( TEMPLATE_F03, THEATERF_TEMPERATE|THEATERF_SNOW, "F03", TXT_RIVER ); static TemplateTypeClass const F04( TEMPLATE_F04, THEATERF_TEMPERATE|THEATERF_SNOW, "F04", TXT_RIVER ); static TemplateTypeClass const F05( TEMPLATE_F05, THEATERF_TEMPERATE|THEATERF_SNOW, "F05", TXT_RIVER ); static TemplateTypeClass const F06( TEMPLATE_F06, THEATERF_TEMPERATE|THEATERF_SNOW, "F06", TXT_RIVER ); static TemplateTypeClass const ARRO0001( TEMPLATE_ARRO0001, THEATERF_INTERIOR, "ARRO0001", TXT_INTERIOR ); static TemplateTypeClass const ARRO0002( TEMPLATE_ARRO0002, THEATERF_INTERIOR, "ARRO0002", TXT_INTERIOR ); static TemplateTypeClass const ARRO0003( TEMPLATE_ARRO0003, THEATERF_INTERIOR, "ARRO0003", TXT_INTERIOR ); static TemplateTypeClass const ARRO0004( TEMPLATE_ARRO0004, THEATERF_INTERIOR, "ARRO0004", TXT_INTERIOR ); static TemplateTypeClass const ARRO0005( TEMPLATE_ARRO0005, THEATERF_INTERIOR, "ARRO0005", TXT_INTERIOR ); static TemplateTypeClass const ARRO0006( TEMPLATE_ARRO0006, THEATERF_INTERIOR, "ARRO0006", TXT_INTERIOR ); static TemplateTypeClass const ARRO0007( TEMPLATE_ARRO0007, THEATERF_INTERIOR, "ARRO0007", TXT_INTERIOR ); static TemplateTypeClass const ARRO0008( TEMPLATE_ARRO0008, THEATERF_INTERIOR, "ARRO0008", TXT_INTERIOR ); static TemplateTypeClass const ARRO0009( TEMPLATE_ARRO0009, THEATERF_INTERIOR, "ARRO0009", TXT_INTERIOR ); static TemplateTypeClass const ARRO0010( TEMPLATE_ARRO0010, THEATERF_INTERIOR, "ARRO0010", TXT_INTERIOR ); static TemplateTypeClass const ARRO0011( TEMPLATE_ARRO0011, THEATERF_INTERIOR, "ARRO0011", TXT_INTERIOR ); static TemplateTypeClass const ARRO0012( TEMPLATE_ARRO0012, THEATERF_INTERIOR, "ARRO0012", TXT_INTERIOR ); static TemplateTypeClass const ARRO0013( TEMPLATE_ARRO0013, THEATERF_INTERIOR, "ARRO0013", TXT_INTERIOR ); static TemplateTypeClass const ARRO0014( TEMPLATE_ARRO0014, THEATERF_INTERIOR, "ARRO0014", TXT_INTERIOR ); static TemplateTypeClass const ARRO0015( TEMPLATE_ARRO0015, THEATERF_INTERIOR, "ARRO0015", TXT_INTERIOR ); static TemplateTypeClass const FLOR0001( TEMPLATE_FLOR0001, THEATERF_INTERIOR, "FLOR0001", TXT_INTERIOR ); static TemplateTypeClass const FLOR0002( TEMPLATE_FLOR0002, THEATERF_INTERIOR, "FLOR0002", TXT_INTERIOR ); static TemplateTypeClass const FLOR0003( TEMPLATE_FLOR0003, THEATERF_INTERIOR, "FLOR0003", TXT_INTERIOR ); static TemplateTypeClass const FLOR0004( TEMPLATE_FLOR0004, THEATERF_INTERIOR, "FLOR0004", TXT_INTERIOR ); static TemplateTypeClass const FLOR0005( TEMPLATE_FLOR0005, THEATERF_INTERIOR, "FLOR0005", TXT_INTERIOR ); static TemplateTypeClass const FLOR0006( TEMPLATE_FLOR0006, THEATERF_INTERIOR, "FLOR0006", TXT_INTERIOR ); static TemplateTypeClass const FLOR0007( TEMPLATE_FLOR0007, THEATERF_INTERIOR, "FLOR0007", TXT_INTERIOR ); static TemplateTypeClass const GFLR0001( TEMPLATE_GFLR0001, THEATERF_INTERIOR, "GFLR0001", TXT_INTERIOR ); static TemplateTypeClass const GFLR0002( TEMPLATE_GFLR0002, THEATERF_INTERIOR, "GFLR0002", TXT_INTERIOR ); static TemplateTypeClass const GFLR0003( TEMPLATE_GFLR0003, THEATERF_INTERIOR, "GFLR0003", TXT_INTERIOR ); static TemplateTypeClass const GFLR0004( TEMPLATE_GFLR0004, THEATERF_INTERIOR, "GFLR0004", TXT_INTERIOR ); static TemplateTypeClass const GFLR0005( TEMPLATE_GFLR0005, THEATERF_INTERIOR, "GFLR0005", TXT_INTERIOR ); static TemplateTypeClass const GSTR0001( TEMPLATE_GSTR0001, THEATERF_INTERIOR, "GSTR0001", TXT_INTERIOR ); static TemplateTypeClass const GSTR0002( TEMPLATE_GSTR0002, THEATERF_INTERIOR, "GSTR0002", TXT_INTERIOR ); static TemplateTypeClass const GSTR0003( TEMPLATE_GSTR0003, THEATERF_INTERIOR, "GSTR0003", TXT_INTERIOR ); static TemplateTypeClass const GSTR0004( TEMPLATE_GSTR0004, THEATERF_INTERIOR, "GSTR0004", TXT_INTERIOR ); static TemplateTypeClass const GSTR0005( TEMPLATE_GSTR0005, THEATERF_INTERIOR, "GSTR0005", TXT_INTERIOR ); static TemplateTypeClass const GSTR0006( TEMPLATE_GSTR0006, THEATERF_INTERIOR, "GSTR0006", TXT_INTERIOR ); static TemplateTypeClass const GSTR0007( TEMPLATE_GSTR0007, THEATERF_INTERIOR, "GSTR0007", TXT_INTERIOR ); static TemplateTypeClass const GSTR0008( TEMPLATE_GSTR0008, THEATERF_INTERIOR, "GSTR0008", TXT_INTERIOR ); static TemplateTypeClass const GSTR0009( TEMPLATE_GSTR0009, THEATERF_INTERIOR, "GSTR0009", TXT_INTERIOR ); static TemplateTypeClass const GSTR0010( TEMPLATE_GSTR0010, THEATERF_INTERIOR, "GSTR0010", TXT_INTERIOR ); static TemplateTypeClass const GSTR0011( TEMPLATE_GSTR0011, THEATERF_INTERIOR, "GSTR0011", TXT_INTERIOR ); static TemplateTypeClass const LWAL0001( TEMPLATE_LWAL0001, THEATERF_INTERIOR, "LWAL0001", TXT_INTERIOR ); static TemplateTypeClass const LWAL0002( TEMPLATE_LWAL0002, THEATERF_INTERIOR, "LWAL0002", TXT_INTERIOR ); static TemplateTypeClass const LWAL0003( TEMPLATE_LWAL0003, THEATERF_INTERIOR, "LWAL0003", TXT_INTERIOR ); static TemplateTypeClass const LWAL0004( TEMPLATE_LWAL0004, THEATERF_INTERIOR, "LWAL0004", TXT_INTERIOR ); static TemplateTypeClass const LWAL0005( TEMPLATE_LWAL0005, THEATERF_INTERIOR, "LWAL0005", TXT_INTERIOR ); static TemplateTypeClass const LWAL0006( TEMPLATE_LWAL0006, THEATERF_INTERIOR, "LWAL0006", TXT_INTERIOR ); static TemplateTypeClass const LWAL0007( TEMPLATE_LWAL0007, THEATERF_INTERIOR, "LWAL0007", TXT_INTERIOR ); static TemplateTypeClass const LWAL0008( TEMPLATE_LWAL0008, THEATERF_INTERIOR, "LWAL0008", TXT_INTERIOR ); static TemplateTypeClass const LWAL0009( TEMPLATE_LWAL0009, THEATERF_INTERIOR, "LWAL0009", TXT_INTERIOR ); static TemplateTypeClass const LWAL0010( TEMPLATE_LWAL0010, THEATERF_INTERIOR, "LWAL0010", TXT_INTERIOR ); static TemplateTypeClass const LWAL0011( TEMPLATE_LWAL0011, THEATERF_INTERIOR, "LWAL0011", TXT_INTERIOR ); static TemplateTypeClass const LWAL0012( TEMPLATE_LWAL0012, THEATERF_INTERIOR, "LWAL0012", TXT_INTERIOR ); static TemplateTypeClass const LWAL0013( TEMPLATE_LWAL0013, THEATERF_INTERIOR, "LWAL0013", TXT_INTERIOR ); static TemplateTypeClass const LWAL0014( TEMPLATE_LWAL0014, THEATERF_INTERIOR, "LWAL0014", TXT_INTERIOR ); static TemplateTypeClass const LWAL0015( TEMPLATE_LWAL0015, THEATERF_INTERIOR, "LWAL0015", TXT_INTERIOR ); static TemplateTypeClass const LWAL0016( TEMPLATE_LWAL0016, THEATERF_INTERIOR, "LWAL0016", TXT_INTERIOR ); static TemplateTypeClass const LWAL0017( TEMPLATE_LWAL0017, THEATERF_INTERIOR, "LWAL0017", TXT_INTERIOR ); static TemplateTypeClass const LWAL0018( TEMPLATE_LWAL0018, THEATERF_INTERIOR, "LWAL0018", TXT_INTERIOR ); static TemplateTypeClass const LWAL0019( TEMPLATE_LWAL0019, THEATERF_INTERIOR, "LWAL0019", TXT_INTERIOR ); static TemplateTypeClass const LWAL0020( TEMPLATE_LWAL0020, THEATERF_INTERIOR, "LWAL0020", TXT_INTERIOR ); static TemplateTypeClass const LWAL0021( TEMPLATE_LWAL0021, THEATERF_INTERIOR, "LWAL0021", TXT_INTERIOR ); static TemplateTypeClass const LWAL0022( TEMPLATE_LWAL0022, THEATERF_INTERIOR, "LWAL0022", TXT_INTERIOR ); static TemplateTypeClass const LWAL0023( TEMPLATE_LWAL0023, THEATERF_INTERIOR, "LWAL0023", TXT_INTERIOR ); static TemplateTypeClass const LWAL0024( TEMPLATE_LWAL0024, THEATERF_INTERIOR, "LWAL0024", TXT_INTERIOR ); static TemplateTypeClass const LWAL0025( TEMPLATE_LWAL0025, THEATERF_INTERIOR, "LWAL0025", TXT_INTERIOR ); static TemplateTypeClass const LWAL0026( TEMPLATE_LWAL0026, THEATERF_INTERIOR, "LWAL0026", TXT_INTERIOR ); static TemplateTypeClass const LWAL0027( TEMPLATE_LWAL0027, THEATERF_INTERIOR, "LWAL0027", TXT_INTERIOR ); static TemplateTypeClass const STRP0001( TEMPLATE_STRP0001, THEATERF_INTERIOR, "STRP0001", TXT_INTERIOR ); static TemplateTypeClass const STRP0002( TEMPLATE_STRP0002, THEATERF_INTERIOR, "STRP0002", TXT_INTERIOR ); static TemplateTypeClass const STRP0003( TEMPLATE_STRP0003, THEATERF_INTERIOR, "STRP0003", TXT_INTERIOR ); static TemplateTypeClass const STRP0004( TEMPLATE_STRP0004, THEATERF_INTERIOR, "STRP0004", TXT_INTERIOR ); static TemplateTypeClass const STRP0005( TEMPLATE_STRP0005, THEATERF_INTERIOR, "STRP0005", TXT_INTERIOR ); static TemplateTypeClass const STRP0006( TEMPLATE_STRP0006, THEATERF_INTERIOR, "STRP0006", TXT_INTERIOR ); static TemplateTypeClass const STRP0007( TEMPLATE_STRP0007, THEATERF_INTERIOR, "STRP0007", TXT_INTERIOR ); static TemplateTypeClass const STRP0008( TEMPLATE_STRP0008, THEATERF_INTERIOR, "STRP0008", TXT_INTERIOR ); static TemplateTypeClass const STRP0009( TEMPLATE_STRP0009, THEATERF_INTERIOR, "STRP0009", TXT_INTERIOR ); static TemplateTypeClass const STRP0010( TEMPLATE_STRP0010, THEATERF_INTERIOR, "STRP0010", TXT_INTERIOR ); static TemplateTypeClass const STRP0011( TEMPLATE_STRP0011, THEATERF_INTERIOR, "STRP0011", TXT_INTERIOR ); static TemplateTypeClass const WALL0001( TEMPLATE_WALL0001, THEATERF_INTERIOR, "WALL0001", TXT_INTERIOR ); static TemplateTypeClass const WALL0002( TEMPLATE_WALL0002, THEATERF_INTERIOR, "WALL0002", TXT_INTERIOR ); static TemplateTypeClass const WALL0003( TEMPLATE_WALL0003, THEATERF_INTERIOR, "WALL0003", TXT_INTERIOR ); static TemplateTypeClass const WALL0004( TEMPLATE_WALL0004, THEATERF_INTERIOR, "WALL0004", TXT_INTERIOR ); static TemplateTypeClass const WALL0005( TEMPLATE_WALL0005, THEATERF_INTERIOR, "WALL0005", TXT_INTERIOR ); static TemplateTypeClass const WALL0006( TEMPLATE_WALL0006, THEATERF_INTERIOR, "WALL0006", TXT_INTERIOR ); static TemplateTypeClass const WALL0007( TEMPLATE_WALL0007, THEATERF_INTERIOR, "WALL0007", TXT_INTERIOR ); static TemplateTypeClass const WALL0008( TEMPLATE_WALL0008, THEATERF_INTERIOR, "WALL0008", TXT_INTERIOR ); static TemplateTypeClass const WALL0009( TEMPLATE_WALL0009, THEATERF_INTERIOR, "WALL0009", TXT_INTERIOR ); static TemplateTypeClass const WALL0010( TEMPLATE_WALL0010, THEATERF_INTERIOR, "WALL0010", TXT_INTERIOR ); static TemplateTypeClass const WALL0011( TEMPLATE_WALL0011, THEATERF_INTERIOR, "WALL0011", TXT_INTERIOR ); static TemplateTypeClass const WALL0012( TEMPLATE_WALL0012, THEATERF_INTERIOR, "WALL0012", TXT_INTERIOR ); static TemplateTypeClass const WALL0013( TEMPLATE_WALL0013, THEATERF_INTERIOR, "WALL0013", TXT_INTERIOR ); static TemplateTypeClass const WALL0014( TEMPLATE_WALL0014, THEATERF_INTERIOR, "WALL0014", TXT_INTERIOR ); static TemplateTypeClass const WALL0015( TEMPLATE_WALL0015, THEATERF_INTERIOR, "WALL0015", TXT_INTERIOR ); static TemplateTypeClass const WALL0016( TEMPLATE_WALL0016, THEATERF_INTERIOR, "WALL0016", TXT_INTERIOR ); static TemplateTypeClass const WALL0017( TEMPLATE_WALL0017, THEATERF_INTERIOR, "WALL0017", TXT_INTERIOR ); static TemplateTypeClass const WALL0018( TEMPLATE_WALL0018, THEATERF_INTERIOR, "WALL0018", TXT_INTERIOR ); static TemplateTypeClass const WALL0019( TEMPLATE_WALL0019, THEATERF_INTERIOR, "WALL0019", TXT_INTERIOR ); static TemplateTypeClass const WALL0020( TEMPLATE_WALL0020, THEATERF_INTERIOR, "WALL0020", TXT_INTERIOR ); static TemplateTypeClass const WALL0021( TEMPLATE_WALL0021, THEATERF_INTERIOR, "WALL0021", TXT_INTERIOR ); static TemplateTypeClass const WALL0022( TEMPLATE_WALL0022, THEATERF_INTERIOR, "WALL0022", TXT_INTERIOR ); static TemplateTypeClass const WALL0023( TEMPLATE_WALL0023, THEATERF_INTERIOR, "WALL0023", TXT_INTERIOR ); static TemplateTypeClass const WALL0024( TEMPLATE_WALL0024, THEATERF_INTERIOR, "WALL0024", TXT_INTERIOR ); static TemplateTypeClass const WALL0025( TEMPLATE_WALL0025, THEATERF_INTERIOR, "WALL0025", TXT_INTERIOR ); static TemplateTypeClass const WALL0026( TEMPLATE_WALL0026, THEATERF_INTERIOR, "WALL0026", TXT_INTERIOR ); static TemplateTypeClass const WALL0027( TEMPLATE_WALL0027, THEATERF_INTERIOR, "WALL0027", TXT_INTERIOR ); static TemplateTypeClass const WALL0028( TEMPLATE_WALL0028, THEATERF_INTERIOR, "WALL0028", TXT_INTERIOR ); static TemplateTypeClass const WALL0029( TEMPLATE_WALL0029, THEATERF_INTERIOR, "WALL0029", TXT_INTERIOR ); static TemplateTypeClass const WALL0030( TEMPLATE_WALL0030, THEATERF_INTERIOR, "WALL0030", TXT_INTERIOR ); static TemplateTypeClass const WALL0031( TEMPLATE_WALL0031, THEATERF_INTERIOR, "WALL0031", TXT_INTERIOR ); static TemplateTypeClass const WALL0032( TEMPLATE_WALL0032, THEATERF_INTERIOR, "WALL0032", TXT_INTERIOR ); static TemplateTypeClass const WALL0033( TEMPLATE_WALL0033, THEATERF_INTERIOR, "WALL0033", TXT_INTERIOR ); static TemplateTypeClass const WALL0034( TEMPLATE_WALL0034, THEATERF_INTERIOR, "WALL0034", TXT_INTERIOR ); static TemplateTypeClass const WALL0035( TEMPLATE_WALL0035, THEATERF_INTERIOR, "WALL0035", TXT_INTERIOR ); static TemplateTypeClass const WALL0036( TEMPLATE_WALL0036, THEATERF_INTERIOR, "WALL0036", TXT_INTERIOR ); static TemplateTypeClass const WALL0037( TEMPLATE_WALL0037, THEATERF_INTERIOR, "WALL0037", TXT_INTERIOR ); static TemplateTypeClass const WALL0038( TEMPLATE_WALL0038, THEATERF_INTERIOR, "WALL0038", TXT_INTERIOR ); static TemplateTypeClass const WALL0039( TEMPLATE_WALL0039, THEATERF_INTERIOR, "WALL0039", TXT_INTERIOR ); static TemplateTypeClass const WALL0040( TEMPLATE_WALL0040, THEATERF_INTERIOR, "WALL0040", TXT_INTERIOR ); static TemplateTypeClass const WALL0041( TEMPLATE_WALL0041, THEATERF_INTERIOR, "WALL0041", TXT_INTERIOR ); static TemplateTypeClass const WALL0042( TEMPLATE_WALL0042, THEATERF_INTERIOR, "WALL0042", TXT_INTERIOR ); static TemplateTypeClass const WALL0043( TEMPLATE_WALL0043, THEATERF_INTERIOR, "WALL0043", TXT_INTERIOR ); static TemplateTypeClass const WALL0044( TEMPLATE_WALL0044, THEATERF_INTERIOR, "WALL0044", TXT_INTERIOR ); static TemplateTypeClass const WALL0045( TEMPLATE_WALL0045, THEATERF_INTERIOR, "WALL0045", TXT_INTERIOR ); static TemplateTypeClass const WALL0046( TEMPLATE_WALL0046, THEATERF_INTERIOR, "WALL0046", TXT_INTERIOR ); static TemplateTypeClass const WALL0047( TEMPLATE_WALL0047, THEATERF_INTERIOR, "WALL0047", TXT_INTERIOR ); static TemplateTypeClass const WALL0048( TEMPLATE_WALL0048, THEATERF_INTERIOR, "WALL0048", TXT_INTERIOR ); static TemplateTypeClass const WALL0049( TEMPLATE_WALL0049, THEATERF_INTERIOR, "WALL0049", TXT_INTERIOR ); //static TemplateTypeClass const Xtra0001( // TEMPLATE_XTRA0001, // THEATERF_INTERIOR, // "XTRA0001", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0002( // TEMPLATE_XTRA0002, // THEATERF_INTERIOR, // "XTRA0002", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0003( // TEMPLATE_XTRA0003, // THEATERF_INTERIOR, // "XTRA0003", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0004( // TEMPLATE_XTRA0004, // THEATERF_INTERIOR, // "XTRA0004", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0005( // TEMPLATE_XTRA0005, // THEATERF_INTERIOR, // "XTRA0005", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0006( // TEMPLATE_XTRA0006, // THEATERF_INTERIOR, // "XTRA0006", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0007( // TEMPLATE_XTRA0007, // THEATERF_INTERIOR, // "XTRA0007", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0008( // TEMPLATE_XTRA0008, // THEATERF_INTERIOR, // "XTRA0008", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0009( // TEMPLATE_XTRA0009, // THEATERF_INTERIOR, // "XTRA0009", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0010( // TEMPLATE_XTRA0010, // THEATERF_INTERIOR, // "XTRA0010", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0011( // TEMPLATE_XTRA0011, // THEATERF_INTERIOR, // "XTRA0011", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0012( // TEMPLATE_XTRA0012, // THEATERF_INTERIOR, // "XTRA0012", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0013( // TEMPLATE_XTRA0013, // THEATERF_INTERIOR, // "XTRA0013", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0014( // TEMPLATE_XTRA0014, // THEATERF_INTERIOR, // "XTRA0014", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0015( // TEMPLATE_XTRA0015, // THEATERF_INTERIOR, // "XTRA0015", // TXT_INTERIOR //); //static TemplateTypeClass const Xtra0016( // TEMPLATE_XTRA0016, // THEATERF_INTERIOR, // "XTRA0016", // TXT_INTERIOR //); #ifdef FIXIT_ANTS static TemplateTypeClass const AntHill( TEMPLATE_HILL01, THEATERF_TEMPERATE, "HILL01", TXT_ROCK ); #endif /*********************************************************************************************** * TemplateTypeClass::TemplateTypeClass -- Constructor for template type objects. * * * * This is the constructor for the template types. * * * * INPUT: see below... * * * * OUTPUT: none * * * * WARNINGS: none * * * * HISTORY: * * 07/29/1994 JLB : Created. * *=============================================================================================*/ TemplateTypeClass::TemplateTypeClass( TemplateType iconset, int theater, char const * ininame, int fullname) : ObjectTypeClass( RTTI_TEMPLATETYPE, int(iconset), false, true, false, false, true, true, false, fullname, ininame), Type(iconset), Theater(theater), Width(0), Height(0) { } /*********************************************************************************************** * TemplateTypeClass::operator new -- Allocates a template type from special heap. * * * * This allocates a template type object from the special heap used for that purpose. * * * * INPUT: none * * * * OUTPUT: Returns with a pointer to the newly allocated template type object. If no object * * could be allocated, then NULL is returned. * * * * WARNINGS: none * * * * HISTORY: * * 07/06/1996 JLB : Created. * *=============================================================================================*/ void * TemplateTypeClass::operator new(size_t) { return(TemplateTypes.Alloc()); } /*********************************************************************************************** * TemplateTypeClass::operator delete -- Deletes a template type object. * * * * This routine will return a template type object back to the special heap it was * * allocated from. * * * * INPUT: ptr -- Pointer to the template type object to free. * * * * OUTPUT: none * * * * WARNINGS: none * * * * HISTORY: * * 07/06/1996 JLB : Created. * *=============================================================================================*/ void TemplateTypeClass::operator delete(void * ptr) { TemplateTypes.Free((TemplateTypeClass *)ptr); } void TemplateTypeClass::Init_Heap(void) { /* ** These template type class objects must be allocated in the exact order that they ** are specified in the TemplateType enumeration. This is necessary because the heap ** allocation block index serves double duty as the type number index. */ (void)new TemplateTypeClass(Clear); // TEMPLATE_CLEAR1 (void)new TemplateTypeClass(ClearA); // TEMPLATE_CLEAR1 (void)new TemplateTypeClass(ClearB); // TEMPLATE_CLEAR1 (void)new TemplateTypeClass(ClearC); // TEMPLATE_CLEAR1 (void)new TemplateTypeClass(ClearD); // TEMPLATE_CLEAR1 (void)new TemplateTypeClass(ClearE); // TEMPLATE_CLEAR1 (void)new TemplateTypeClass(ClearF); // TEMPLATE_CLEAR1 (void)new TemplateTypeClass(ClearG); // TEMPLATE_CLEAR1 (void)new TemplateTypeClass(Water); // TEMPLATE_WATER (void)new TemplateTypeClass(Water2); // TEMPLATE_WATER2 (void)new TemplateTypeClass(PRoad01); (void)new TemplateTypeClass(PRoad01a); (void)new TemplateTypeClass(PRoad01b);; (void)new TemplateTypeClass(PRoad02); (void)new TemplateTypeClass(PRoad02a); (void)new TemplateTypeClass(PRoad02b); (void)new TemplateTypeClass(PRoad03); (void)new TemplateTypeClass(PRoad04); (void)new TemplateTypeClass(PRoad05); (void)new TemplateTypeClass(PRoad06); (void)new TemplateTypeClass(PRoad07); (void)new TemplateTypeClass(PRoad08); (void)new TemplateTypeClass(PRoad09); (void)new TemplateTypeClass(PRoad10); (void)new TemplateTypeClass(PRoad11); (void)new TemplateTypeClass(PRoad12); (void)new TemplateTypeClass(PRoad13); (void)new TemplateTypeClass(PRoad14); (void)new TemplateTypeClass(PRoad15); (void)new TemplateTypeClass(PRoad16); (void)new TemplateTypeClass(PRoad17); (void)new TemplateTypeClass(PRoad18); (void)new TemplateTypeClass(PRoad19); (void)new TemplateTypeClass(PRoad20); (void)new TemplateTypeClass(PRoad21); (void)new TemplateTypeClass(Shore01); // TEMPLATE_SHORE1 (void)new TemplateTypeClass(Shore02); // TEMPLATE_SHORE2 (void)new TemplateTypeClass(Shore03); // TEMPLATE_SHORE3 (void)new TemplateTypeClass(Shore04); // TEMPLATE_SHORE4 (void)new TemplateTypeClass(Shore05); // TEMPLATE_SHORE5 (void)new TemplateTypeClass(Shore06); // TEMPLATE_SHORE6 (void)new TemplateTypeClass(Shore07); // TEMPLATE_SHORE7 (void)new TemplateTypeClass(Shore08); // TEMPLATE_SHORE8 (void)new TemplateTypeClass(Shore09); // TEMPLATE_SHORE9 (void)new TemplateTypeClass(Shore10); // TEMPLATE_SHORE10 (void)new TemplateTypeClass(Shore11); // TEMPLATE_SHORE11 (void)new TemplateTypeClass(Shore12); // TEMPLATE_SHORE12 (void)new TemplateTypeClass(Shore13); // TEMPLATE_SHORE13 (void)new TemplateTypeClass(Shore14); // TEMPLATE_SHORE14 (void)new TemplateTypeClass(Shore15); // TEMPLATE_SHORE15 (void)new TemplateTypeClass(Shore16); // TEMPLATE_SHORE16 (void)new TemplateTypeClass(Shore17); // TEMPLATE_SHORE17 (void)new TemplateTypeClass(Shore18); // TEMPLATE_SHORE18 (void)new TemplateTypeClass(Shore19); // TEMPLATE_SHORE19 (void)new TemplateTypeClass(Shore20); // TEMPLATE_SHORE20 (void)new TemplateTypeClass(Shore21); // TEMPLATE_SHORE21 (void)new TemplateTypeClass(Shore22); // TEMPLATE_SHORE22 (void)new TemplateTypeClass(Shore23); // TEMPLATE_SHORE23 (void)new TemplateTypeClass(Shore24); // TEMPLATE_SHORE24 (void)new TemplateTypeClass(Shore25); // TEMPLATE_SHORE25 (void)new TemplateTypeClass(Shore26); // TEMPLATE_SHORE26 (void)new TemplateTypeClass(Shore27); // TEMPLATE_SHORE27 (void)new TemplateTypeClass(Shore28); // TEMPLATE_SHORE28 (void)new TemplateTypeClass(Shore29); // TEMPLATE_SHORE29 (void)new TemplateTypeClass(Shore30); // TEMPLATE_SHORE30 (void)new TemplateTypeClass(Shore31); // TEMPLATE_SHORE31 (void)new TemplateTypeClass(Shore32); // TEMPLATE_SHORE32 (void)new TemplateTypeClass(Shore33); // TEMPLATE_SHORE33 (void)new TemplateTypeClass(Shore34); // TEMPLATE_SHORE34 (void)new TemplateTypeClass(Shore35); // TEMPLATE_SHORE35 (void)new TemplateTypeClass(Shore36); // TEMPLATE_SHORE36 (void)new TemplateTypeClass(Shore37); // TEMPLATE_SHORE37 (void)new TemplateTypeClass(Shore38); // TEMPLATE_SHORE38 (void)new TemplateTypeClass(Shore39); // TEMPLATE_SHORE39 (void)new TemplateTypeClass(Shore40); // TEMPLATE_SHORE40 (void)new TemplateTypeClass(Shore41); // TEMPLATE_SHORE41 (void)new TemplateTypeClass(ShoreCliff01); // TEMPLATE_SHORECLIFF01 (void)new TemplateTypeClass(ShoreCliff02); // TEMPLATE_SHORECLIFF02 (void)new TemplateTypeClass(ShoreCliff03); // TEMPLATE_SHORECLIFF03 (void)new TemplateTypeClass(ShoreCliff04); // TEMPLATE_SHORECLIFF04 (void)new TemplateTypeClass(ShoreCliff05); // TEMPLATE_SHORECLIFF05 (void)new TemplateTypeClass(ShoreCliff06); // TEMPLATE_SHORECLIFF06 (void)new TemplateTypeClass(ShoreCliff07); // TEMPLATE_SHORECLIFF07 (void)new TemplateTypeClass(ShoreCliff08); // TEMPLATE_SHORECLIFF08 (void)new TemplateTypeClass(ShoreCliff09); // TEMPLATE_SHORECLIFF09 (void)new TemplateTypeClass(ShoreCliff10); // TEMPLATE_SHORECLIFF10 (void)new TemplateTypeClass(ShoreCliff11); // TEMPLATE_SHORECLIFF11 (void)new TemplateTypeClass(ShoreCliff12); // TEMPLATE_SHORECLIFF12 (void)new TemplateTypeClass(ShoreCliff13); // TEMPLATE_SHORECLIFF13 (void)new TemplateTypeClass(ShoreCliff14); // TEMPLATE_SHORECLIFF14 (void)new TemplateTypeClass(ShoreCliff15); // TEMPLATE_SHORECLIFF15 (void)new TemplateTypeClass(ShoreCliff16); // TEMPLATE_SHORECLIFF16 (void)new TemplateTypeClass(ShoreCliff17); // TEMPLATE_SHORECLIFF17 (void)new TemplateTypeClass(ShoreCliff18); // TEMPLATE_SHORECLIFF18 (void)new TemplateTypeClass(ShoreCliff19); // TEMPLATE_SHORECLIFF19 (void)new TemplateTypeClass(ShoreCliff20); // TEMPLATE_SHORECLIFF20 (void)new TemplateTypeClass(ShoreCliff21); // TEMPLATE_SHORECLIFF21 (void)new TemplateTypeClass(ShoreCliff22); // TEMPLATE_SHORECLIFF22 (void)new TemplateTypeClass(ShoreCliff23); // TEMPLATE_SHORECLIFF23 (void)new TemplateTypeClass(ShoreCliff24); // TEMPLATE_SHORECLIFF24 (void)new TemplateTypeClass(ShoreCliff25); // TEMPLATE_SHORECLIFF25 (void)new TemplateTypeClass(ShoreCliff26); // TEMPLATE_SHORECLIFF26 (void)new TemplateTypeClass(ShoreCliff27); // TEMPLATE_SHORECLIFF27 (void)new TemplateTypeClass(ShoreCliff28); // TEMPLATE_SHORECLIFF28 (void)new TemplateTypeClass(Bridge1); // TEMPLATE_BRIDGE1 (void)new TemplateTypeClass(Bridge1d); // TEMPLATE_BRIDGE1D (void)new TemplateTypeClass(Bridge2); // TEMPLATE_BRIDGE2 (void)new TemplateTypeClass(Bridge2d); // TEMPLATE_BRIDGE2D (void)new TemplateTypeClass(Road01); // TEMPLATE_ROAD1 (void)new TemplateTypeClass(Road02); // TEMPLATE_ROAD2 (void)new TemplateTypeClass(Road03); // TEMPLATE_ROAD3 (void)new TemplateTypeClass(Road04); // TEMPLATE_ROAD4 (void)new TemplateTypeClass(Road05); // TEMPLATE_ROAD5 (void)new TemplateTypeClass(Road06); // TEMPLATE_ROAD6 (void)new TemplateTypeClass(Road07); // TEMPLATE_ROAD7 (void)new TemplateTypeClass(Road08); // TEMPLATE_ROAD8 (void)new TemplateTypeClass(Road09); // TEMPLATE_ROAD9 (void)new TemplateTypeClass(Road10); // TEMPLATE_ROAD10 (void)new TemplateTypeClass(Road11); // TEMPLATE_ROAD11 (void)new TemplateTypeClass(Road12); // TEMPLATE_ROAD12 (void)new TemplateTypeClass(Road13); // TEMPLATE_ROAD13 (void)new TemplateTypeClass(Road14); // TEMPLATE_ROAD14 (void)new TemplateTypeClass(Road15); // TEMPLATE_ROAD15 (void)new TemplateTypeClass(Road16); // TEMPLATE_ROAD16 (void)new TemplateTypeClass(Road17); // TEMPLATE_ROAD17 (void)new TemplateTypeClass(Road18); // TEMPLATE_ROAD18 (void)new TemplateTypeClass(Road19); // TEMPLATE_ROAD19 (void)new TemplateTypeClass(Road20); // TEMPLATE_ROAD20 (void)new TemplateTypeClass(Road21); // TEMPLATE_ROAD21 (void)new TemplateTypeClass(Road22); // TEMPLATE_ROAD22 (void)new TemplateTypeClass(Road23); // TEMPLATE_ROAD23 (void)new TemplateTypeClass(Road24); // TEMPLATE_ROAD24 (void)new TemplateTypeClass(Road25); // TEMPLATE_ROAD25 (void)new TemplateTypeClass(Road26); // TEMPLATE_ROAD26 (void)new TemplateTypeClass(Road27); // TEMPLATE_ROAD27 (void)new TemplateTypeClass(Road28); // TEMPLATE_ROAD28 (void)new TemplateTypeClass(Road29); // TEMPLATE_ROAD29 (void)new TemplateTypeClass(Road30); // TEMPLATE_ROAD30 (void)new TemplateTypeClass(Road31); // TEMPLATE_ROAD31 (void)new TemplateTypeClass(Road32); // TEMPLATE_ROAD32 (void)new TemplateTypeClass(Road33); // TEMPLATE_ROAD33 (void)new TemplateTypeClass(Road34); // TEMPLATE_ROAD34 (void)new TemplateTypeClass(Road35); // TEMPLATE_ROAD35 (void)new TemplateTypeClass(Road36); // TEMPLATE_ROAD36 (void)new TemplateTypeClass(Road37); // TEMPLATE_ROAD37 (void)new TemplateTypeClass(Road38); // TEMPLATE_ROAD38 (void)new TemplateTypeClass(Road39); // TEMPLATE_ROAD39 (void)new TemplateTypeClass(Road40); // TEMPLATE_ROAD40 (void)new TemplateTypeClass(Road41); // TEMPLATE_ROAD41 (void)new TemplateTypeClass(Road42); // TEMPLATE_ROAD42 (void)new TemplateTypeClass(Road43); // TEMPLATE_ROAD43 (void)new TemplateTypeClass(Rough01); // TEMPLATE_ROUGH01 (void)new TemplateTypeClass(Rough02); // TEMPLATE_ROUGH02 (void)new TemplateTypeClass(Rough03); // TEMPLATE_ROUGH03 (void)new TemplateTypeClass(Rough04); // TEMPLATE_ROUGH04 (void)new TemplateTypeClass(Rough05); // TEMPLATE_ROUGH05 (void)new TemplateTypeClass(Rough06); // TEMPLATE_ROUGH06 (void)new TemplateTypeClass(Rough07); // TEMPLATE_ROUGH07 (void)new TemplateTypeClass(Rough08); // TEMPLATE_ROUGH08 (void)new TemplateTypeClass(Rough09); // TEMPLATE_ROUGH09 (void)new TemplateTypeClass(Rough10); // TEMPLATE_ROUGH10 (void)new TemplateTypeClass(Rough11); // TEMPLATE_ROUGH11 // (void)new TemplateTypeClass(River14); // TEMPLATE_RIVER14 // (void)new TemplateTypeClass(River15); // TEMPLATE_RIVER15 (void)new TemplateTypeClass(RiverCliff01); // TEMPLATE_RIVERCLIFF01 (void)new TemplateTypeClass(RiverCliff02); // TEMPLATE_RIVERCLIFF02 (void)new TemplateTypeClass(RiverCliff03); // TEMPLATE_RIVERCLIFF03 (void)new TemplateTypeClass(RiverCliff04); // TEMPLATE_RIVERCLIFF04 (void)new TemplateTypeClass(Bridge1a); // TEMPLATE_BRIDGE_1A (void)new TemplateTypeClass(Bridge1b); // TEMPLATE_BRIDGE_1B (void)new TemplateTypeClass(Bridge1c); // TEMPLATE_BRIDGE_1C (void)new TemplateTypeClass(Bridge2a); // TEMPLATE_BRIDGE_2A (void)new TemplateTypeClass(Bridge2b); // TEMPLATE_BRIDGE_2B (void)new TemplateTypeClass(Bridge2c); // TEMPLATE_BRIDGE_2C (void)new TemplateTypeClass(Bridge3a); // TEMPLATE_BRIDGE_3A (void)new TemplateTypeClass(Bridge3b); // TEMPLATE_BRIDGE_3B (void)new TemplateTypeClass(Bridge3c); // TEMPLATE_BRIDGE_3C (void)new TemplateTypeClass(Bridge3d); // TEMPLATE_BRIDGE_3D (void)new TemplateTypeClass(Bridge3e); // TEMPLATE_BRIDGE_3E (void)new TemplateTypeClass(Bridge3f); // TEMPLATE_BRIDGE_3F (void)new TemplateTypeClass(F01); // TEMPLATE_F01 (void)new TemplateTypeClass(F02); // TEMPLATE_F02 (void)new TemplateTypeClass(F03); // TEMPLATE_F03 (void)new TemplateTypeClass(F04); // TEMPLATE_F04 (void)new TemplateTypeClass(F05); // TEMPLATE_F05 (void)new TemplateTypeClass(F06); // TEMPLATE_F06 (void)new TemplateTypeClass(ARRO0001); // TEMPLATE_ARRO0001 (void)new TemplateTypeClass(ARRO0002); // TEMPLATE_ARRO0002 (void)new TemplateTypeClass(ARRO0003); // TEMPLATE_ARRO0003 (void)new TemplateTypeClass(ARRO0004); // TEMPLATE_ARRO0004 (void)new TemplateTypeClass(ARRO0005); // TEMPLATE_ARRO0005 (void)new TemplateTypeClass(ARRO0006); // TEMPLATE_ARRO0006 (void)new TemplateTypeClass(ARRO0007); // TEMPLATE_ARRO0007 (void)new TemplateTypeClass(ARRO0008); // TEMPLATE_ARRO0008 (void)new TemplateTypeClass(ARRO0009); // TEMPLATE_ARRO0009 (void)new TemplateTypeClass(ARRO0010); // TEMPLATE_ARRO0010 (void)new TemplateTypeClass(ARRO0011); // TEMPLATE_ARRO0011 (void)new TemplateTypeClass(ARRO0012); // TEMPLATE_ARRO0012 (void)new TemplateTypeClass(ARRO0013); // TEMPLATE_ARRO0013 (void)new TemplateTypeClass(ARRO0014); // TEMPLATE_ARRO0014 (void)new TemplateTypeClass(ARRO0015); // TEMPLATE_ARRO0015 (void)new TemplateTypeClass(FLOR0001); // TEMPLATE_FLOR0001 (void)new TemplateTypeClass(FLOR0002); // TEMPLATE_FLOR0002 (void)new TemplateTypeClass(FLOR0003); // TEMPLATE_FLOR0003 (void)new TemplateTypeClass(FLOR0004); // TEMPLATE_FLOR0004 (void)new TemplateTypeClass(FLOR0005); // TEMPLATE_FLOR0005 (void)new TemplateTypeClass(FLOR0006); // TEMPLATE_FLOR0006 (void)new TemplateTypeClass(FLOR0007); // TEMPLATE_FLOR0007 (void)new TemplateTypeClass(GFLR0001); // TEMPLATE_GFLR0001 (void)new TemplateTypeClass(GFLR0002); // TEMPLATE_GFLR0002 (void)new TemplateTypeClass(GFLR0003); // TEMPLATE_GFLR0003 (void)new TemplateTypeClass(GFLR0004); // TEMPLATE_GFLR0004 (void)new TemplateTypeClass(GFLR0005); // TEMPLATE_GFLR0005 (void)new TemplateTypeClass(GSTR0001); // TEMPLATE_GSTR0001 (void)new TemplateTypeClass(GSTR0002); // TEMPLATE_GSTR0002 (void)new TemplateTypeClass(GSTR0003); // TEMPLATE_GSTR0003 (void)new TemplateTypeClass(GSTR0004); // TEMPLATE_GSTR0004 (void)new TemplateTypeClass(GSTR0005); // TEMPLATE_GSTR0005 (void)new TemplateTypeClass(GSTR0006); // TEMPLATE_GSTR0006 (void)new TemplateTypeClass(GSTR0007); // TEMPLATE_GSTR0007 (void)new TemplateTypeClass(GSTR0008); // TEMPLATE_GSTR0008 (void)new TemplateTypeClass(GSTR0009); // TEMPLATE_GSTR0009 (void)new TemplateTypeClass(GSTR0010); // TEMPLATE_GSTR0010 (void)new TemplateTypeClass(GSTR0011); // TEMPLATE_GSTR0011 (void)new TemplateTypeClass(LWAL0001); // TEMPLATE_LWAL0001 (void)new TemplateTypeClass(LWAL0002); // TEMPLATE_LWAL0002 (void)new TemplateTypeClass(LWAL0003); // TEMPLATE_LWAL0003 (void)new TemplateTypeClass(LWAL0004); // TEMPLATE_LWAL0004 (void)new TemplateTypeClass(LWAL0005); // TEMPLATE_LWAL0005 (void)new TemplateTypeClass(LWAL0006); // TEMPLATE_LWAL0006 (void)new TemplateTypeClass(LWAL0007); // TEMPLATE_LWAL0007 (void)new TemplateTypeClass(LWAL0008); // TEMPLATE_LWAL0008 (void)new TemplateTypeClass(LWAL0009); // TEMPLATE_LWAL0009 (void)new TemplateTypeClass(LWAL0010); // TEMPLATE_LWAL0010 (void)new TemplateTypeClass(LWAL0011); // TEMPLATE_LWAL0011 (void)new TemplateTypeClass(LWAL0012); // TEMPLATE_LWAL0012 (void)new TemplateTypeClass(LWAL0013); // TEMPLATE_LWAL0013 (void)new TemplateTypeClass(LWAL0014); // TEMPLATE_LWAL0014 (void)new TemplateTypeClass(LWAL0015); // TEMPLATE_LWAL0015 (void)new TemplateTypeClass(LWAL0016); // TEMPLATE_LWAL0016 (void)new TemplateTypeClass(LWAL0017); // TEMPLATE_LWAL0017 (void)new TemplateTypeClass(LWAL0018); // TEMPLATE_LWAL0018 (void)new TemplateTypeClass(LWAL0019); // TEMPLATE_LWAL0019 (void)new TemplateTypeClass(LWAL0020); // TEMPLATE_LWAL0020 (void)new TemplateTypeClass(LWAL0021); // TEMPLATE_LWAL0021 (void)new TemplateTypeClass(LWAL0022); // TEMPLATE_LWAL0022 (void)new TemplateTypeClass(LWAL0023); // TEMPLATE_LWAL0023 (void)new TemplateTypeClass(LWAL0024); // TEMPLATE_LWAL0024 (void)new TemplateTypeClass(LWAL0025); // TEMPLATE_LWAL0025 (void)new TemplateTypeClass(LWAL0026); // TEMPLATE_LWAL0026 (void)new TemplateTypeClass(LWAL0027); // TEMPLATE_LWAL0027 (void)new TemplateTypeClass(STRP0001); // TEMPLATE_STRP0001 (void)new TemplateTypeClass(STRP0002); // TEMPLATE_STRP0002 (void)new TemplateTypeClass(STRP0003); // TEMPLATE_STRP0003 (void)new TemplateTypeClass(STRP0004); // TEMPLATE_STRP0004 (void)new TemplateTypeClass(STRP0005); // TEMPLATE_STRP0005 (void)new TemplateTypeClass(STRP0006); // TEMPLATE_STRP0006 (void)new TemplateTypeClass(STRP0007); // TEMPLATE_STRP0007 (void)new TemplateTypeClass(STRP0008); // TEMPLATE_STRP0008 (void)new TemplateTypeClass(STRP0009); // TEMPLATE_STRP0009 (void)new TemplateTypeClass(STRP0010); // TEMPLATE_STRP0010 (void)new TemplateTypeClass(STRP0011); // TEMPLATE_STRP0011 (void)new TemplateTypeClass(WALL0001); // TEMPLATE_WALL0001 (void)new TemplateTypeClass(WALL0002); // TEMPLATE_WALL0002 (void)new TemplateTypeClass(WALL0003); // TEMPLATE_WALL0003 (void)new TemplateTypeClass(WALL0004); // TEMPLATE_WALL0004 (void)new TemplateTypeClass(WALL0005); // TEMPLATE_WALL0005 (void)new TemplateTypeClass(WALL0006); // TEMPLATE_WALL0006 (void)new TemplateTypeClass(WALL0007); // TEMPLATE_WALL0007 (void)new TemplateTypeClass(WALL0008); // TEMPLATE_WALL0008 (void)new TemplateTypeClass(WALL0009); // TEMPLATE_WALL0009 (void)new TemplateTypeClass(WALL0010); // TEMPLATE_WALL0010 (void)new TemplateTypeClass(WALL0011); // TEMPLATE_WALL0011 (void)new TemplateTypeClass(WALL0012); // TEMPLATE_WALL0012 (void)new TemplateTypeClass(WALL0013); // TEMPLATE_WALL0013 (void)new TemplateTypeClass(WALL0014); // TEMPLATE_WALL0014 (void)new TemplateTypeClass(WALL0015); // TEMPLATE_WALL0015 (void)new TemplateTypeClass(WALL0016); // TEMPLATE_WALL0016 (void)new TemplateTypeClass(WALL0017); // TEMPLATE_WALL0017 (void)new TemplateTypeClass(WALL0018); // TEMPLATE_WALL0018 (void)new TemplateTypeClass(WALL0019); // TEMPLATE_WALL0019 (void)new TemplateTypeClass(WALL0020); // TEMPLATE_WALL0020 (void)new TemplateTypeClass(WALL0021); // TEMPLATE_WALL0021 (void)new TemplateTypeClass(WALL0022); // TEMPLATE_WALL0022 (void)new TemplateTypeClass(WALL0023); // TEMPLATE_WALL0023 (void)new TemplateTypeClass(WALL0024); // TEMPLATE_WALL0024 (void)new TemplateTypeClass(WALL0025); // TEMPLATE_WALL0025 (void)new TemplateTypeClass(WALL0026); // TEMPLATE_WALL0026 (void)new TemplateTypeClass(WALL0027); // TEMPLATE_WALL0027 (void)new TemplateTypeClass(WALL0028); // TEMPLATE_WALL0028 (void)new TemplateTypeClass(WALL0029); // TEMPLATE_WALL0029 (void)new TemplateTypeClass(WALL0030); // TEMPLATE_WALL0030 (void)new TemplateTypeClass(WALL0031); // TEMPLATE_WALL0031 (void)new TemplateTypeClass(WALL0032); // TEMPLATE_WALL0032 (void)new TemplateTypeClass(WALL0033); // TEMPLATE_WALL0033 (void)new TemplateTypeClass(WALL0034); // TEMPLATE_WALL0034 (void)new TemplateTypeClass(WALL0035); // TEMPLATE_WALL0035 (void)new TemplateTypeClass(WALL0036); // TEMPLATE_WALL0036 (void)new TemplateTypeClass(WALL0037); // TEMPLATE_WALL0037 (void)new TemplateTypeClass(WALL0038); // TEMPLATE_WALL0038 (void)new TemplateTypeClass(WALL0039); // TEMPLATE_WALL0039 (void)new TemplateTypeClass(WALL0040); // TEMPLATE_WALL0040 (void)new TemplateTypeClass(WALL0041); // TEMPLATE_WALL0041 (void)new TemplateTypeClass(WALL0042); // TEMPLATE_WALL0042 (void)new TemplateTypeClass(WALL0043); // TEMPLATE_WALL0043 (void)new TemplateTypeClass(WALL0044); // TEMPLATE_WALL0044 (void)new TemplateTypeClass(WALL0045); // TEMPLATE_WALL0045 (void)new TemplateTypeClass(WALL0046); // TEMPLATE_WALL0046 (void)new TemplateTypeClass(WALL0047); // TEMPLATE_WALL0047 (void)new TemplateTypeClass(WALL0048); // TEMPLATE_WALL0048 (void)new TemplateTypeClass(WALL0049); // TEMPLATE_WALL0049 (void)new TemplateTypeClass(Bridge1h); // TEMPLATE_BRIDGE1H (void)new TemplateTypeClass(Bridge2h); // TEMPLATE_BRIDGE2H (void)new TemplateTypeClass(Bridge1ax); // TEMPLATE_BRIDGE_1AX (void)new TemplateTypeClass(Bridge2ax); // TEMPLATE_BRIDGE_2AX (void)new TemplateTypeClass(Bridge1x); // TEMPLATE_BRIDGE1X (void)new TemplateTypeClass(Bridge2x); // TEMPLATE_BRIDGE2X (void)new TemplateTypeClass(AntHill); // TEMPLATE_ROAD36 } /*********************************************************************************************** * TemplateTypeClass::Land_Type -- Determines land type from template and icon number. * * * * This routine will convert the specified icon number into the appropriate land type. The * * land type can be determined from the embedded colors in the "control template" section * * of the original art file. This control information is encoded into the icon data file * * to be retrieved and interpreted as the program sees fit. The engine only recognizes * * the first 16 colors as control colors, so the control map color value serves as an * * index into a simple lookup table. * * * * INPUT: icon -- The icon number within this template that is to be examined and used * * to determine the land type. * * * * OUTPUT: Returns with the land type that corresponds to the icon number specified. * * * * WARNINGS: none * * * * HISTORY: * * 12/12/1995 JLB : Created. * *=============================================================================================*/ LandType TemplateTypeClass::Land_Type(int icon) const { IsoTile* icontrol = (IsoTile *)Get_Image_Data(); if (icontrol != NULL) { IsoTileImageHeader* image = icontrol->GetTileInfo(icon); if (image != NULL) { static LandType _land[16] = { LAND_CLEAR, LAND_ROUGH , LAND_ROAD, LAND_WATER, LAND_ROCK, LAND_WALL, LAND_TIBERIUM, LAND_WEEDS, LAND_BEACH, LAND_WATER, LAND_CLEAR, LAND_ROAD, LAND_COUNT, }; return(_land[image->TileType % LAND_COUNT]); } } return(LAND_CLEAR); } /*********************************************************************************************** * TemplateTypeClass::From_Name -- Determine template from ASCII name. * * * * This routine is used to determine the template number given only * * an ASCII representation. The scenario loader uses this routine * * to construct the map from the INI control file. * * * * INPUT: name -- Pointer to the ASCII name of the template. * * * * OUTPUT: Returns with the template number. If the name had no match, * * then returns with TEMPLATE_NONE. * * * * WARNINGS: none * * * * HISTORY: * * 05/23/1994 JLB : Created. * *=============================================================================================*/ TemplateType TemplateTypeClass::From_Name(char const * name) { if (name != NULL) { for (TemplateType index = TEMPLATE_FIRST; index < TEMPLATE_COUNT; index++) { if (stricmp(As_Reference(index).IniName, name) == 0) { return(index); } } } return(TEMPLATE_NONE); } /*********************************************************************************************** * TemplateTypeClass::Occupy_List -- Determines occupation list. * * * * This routine is used to examine the template map and build an * * occupation list. This list is used to render a template cursor as * * well as placement of icon numbers. * * * * INPUT: placement -- Is this for placement legality checking only? The normal condition * * is for marking occupation flags. * * * * OUTPUT: Returns with a pointer to the template occupation list. * * * * WARNINGS: The return pointer is valid only until the next time that * * this routine is called. * * * * HISTORY: * * 05/23/1994 JLB : Created. * * 12/12/1995 JLB : Optimized for direct access to iconset data. * *=============================================================================================*/ short const * TemplateTypeClass::Occupy_List(bool) const { static short _occupy[13*8+5]; short * ptr; IsoTile * iconset = (IsoTile *)Get_Image_Data(); //unsigned char const * map = iconset->Map_Data(); ptr = &_occupy[0]; for (int index = 0; index < iconset->NumTiles(); index++) { //if (*map++ != 0xFF) { // *ptr++ = (index % Width) + ((index / Width)*MAP_CELL_W); //} IsoTileImageHeader* tileimg = iconset->GetTileInfo(index); if (tileimg == NULL) continue; *ptr++ = (index % Width) + ((index / Width) * MAP_CELL_W); } *ptr = REFRESH_EOL; return((short const *)&_occupy[0]); } /*********************************************************************************************** * TemplateTypeClass::Init -- Loads graphic data for templates. * * * * This routine loads the template graphic data for all the template * * type supported for the specified theater. This routine is called * * whenever the theater for the scenario is first determined. * * * * INPUT: theater -- The theater that the template data is to be * * loaded for. * * * * OUTPUT: none * * * * WARNINGS: This routine goes to disk! * * * * HISTORY: * * 05/23/1994 JLB : Created. * * 06/02/1994 JLB : Only handles iconset loading now (as it should). * *=============================================================================================*/ void TemplateTypeClass::Init(TheaterType theater) { char fullname[_MAX_FNAME+_MAX_EXT]; // Fully constructed iconset name. void const * ptr; // Working loaded iconset pointer. void *terrainPalette = (void *)MFCD::Retrieve(Theaters[theater].IsoPalette); for (TemplateType index = TEMPLATE_FIRST; index < TEMPLATE_COUNT; index++) { TemplateTypeClass& tplate = As_Reference(index); // jmarshall - stupid hack if (index >= TEMPLATE_BRIDGE_1A) break; // jmarshall - stupid hack ((void const *&)tplate.ImageData) = NULL; if (tplate.Theater & (1<renderwidth, hdImage->renderheight); ((void const*&)tplate.HDImageData) = hdImage; } else { // If no HD assets, load the legacy assets into a texture. char tmp[512]; sprintf(tmp, "icon_%s", fullname); ((void const*&)tplate.HDImageData) = Load_Stamp(fullname, tplate.ImageData, terrainPalette); } } } } #ifdef SCENARIO_EDITOR /*********************************************************************************************** * TemplateTypeClass::Display -- Displays a generic representation of template. * * * * This routine is used to display a generic view of the template * * object. This is necessary for selection in the scenario editor. * * * * INPUT: x,y -- The coordinates to center the display about. * * * * window-- The window to base the coordinates upon. * * * * OUTPUT: none * * * * WARNINGS: none * * * * HISTORY: * * 05/23/1994 JLB : Created. * *=============================================================================================*/ void TemplateTypeClass::Display(int x, int y, WindowNumberType window, HousesType ) const { int w,h; int index; bool scale; // Should the template be half sized? Image_t* img = Get_HDImage_Data(); if (img == NULL) return; w = Bound(img->width, 1, 13); h = Bound(img->height, 1, 8); //scale = (w > 3 || h > 3); //if (scale) { // x -= (w * ICON_PIXEL_W) / 4; // y -= (h * ICON_PIXEL_H) / 4; //} else { // x -= (w * ICON_PIXEL_W) / 2; // y -= (h * ICON_PIXEL_H) / 2; //} //x += WindowList[window][WINDOWX]; //y += WindowList[window][WINDOWY]; //IconsetClass const * iconset = (IconsetClass const *)Get_Image_Data(); //unsigned char const * map = iconset->Map_Data(); for (index = 0; index < img->isoTileInfo->NumTiles(); index++) { IsoTileImageHeader* isoImage = img->isoTileInfo->GetTileInfo(index); if (isoImage == NULL) continue; GL_RenderForeGroundImage(img, x + isoImage->TileX, y + isoImage->TileY, ICON_PIXEL_W, ICON_PIXEL_H, 0, index); } } /*********************************************************************************************** * TemplateTypeClass::Prep_For_Add -- Prepares to add template to scenario. * * * * This routine prepares a list of template objects so that the * * scenario editor can use this list to display a dialog box. The * * selection of a template object will allow its placement upon the * * map. * * * * INPUT: none * * * * OUTPUT: none * * * * WARNINGS: none * * * * HISTORY: * * 05/23/1994 JLB : Created. * * 05/28/1994 JLB : Only handles real templates now. * * 06/04/1994 JLB : Uses map editing interface functions. * *=============================================================================================*/ void TemplateTypeClass::Prep_For_Add(void) { for (TemplateType index = TEMPLATE_CLEAR1; index < TEMPLATE_COUNT; index++) { // jmarshall - stupid hack if (index >= TEMPLATE_BRIDGE_1A) break; // jmarshall - stupid hack // jmarshall: get hdimage data. if (As_Reference(index).Get_HDImage_Data()) { Map.Add_To_List(&As_Reference(index)); } } } #endif /*********************************************************************************************** * TemplateTypeClass::Create_And_Place -- Creates and places a template object on the map. * * * * This support routine is used by the scenario editor to add a template object to the map * * and to the game. * * * * INPUT: cell -- The cell to place the template object. * * * * OUTPUT: bool; Was the template object placed successfully? * * * * WARNINGS: none * * * * HISTORY: * * 05/28/1994 JLB : Created. * *=============================================================================================*/ bool TemplateTypeClass::Create_And_Place(CELL cell, HousesType ) const { if (new TemplateClass(Type, cell)) { return(true); } return(false); } /*********************************************************************************************** * TemplateTypeClass::Create_One_Of -- Creates an object of this template type. * * * * This routine will create an object of this type. For certain template objects, such * * as walls, it is actually created as a building. The "building" wall is converted into * * a template at the moment of placing down on the map. * * * * INPUT: none * * * * OUTPUT: Returns with a pointer to the appropriate object for this template type. * * * * WARNINGS: none * * * * HISTORY: * * 06/18/1994 JLB : Created. * *=============================================================================================*/ ObjectClass * TemplateTypeClass::Create_One_Of(HouseClass *) const { return(new TemplateClass(Type, -1)); } /*********************************************************************************************** * TemplateTypeClass::One_Time -- Performs one-time initialization * * * * INPUT: none * * * * OUTPUT: none * * * * WARNINGS: none * * * * HISTORY: * * 08/12/1994 JLB : Created. * *=============================================================================================*/ void TemplateTypeClass::One_Time(void) { } /*********************************************************************************************** * TemplateTypeClass::As_Reference -- Fetches a reference to the template specified. * * * * This will return a reference to the TemplateTypeClass requested. * * * * INPUT: type -- The template type to fetch a reference to. * * * * OUTPUT: Returns with a reference to the template type class specified. * * * * WARNINGS: Be sure to pass a valid type parameter. This routine doesn't check it for * * legality. * * * * HISTORY: * * 07/03/1996 JLB : Created. * *=============================================================================================*/ TemplateTypeClass & TemplateTypeClass::As_Reference(TemplateType type) { return(*TemplateTypes.Ptr(type)); } COORDINATE TemplateTypeClass::Coord_Fixup(COORDINATE coord) const { return Coord_Whole(coord); }