AeMain.c++ 1.85 KB
//
// Contains the main proc for the audio editor
// process.
//


#include <Vk/VkApp.h>

#include "AeAssetBase.h"
#include "AeAssetEditor.h"
#include "AeN64Driver.h"
#include "AeFieldUI.h"
#include "AeUnitTest.h"
#include "AeErr.h"
#include "AeConfig.h"


extern void InitEZ (void);
static void initPlayer (AeAssetBase *);
static void initEditor (AeAssetBase *);


extern int		gArgc;
extern char **		gArgv;
extern char * 		bankFileName;
extern char * 		cFileName;
extern AeN64Driver * 	n64Driver;


void
AeMainProc (void * arg)
{
    AePlayer * player;

    InitEZ();

#ifndef NDEBUG
    // run any unit tests
    RunUnitTests ();
#endif

    // create an application object
    VkApp * app = new VkApp ("ae-defaults", &gArgc, gArgv); 

    // create the asset data base
    AeAssetBase * assetBase = new AeAssetBase ();

    // init asset player
    initPlayer (assetBase);

    // create the main asset editor
    initEditor (assetBase);

    app->run ();
}


static void
initPlayer (AeAssetBase * assetBase)
{
    if (AeN64Driver::NewN64Driver (cFileName, n64Driver))
	n64Driver = NULL;

    if (n64Driver)
	n64Driver->SetAssetBase (assetBase);
}


static void
initEditor (AeAssetBase * assetBase)
{
    // These need to be put wherever they belong
    AeBinEditor::qLeft = XrmStringToQuark ("Left");
    AeBinEditor::qRight = XrmStringToQuark ("Right");
    AeBinEditor::qUp = XrmStringToQuark ("Up");
    AeBinEditor::qDown = XrmStringToQuark ("Down");
    AeFieldUI::CalcListFontRatio ();

    // Create the top level windows
    AeAssetEditor * assetEditor = new AeAssetEditor ();

    // The order is important here since the effect delay
    // fields need to have access to the player in order
    // to properly init themselves.
    assetEditor->SetPlayer (n64Driver);
    assetEditor->SetAssetBase (assetBase);
    
    if (bankFileName)
	assetEditor->OpenFile (bankFileName);
}