#pragma once #include "notation.h" #include "resource.h" #include "controls.h" #include "gaugalrm.h" #include "audtools.h" #include "entity.h" struct ModelData { char pageName[100]; char modelName[100]; ResourceDescription::ResourceID videoResourceID; ResourceDescription::ResourceID skeletonResourceID; ResourceDescription::ResourceID audioResourceID; ResourceDescription::ResourceID collisionID; ResourceDescription::ResourceID gameResourceID; ResourceDescription::ResourceID subsystemResourceID; ResourceDescription::ResourceID controlsMappingsResourceID; ResourceDescription::ResourceID damageZoneResourceID; ResourceDescription::ResourceID gaugeImageResourceID; ResourceDescription::ResourceID gaugeAlarmResourceID; ResourceDescription::ResourceID gaugeMissionReviewResourceID; ResourceDescription::ResourceID explosionTableResourceID; RegisteredClass::ClassID classID; ResourceDescription::ResourceID resourceID; }; struct InstanceData { char pageName[100]; char modelName[100]; ResourceDescription::ResourceID resourceID; }; struct InstanceResource { Origin origin; ResourceDescription::ResourceID resourceID; }; //########################################################################## //######################### PlatformTool ############################# //########################################################################## class PlatformTool { public: PlatformTool() { gaugeAlarmManager = NULL; } virtual ResourceDescription::ResourceID CreateModelVideoStreamResource( ResourceFile *resource_file, const char *model_name, NotationFile *model_file, const ResourceDirectories *directories )=0; virtual ResourceDescription::ResourceID CreateModelAudioStreamResource( ResourceFile *resource_file, const char *model_name, NotationFile *model_file, const ResourceDirectories *directories )=0; virtual ResourceDescription::ResourceID CreateModelGaugeImageStreamResource( ResourceFile *resource_file, const char *model_name, NotationFile *model_file, const ResourceDirectories *directories )=0; virtual ResourceDescription::ResourceID CreateModelGaugeMissionReviewStreamResource( ResourceFile *resource_file, const char *model_name, NotationFile *model_file, const ResourceDirectories *directories )=0; virtual ResourceDescription::ResourceID CreateStaticAudioStreamResource( ResourceFile *resource_file )=0; typedef Logical (*FindNameFunction)( const char *control_name, ControlsMapping *mapping ); virtual FindNameFunction GetControlMappingFunction()=0; virtual Logical ConvertStringToModeMask( const char *string, ModeMask *returned_value_ptr ); virtual Logical ConvertStringToTechStatus( const char *string, int *returned_value_ptr ); GaugeAlarmManager *gaugeAlarmManager; // should be set at the topmost level }; //########################################################################## //######################## ApplicationTool ########################### //########################################################################## class ApplicationTool { protected: PlatformTool* platformTool; virtual Logical CreateMakeMessage( const char* class_name, Entity::MakeMessage *creation_message, NotationFile *model_file, const ResourceDirectories *directories ); virtual void CreateModelResource( ModelData &model_resources, const char *model_class, ResourceFile *resource_file, const char *model_name, NotationFile *model_file, const ResourceDirectories *directories ); virtual ResourceDescription::ResourceID CreateControlMappingStream( const char *model_class, const char *mapping_name, NotationFile *mapping_file, ResourceFile *resource_file, const char *model_name, NotationFile *model_file, const ResourceDirectories *directories, PlatformTool *current_tool )=0; virtual void ListResource(ResourceDescription *resource); Logical WriteMaps( char *map_name, NotationFile *notation_file, NotationFile *ops_file, StreamableResourceFile *file, const ResourceDirectories *resource_directories, int resource_id = -1 ); Logical WriteModels( NotationFile *notation_file, NotationFile *ops_file, StreamableResourceFile *file, const char *model_name, const ResourceDirectories *resource_directories, int resource_id = -1 ); void WriteOpsFile( NotationFile *ops_file, StreamableResourceFile *file, const ResourceDirectories *resource_directories ); Logical WriteAnimationCycle( NotationFile *animation_file, StreamableResourceFile *file, const char *animation_name ); Logical WriteAnimationTransition( NotationFile *animation_file, StreamableResourceFile *file, const char *animation_name ); public: Logical labOnly, verboseMode; ApplicationTool(PlatformTool *platform) {platformTool = platform;} int BuildResources( int argc, char **argv, AudioCreateSymbols &create_symbols, Byte minor_version ); int ListResources( int argc, char **argv ); };