//Added
//includes for BP/Main.cpp, actionObject.cpp, destructibles.cpp
//BP_Main() in main function

//Removed
//includes for actionObject.txt, destructibles.txt


#define MAX(a,b) ((a)>(b)?(a):(b))
#define MIN(a,b) ((a)<(b)?(a):(b))

bool DeserializeBool(kDict& in dict, const kStr& in key)
{
    kStr szOut;
    
    if(dict.GetString(key, szOut))
    {
        return szOut == "true";
    }
    
    return false;
}

#ifdef KEX_DEBUG
    #define DEBUG_PRINT(x) Sys.Print(x)
#else
    #define DEBUG_PRINT(x)
#endif

#define SERIALIZE(x)            		dict.Add(#x, ""+x)
#define DESERIALIZE_FLOAT(x)    	dict.GetFloat(#x, x)
#define DESERIALIZE_INT(x)      	dict.GetInt(#x, x)
#define DESERIALIZE_BOOL(x)     	x = DeserializeBool(dict, #x)

#include "defs/common.txt"
#include "scripts/animations.txt"
#include "scripts/actions.txt"
#include "scripts/primagenBoss.txt"
#include "scripts/weapons.txt"
#include "scripts/ridingGun.txt"
#include "scripts/door.txt"
#include "scripts/missileController.txt"
#include "scripts/interactiveAnim.txt"
#include "scripts/turret.txt"
#include "scripts/totem.txt"
#include "scripts/blindBoss.txt"
#include "scripts/queenBoss.txt"
#include "scripts/motherBoss.txt"
#include "scripts/netcallbacks.txt"

#include "scripts/BP/Main.cpp"
#include "scripts/actionObject.cpp"
#include "scripts/destructibles.cpp"

void main(void)
{
    InitDestructibleModeTable();
    InitActionObjectModeTable();
    InitInteractiveAnimModeTable();
    InitTurretModeTable();
    InitDoorModeTable();
    InitBlindBossModeTable();
    InitQueenBossModeTable();
    InitMotherBossModeTable();
    InitPrimagenBossModeTable();
	
	BP_Main();
}
