//===========================================================================//
// File:     txttores.cpp                                                    //
// Project:  Resource Tools                                                  //
// Author:   Jerry Edsall                                                    //
// Purpose:  Program to convert Notation files to MUNGA .res files.          //
//---------------------------------------------------------------------------//
// Copyright (c) 1995 Virtual World Entertainment, Inc.                      //
//   All rights reserved worldwide.                                          //
// This unpublished source code is PROPRIETARY and CONFIDENTIAL.             //
//===========================================================================//

#include <rp.hpp>
#pragma hdrstop

#if !defined(RPTOOL_HPP)
#	include <rptool.hpp>
#endif

#if !defined(FILEUTIL_HPP)
#	include <fileutil.hpp>
#endif

#if !defined(VTV_HPP)
#	include <vtv.hpp>
#endif

#if !defined(SCORZONE_HPP)
#	include <scorzone.hpp>
#endif

#if !defined(RIVET_HPP)
#	include <rivet.hpp>
#endif

#if !defined(DEMOPACK_HPP)
#	include <demopack.hpp>
#endif

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
Logical
	RPTool::CreateMakeMessage(
		const char* class_name,
		Entity::MakeMessage *creation_message,
		NotationFile *model_file,
		const ResourceDirectories *directories
	)
{
	if (!stricmp(class_name,"VTVClassID"))
	{
		VTV::CreateMakeMessage(
			(VTV::MakeMessage*)creation_message,
			model_file,
			directories
		);
		return True;
	}
	else if (!stricmp(class_name,"ScoreZoneClassID"))
	{
		ScoreZone::CreateMakeMessage(
			(ScoreZone::MakeMessage*)creation_message,
			model_file,
			directories
		);
		return True;
	}

	return
		ApplicationTool::CreateMakeMessage(
			class_name,
			creation_message,
			model_file,
			directories
		);
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
	RPTool::CreateModelResource(
		ModelData &model_resources,
		const char *model_class,
		ResourceFile *resource_file,
		const char *model_name,
		NotationFile *model_file,
		const ResourceDirectories *directories
	)
{
	if (!stricmp(model_class, "VTVClassID"))
	{
#if 0
		strcpy(ops_file_data, ops_name);
		strcat(ops_file_data, "::Standard::Vehicle::");
		strcat(ops_file_data, model_name );
		strcpy(ops_file_page, ops_name);
		strcat(ops_file_page, "::Standard::VehicleList");

		ops_file->AppendEntry(ops_file_page, "vehicle", ops_file_data);
		ops_file->SetEntry(ops_file_data, "tag", model_name );
		ops_file->SetEntry(ops_file_data, "classID", "RPVh");
		ops_file->AppendEntry(ops_file_data, NULL, (char *)NULL);
#endif

		model_resources.gameResourceID =
			VTV::CreateModelResource(
				resource_file,
				model_name,
				model_file,
				directories
			);
		model_resources.subsystemResourceID =
			VTV::CreateSubsystemStream(
				resource_file,
				model_name,
				model_file,
				directories
			);
		model_resources.skeletonResourceID =
			VTV::CreateSkeletonStream(
				resource_file,
				model_name,
				model_file,
				directories
			);
		model_resources.damageZoneResourceID =
			VTV::CreateDamageZoneStream(
				resource_file,
				model_name,
				model_file,
				directories
			);
	}
	else if (!stricmp(model_class, "RivetClassID"))
	{
		model_resources.gameResourceID =
			Rivet::CreateModelResource(
				resource_file,
				model_name,
				model_file,
				directories
			);
	}
	else if (!stricmp(model_class, "DemolitionPackClassID"))
	{
		model_resources.gameResourceID =
			DemolitionPack::CreateModelResource(
				resource_file,
				model_name,
				model_file,
				directories
			);
	}
	else if (!stricmp(model_class, "ScoreZoneClassID"))
	{
		model_resources.gameResourceID =
			ScoreZone::CreateModelResource(
				resource_file,
				model_name,
				model_file,
				directories
			);
	}
	else
	{
		ApplicationTool::CreateModelResource(
			model_resources,
			model_class,
			resource_file,
			model_name,
			model_file,
			directories
		);
	}
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
ResourceDescription::ResourceID
	RPTool::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
	)
{
	if (!stricmp(model_class, "VTVClassID"))
	{
		return
			VTV::CreateControlMappingStream(
				mapping_name,
				mapping_file,
				platformTool->GetControlMappingFunction(),
				resource_file,
				model_name,
				model_file,
				directories,
				current_tool
			);
	}
	else
	{
		return -1;
	}
}

