////////////////////////////////////////////////////////////////////// // feature_Factory::ProcessTDF() // \author Logan Jones ////////////////////////////////// \date 2/13/2002 // //==================================================================== // Parameters: // void* hFile - // LPCTSTR strHostDirectory - // LPCTSTR strFileName - // game_LoadFacilitator Load - // // Return: BOOL - // BOOL feature_Factory::ProcessTDF( void* hFile, LPCTSTR strHostDirectory, LPCTSTR strFileName, game_LoadFacilitator Load ) { DWORD FileSize; BYTE* FileBuffer; util_TxtParse Parser; Parse_Info Info; BOOL bWorking; char FeatureName[32]; FeatureFileInfo_t FeatureInfo; // Macros used in filling the strucure with info from the file #define STRING_MEMBER( NAME ) CASE( #NAME ) \ strcpy( FeatureInfo.NAME, Info.Value ); #define INT_MEMBER( NAME ) CASE( #NAME ) \ FeatureInfo.NAME = atol( Info.Value ); \ // Sanity check if( hFile==NULL ) return FALSE; // Get the file FileSize = theFileTree.DumpFileToBuffer( static_cast<app_FileTree::HFILEENTRY>(hFile), &FileBuffer ); // Begin working on the TDF bWorking = Parser.Begin( FileBuffer, FileSize, &Info ); while( bWorking ) { // Find the next feature while( bWorking ) { if( (Info.Type==PARSE_Header)&&(Parser.Locale()==0) ) break; bWorking = Parser.Continue( &Info ); } // Check if this feature is in the list if( IsInToLoadList(Info.Value) ) { strcpy( FeatureName, Info.Value ); theApp.Console.Comment( CT_LOAD, "Loading feature \"%s\"", FeatureName ); Load.Progress( 90.0f * m_FeatureTypes.size() / m_ToLoadCount ); // Initialize and fill the feature info structure ZeroMemory( &FeatureInfo, sizeof(FeatureFileInfo_t) ); bWorking = Parser.Continue( &Info ); if( bWorking && Info.Type==PARSE_LevelUp ) for( ;bWorking && Parser.Locale()>0; bWorking=Parser.Continue( &Info ) ) if( (Info.Type==PARSE_VarVal)&&(Parser.Locale()==1) ) STRING_SWITCH( Info.Variable ) STRING_MEMBER( World ) STRING_MEMBER( Description ) STRING_MEMBER( Category ) INT_MEMBER( FootPrintX ) INT_MEMBER( FootPrintZ ) INT_MEMBER( Height ) STRING_MEMBER( Object ) STRING_MEMBER( FileName ) STRING_MEMBER( SeqName ) STRING_MEMBER( SeqNameShad ) STRING_MEMBER( SeqNameReclamate ) STRING_MEMBER( FeatureReclamate ) STRING_MEMBER( SeqNameBurn ) STRING_MEMBER( FeatureBurnt ) STRING_MEMBER( SeqNameDie ) STRING_MEMBER( FeatureDead ) INT_MEMBER( Energy ) INT_MEMBER( Metal ) INT_MEMBER( BurnMin ) INT_MEMBER( BurnMax ) INT_MEMBER( SparkTime ) INT_MEMBER( SpreadChance ) STRING_MEMBER( BurnWeapon ) INT_MEMBER( AnimTrans ) INT_MEMBER( ShadTrans ) INT_MEMBER( Animating ) INT_MEMBER( Flamable ) INT_MEMBER( Reclaimable ) INT_MEMBER( Reproduce ) INT_MEMBER( ReproduceArea ) INT_MEMBER( Blocking ) INT_MEMBER( HitDensity ) INT_MEMBER( Damage ) INT_MEMBER( Geothermal ) INT_MEMBER( Indestructible ) INT_MEMBER( NoDisplayInfo ) INT_MEMBER( Permanent ) END_STRING_SWITCH // Add the feature AddFeatureType( FeatureName, &FeatureInfo ); } // end if( IsInToLoadList ) else bWorking = Parser.Continue( &Info ); } // end while( bWorking ) return TRUE; }
FLOAT_MEMBER (Hardware.DownstreamExtrusionMultiplier, "DownstreamExtrusionMultiplier", 1.0, false), // Volume { OFFSET (Hardware.Volume.x), T_FLOAT, "mfVolumeX", "Hardware.Volume.X", 200, false }, { OFFSET (Hardware.Volume.y), T_FLOAT, "mfVolumeY", "Hardware.Volume.Y", 200, false }, { OFFSET (Hardware.Volume.z), T_FLOAT, "mfVolumeZ", "Hardware.Volume.Z", 140, false }, // PrintMargin { OFFSET (Hardware.PrintMargin.x), T_FLOAT, "PrintMarginX", "Hardware.PrintMargin.X", 10, false }, { OFFSET (Hardware.PrintMargin.y), T_FLOAT, "PrintMarginY", "Hardware.PrintMargin.Y", 10, false }, { OFFSET (Hardware.PrintMargin.z), T_FLOAT, "PrintMarginZ", "Hardware.PrintMargin.Z", 0, false }, FLOAT_MEMBER (Hardware.ExtrudedMaterialWidth, "ExtrudedMaterialWidth", 0.7, false), { OFFSET (Hardware.PortName), T_STRING, "Hardware.PortName", NULL, 0, DEFAULT_COM_PORT, false }, { OFFSET (Hardware.SerialSpeed), T_INT, "Hardware.SerialSpeed", NULL, 19200, false }, /* 57600 ? */ BOOL_MEMBER (Hardware.ValidateConnection, "ValidateConnection", true, false), INT_MEMBER (Hardware.KeepLines, "KeepLines", 1000, false), INT_MEMBER (Hardware.ReceivingBufferSize, "ReceivingBufferSize", 4, false), // Slicing BOOL_MEMBER (Slicing.UseIncrementalEcode, "UseIncrementalEcode", true, false), BOOL_MEMBER (Slicing.Use3DGcode, "Use3DGcode", false, false), BOOL_MEMBER (Slicing.EnableAntiooze, "EnableAntiooze", false, false), FLOAT_MEMBER (Slicing.AntioozeDistance, "AntioozeDistance", 4.5, false), FLOAT_MEMBER (Slicing.AntioozeSpeed, "AntioozeSpeed", 1000.0, false), FLOAT_MEMBER (Slicing.InfillDistance, "InfillDistance", 2.0, false), FLOAT_MEMBER (Slicing.InfillRotation, "InfillRotation", 45.0, false), FLOAT_MEMBER (Slicing.InfillRotationPrLayer, "InfillRotationPrLayer", 90.0, false), FLOAT_MEMBER (Slicing.AltInfillDistance, "AltInfillDistance", 2.0, false), STRING_MEMBER (Slicing.AltInfillLayersText, "AltInfillLayersText", "", false),