#include "game.h"

#include "rocket.h"
#include "Captain.h"
#include "Flipper.h"
#include "Space.h"

#include <assert.h>

#include "cereal/cereal.h"

int main( int argc, char* args[] )
{
	assert(0 == 0);
	PocSsert<0>();
	//Crash("successfully");
	Dp dp = Dp::Init();
	Db db = {0};
	Cos<Dp*,Db*> gameCycle = GameCycle();
	Fsm* frms[] = {
		Singleton<Background<0,Db*>>(),
		Singleton<Space>(),
		Singleton<Captain>(),
		Singleton<Rocket>(),
		Singleton<RocketMomentum>(),
		Singleton<ViewportFollowRocket>(),
		Singleton<Ball>(),
		&gameCycle,
		0
	};
	Cos<Dp*,Db*> scene = Cos<Dp*,Db*>((Fsm**)frms);
	Fsm* co = &scene;
	while(co)
	{
		co = co->Routine(&dp,&db);
	}
	return 0;
}

