示例#1
0
int main(int argc, char *argv[] )
{
	FeriteScript *script = NULL;
	char *error_message = NULL;
	
	SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO);
	SDL_EnableUNICODE(1);
	
	enet_initialize();
	
	Mix_Init(0);
	
	int audio_rate = 22050;
	Uint16 audio_format = AUDIO_S16; /* 16-bit stereo */
	int audio_channels = 2;
	int audio_buffers = 4096;
	Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers);
	
	srand(time(NULL));
	
	if( ferite_init(0, NULL) )
	{
		ferite_set_script_argv(argc, argv);
		script = ferite_script_compile("Game.fe");
		if( ferite_has_compile_error(script) )
		{
			error_message = ferite_get_error_log(script);
			fprintf(stderr, "[ferite: compile]\n%s", error_message);
		}
		else
		{
			ferite_array_init(script);
			ferite_string_init(script);
			ferite_number_init(script);
			game_engine_init(script);
			
			ferite_script_execute(script);
			if( ferite_has_runtime_error(script) )
			{
				error_message = ferite_get_error_log(script);
				fprintf(stderr, "[ferite: execution]\n%s", error_message);
			}
		}
		if( error_message )
		{
			ffree(error_message);
		}
		ferite_script_delete(script);
		ferite_deinit();
	}
	
	enet_deinitialize();
	
	Mix_CloseAudio();
	Mix_Quit();
	
	SDL_Quit();
	
	return 0;
}
示例#2
0
int main( int argc, char **argv )
{
    FeriteScript *script = NULL;
    char *errmsg = NULL;
    int i = 0;

#ifdef HAVE_LIBGC
	GC_INIT();
#endif

    if ( argc < 2 )
    {
        print_version();
        print_copyright();
        printf( "\n" );
        print_usage();
        printf( "\n\tYou need to supply a file name. For help try builder --help\n\n" );
        exit( -1 );
    }
    else
    {

        if( opt.showargs )
        {
            printf( "Argument Count: %d\n", argc );
            for( i = 0; i < argc; i++ )
              printf( "Argument #%d: %s\n", i+1, argv[i] );
        }

        if( opt.verbose )
          printf( "--> initialising builder\n");

        memset( file_list, '\0', 8096 );
        memset( internal_file_list, '\0', 8096 );

        if( ferite_init( argc, argv ) )
        {
            current_module = fmalloc( sizeof(BuilderModule) );
            memset( current_module, '\0', sizeof(BuilderModule) );
            parse_args( argc, argv );

            if( opt.verbose )
              printf( "--> creating script object\n" );

            if( opt.verbose )
            {
                printf( "--> loading script from file\n" );
                printf( "-->   `-> script file: %s\n", opt.scriptname );
            }

            if( opt.verbose )
              printf( "--> compiling script\n" );

            ferite_compiler_keep_native_code(); /* we call this to make sure ferite wont delete our code we need */
            if( !opt.estring )
            {
                script = ferite_script_compile( opt.scriptname );
            }
            else
            {
                script = ferite_compile_string( opt.scriptname );
            }

            if( script->mainns != NULL )
            {
                if( is_open == FE_FALSE )
                {
                    class_stack = ferite_create_stack( NULL, 30 );
                }
                file_stack = ferite_create_stack( NULL, 30 );

                if( opt.verbose )
					printf( "--> dumping script\n" );
                builder_dump_plan( script );

                if( opt.verbose )
                  printf( "--> destroying script object\n" );
                ferite_delete_stack( NULL, file_stack );

                if( is_open == FE_FALSE )
                {
                    for( i = 1; i <= class_stack->stack_ptr; i++ )
                    {
                        if( class_stack->stack[i] != NULL )
                        {
                            ffree( class_stack->stack[i] );
                        }
                    }
                    ferite_delete_stack( NULL, class_stack );
                }
            }
            else
            {
                errmsg = ferite_get_error_log( script );
                fprintf( stderr, "%s", errmsg );
                ffree( errmsg );
            }
            ferite_script_delete( script );
            ffree( current_module );

            ferite_deinit();
        }
        else
        {
            fprintf( stderr, "Unable to initialise the ferite engine!\n" );
        }
        if( opt.verbose )
			printf( "--> Quiting Application\n" );
		
        exit(0);
    }
    return 0;
}