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; }
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; }