//===========================================================================//
// 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 "bt.hpp"

#if !defined(BTTOOL_HPP)
#	include "bttool.hpp"
#endif

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

#if !defined(MECH_HPP)
#	include "mech.hpp"
#endif

#if !defined(BTPLAYER_HPP)
#	include "btplayer.hpp"
#endif

#if !defined(PROJTILE_HPP)
#	include "projtile.hpp"
#endif

#if !defined(MISSILE_HPP)
#	include "missile.hpp"
#endif

#if !defined(BTTEAM_HPP)
#	include "btteam.hpp"
#endif

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
Logical
	BTTool::CreateMakeMessage(
		const char* class_name,
		Entity::MakeMessage *creation_message,
		NotationFile *model_file,
		const ResourceDirectories *directories
	)
{
	if (!stricmp(class_name,"MechClassID"))
	{
		Mech::CreateMakeMessage(
			(Mech::MakeMessage*)creation_message,
			model_file,
			directories
		);
		return True;
	}
	else if (!stricmp(class_name, "BTTeamClassID"))
	{
		BTTeam::CreateMakeMessage(
			(BTTeam::MakeMessage*)creation_message,
			model_file,
			directories
		);
		return True;
	}

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

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
	BTTool::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, "MechClassID"))
	{
#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", "BTVh");
		ops_file->AppendEntry(ops_file_data, NULL, (char *)NULL);
#endif

		model_resources.gameResourceID =
			Mech::CreateModelResource(
				resource_file,
				model_name,
				model_file,
				directories
			);
		model_resources.subsystemResourceID =
			Mech::CreateSubsystemStream(
				resource_file,
				model_name,
				model_file,
				directories
			);
		model_resources.damageZoneResourceID =
			Mech::CreateDamageZoneStream(
				resource_file,
				model_name,
				model_file,
				directories
			);
		model_resources.skeletonResourceID =
			Mech::CreateSkeletonStream(
				resource_file,
				model_name,
				model_file,
				directories
			);
		model_resources.explosionTableResourceID =
			Mech::CreateExplosionTableStream(
				resource_file,
				model_name,
				model_file,
				directories
			);
	}
	else if (!stricmp(model_class, "ProjectileClassID"))
	{
		model_resources.gameResourceID =
			Projectile::CreateModelResource(
				resource_file,
				model_name,
				model_file,
				directories
			);
	}
	else if (!stricmp(model_class, "MissileClassID"))
	{
		model_resources.gameResourceID =
			Missile::CreateModelResource(
				resource_file,
				model_name,
				model_file,
				directories
			);
	}
	else
	{
		ApplicationTool::CreateModelResource(
			model_resources,
			model_class,
			resource_file,
			model_name,
			model_file,
			directories
		);
	}
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
ResourceDescription::ResourceID
	BTTool::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, "MechClassID"))
	{
		return
			Mech::CreateControlMappingStream(
				mapping_name,
				mapping_file,
				platformTool->GetControlMappingFunction(),
				resource_file,
				model_name,
				model_file,
				directories,
				current_tool
			);
	}
	else
	{
		return -1;
	}
}

