Пример #1
0
void ferite_add_object_class( FeriteScript *script )
{
	FeriteClass *klass = NULL;
	
	FE_ENTER_FUNCTION;
	klass = ferite_register_inherited_class( script, script->mainns, "Obj", NULL );
	fe_create_cls_fnc( script, klass, "backtrace", ferite_obj_backtrace, "", FE_TRUE );

	fe_create_cls_fnc( script, klass, "constructor", ferite_obj_constructor, "", FE_FALSE );
	fe_create_cls_fnc( script, klass, "constructor", ferite_obj_constructor, "", FE_TRUE );
	
	fe_create_cls_fnc( script, klass, "copy", ferite_obj_copy, "", FE_FALSE );
	fe_create_cls_fnc( script, klass, "hash", ferite_obj_hash, "", FE_FALSE );
	
	fe_create_cls_fnc( script, klass, "isSubclassOfClass", ferite_obj_isSubclassOfClass, "v", FE_TRUE );
	fe_create_cls_fnc( script, klass, "conformsToProtocol", ferite_obj_conformsToProtocol, "v", FE_TRUE );
	fe_create_cls_fnc( script, klass, "callFunction", ferite_obj_callFunction, "s.", FE_FALSE );
	fe_create_cls_fnc( script, klass, "setVariable", ferite_obj_setVariable, "sv", FE_FALSE );
	
	fe_create_cls_fnc( script, klass, "getClass", ferite_obj_getClass, "", FE_FALSE );
	fe_create_cls_fnc( script, klass, "respondsToMethod", ferite_obj_respondsToMethod, "s", FE_FALSE );
	
	fe_create_cls_fnc( script, klass, "rename", ferite_obj_rename, "ss", FE_FUNCTION_IS_DIRECTIVE );
	fe_create_cls_fnc( script, klass, "alias",  ferite_obj_alias, "ss", FE_FUNCTION_IS_DIRECTIVE );
	fe_create_cls_fnc( script, klass, "delete", ferite_obj_delete, "s", FE_FUNCTION_IS_DIRECTIVE );

	ferite_class_finish( script, klass );
	
	FE_LEAVE_FUNCTION(NOWT);
}
Пример #2
0
void ferite_add_closure_class( FeriteScript *script )
{
	FE_ENTER_FUNCTION;
	script->closureClassPtr = ferite_register_inherited_class( script, script->mainns, "Closure", "Obj" );
	ferite_class_finish( script, script->closureClassPtr );
	FE_LEAVE_FUNCTION(NOWT);
}
Пример #3
0
void game_engine_network_init( FeriteScript *script )
{
	FeriteNamespaceBucket *nsb = ferite_find_namespace(script, script->mainns, "Network", FENS_NS);
	FeriteNamespace *network_namespace = (nsb && nsb->data ? nsb->data : ferite_register_namespace(script, "Network", script->mainns));
	
	FeriteClass *server_class = ferite_register_inherited_class(script, network_namespace, "Server", NULL);
	FeriteClass *client_class = ferite_register_inherited_class(script, network_namespace, "Client", NULL);
	
	ferite_register_ns_variable(script, network_namespace, "MESSAGE_DATA", ferite_create_number_long_variable(script, "MESSAGE_DATA", ENET_EVENT_TYPE_RECEIVE, FE_STATIC));
	ferite_register_ns_variable(script, network_namespace, "MESSAGE_CONNECT", ferite_create_number_long_variable(script, "MESSAGE_CONNECT", ENET_EVENT_TYPE_CONNECT, FE_STATIC));
	ferite_register_ns_variable(script, network_namespace, "MESSAGE_DISCONNECT", ferite_create_number_long_variable(script, "MESSAGE_DISCONNECT", ENET_EVENT_TYPE_DISCONNECT, FE_STATIC));

	ferite_register_inherited_class(script, network_namespace, "Peer", NULL);
	
	ferite_register_inherited_class(script, network_namespace, "ConnectMessage", NULL);
	ferite_register_inherited_class(script, network_namespace, "DisconnectMessage", NULL);
	ferite_register_inherited_class(script, network_namespace, "DataMessage", NULL);
	
	FeriteFunction *server_start_function = ferite_create_external_function(script, "start", game_engine_network_server_start, "n");
	FeriteFunction *server_destroy_function = ferite_create_external_function(script, "destroy", game_engine_network_server_destroy, "");
	FeriteFunction *server_flush_function = ferite_create_external_function(script, "flush", game_engine_network_server_flush, "");
	FeriteFunction *server_service_function = ferite_create_external_function(script, "service", game_engine_network_server_service, "n");
	FeriteFunction *server_send_function = ferite_create_external_function(script, "send", game_engine_network_server_send, "os");
	
	ferite_register_class_function(script, server_class, server_start_function, FE_TRUE);
	ferite_register_class_function(script, server_class, server_destroy_function, FE_FALSE);
	ferite_register_class_function(script, server_class, server_flush_function, FE_FALSE);
	ferite_register_class_function(script, server_class, server_service_function, FE_FALSE);
	ferite_register_class_function(script, server_class, server_send_function, FE_FALSE);
	
	FeriteFunction *client_start_function = ferite_create_external_function(script, "start", game_engine_network_client_start, "sn");
	FeriteFunction *client_destroy_function = ferite_create_external_function(script, "destroy", game_engine_network_client_destroy, "");
	FeriteFunction *client_flush_function = ferite_create_external_function(script, "flush", game_engine_network_client_flush, "");
	FeriteFunction *client_service_function = ferite_create_external_function(script, "service", game_engine_network_client_service, "n");
	FeriteFunction *client_send_function = ferite_create_external_function(script, "send", game_engine_network_client_send, "s");
	
	ferite_register_class_function(script, client_class, client_start_function, FE_TRUE);
	ferite_register_class_function(script, client_class, client_destroy_function, FE_FALSE);
	ferite_register_class_function(script, client_class, client_flush_function, FE_FALSE);
	ferite_register_class_function(script, client_class, client_service_function, FE_FALSE);
	ferite_register_class_function(script, client_class, client_send_function, FE_FALSE);
}
Пример #4
0
void game_engine_init( FeriteScript *script )
{
	FeriteNamespaceBucket *nsb = ferite_find_namespace(script, script->mainns, "Engine", FENS_NS);
	FeriteNamespace *engine_namespace = (nsb && nsb->data ? nsb->data : ferite_register_namespace(script, "Engine", script->mainns));
	
	FeriteVariable *event_keydown_variable = ferite_create_number_long_variable(script, "EVENT_KEYDOWN", SDL_KEYDOWN, FE_STATIC);
	FeriteVariable *event_keyup_variable = ferite_create_number_long_variable(script, "EVENT_KEYUP", SDL_KEYUP, FE_STATIC);
	FeriteVariable *event_mousebuttondown_variable = ferite_create_number_long_variable(script, "EVENT_MOUSEBUTTONDOWN", SDL_MOUSEBUTTONDOWN, FE_STATIC);
	FeriteVariable *event_mousebuttonup_variable = ferite_create_number_long_variable(script, "EVENT_MOUSEBUTTONUP", SDL_MOUSEBUTTONUP, FE_STATIC);
	FeriteVariable *event_mousemotion_variable = ferite_create_number_long_variable(script, "EVENT_MOUSEMOTION", SDL_MOUSEMOTION, FE_STATIC);
	FeriteVariable *event_quit_variable = ferite_create_number_long_variable(script, "EVENT_QUIT", SDL_QUIT, FE_STATIC);
	
	FeriteVariable *button_left_variable = ferite_create_number_long_variable(script, "BUTTON_LEFT", SDL_BUTTON_LEFT, FE_STATIC);
	
	FeriteFunction *sin_function = ferite_create_external_function(script, "sin", game_engine_sin, "n");
	FeriteFunction *cos_function = ferite_create_external_function(script, "cos", game_engine_cos, "n");
	FeriteFunction *print_line_function = ferite_create_external_function(script, "printLine", game_engine_print_line, "s");
	FeriteFunction *set_screen_function = ferite_create_external_function(script, "setScreen", game_engine_set_screen, "nnn");
	FeriteFunction *clear_screen_function = ferite_create_external_function(script, "clearScreen", game_engine_clear_screen, "");
	FeriteFunction *update_screen_function = ferite_create_external_function(script, "updateScreen", game_engine_update_screen, "");
	FeriteFunction *next_event_function = ferite_create_external_function(script, "nextEvent", game_engine_next_event, "");
	FeriteFunction *current_time_function = ferite_create_external_function(script, "currentTime", game_engine_current_time, "");
	FeriteFunction *load_image_function = ferite_create_external_function(script, "loadImage", game_engine_load_image, "sn");
	FeriteFunction *draw_image_function = ferite_create_external_function(script, "drawImage", game_engine_draw_image, "onnnnnn");
	FeriteFunction *screen_width_function = ferite_create_external_function(script, "screenWidth", game_engine_screen_width, "");
	FeriteFunction *screen_height_function = ferite_create_external_function(script, "screenHeight", game_engine_screen_height, "");
	FeriteFunction *current_working_directory_function = ferite_create_external_function(script, "currentWorkingDirectory", game_engine_current_working_directory, "");
	FeriteFunction *draw_rectangle_function = ferite_create_external_function(script, "drawRectangle", game_engine_draw_rectangle, "nnnnnnn");
	FeriteFunction *play_music_function = ferite_create_external_function(script, "playMusic", game_engine_play_music, "s");
	FeriteFunction *stop_music_function = ferite_create_external_function(script, "stopMusic", game_engine_stop_music, "");
	FeriteFunction *set_sound_channels_function = ferite_create_external_function(script, "setSoundChannels", game_engine_set_sound_channels, "n");
	FeriteFunction *load_sound_function = ferite_create_external_function(script, "loadSound", game_engine_load_sound, "s");

	ferite_register_inherited_class(script, engine_namespace, "KeyboardEvent", NULL);
	ferite_register_inherited_class(script, engine_namespace, "MouseButtonEvent", NULL);
	ferite_register_inherited_class(script, engine_namespace, "MouseMotionEvent", NULL);
	ferite_register_inherited_class(script, engine_namespace, "QuitEvent", NULL);
	
	ferite_register_ns_variable(script, engine_namespace, "EVENT_KEYDOWN", event_keydown_variable);
	ferite_register_ns_variable(script, engine_namespace, "EVENT_KEYUP", event_keyup_variable);
	ferite_register_ns_variable(script, engine_namespace, "EVENT_MOUSEBUTTONDOWN", event_mousebuttondown_variable);
	ferite_register_ns_variable(script, engine_namespace, "EVENT_MOUSEBUTTONUP", event_mousebuttonup_variable);
	ferite_register_ns_variable(script, engine_namespace, "EVENT_MOUSEMOTION", event_mousemotion_variable);
	ferite_register_ns_variable(script, engine_namespace, "EVENT_QUIT", event_quit_variable);
	
	// SDL_BUTTON_LEFT, SDL_BUTTON_MIDDLE, SDL_BUTTON_RIGHT, SDL_BUTTON_WHEELUP, SDL_BUTTON_WHEELDOWN
	ferite_register_ns_variable(script, engine_namespace, "BUTTON_LEFT", button_left_variable);
	
	ferite_register_ns_function(script, engine_namespace, sin_function);
	ferite_register_ns_function(script, engine_namespace, cos_function);
	ferite_register_ns_function(script, engine_namespace, print_line_function);
	ferite_register_ns_function(script, engine_namespace, set_screen_function);
	ferite_register_ns_function(script, engine_namespace, clear_screen_function);
	ferite_register_ns_function(script, engine_namespace, update_screen_function);
	ferite_register_ns_function(script, engine_namespace, next_event_function);
	ferite_register_ns_function(script, engine_namespace, current_time_function);
	ferite_register_ns_function(script, engine_namespace, load_image_function);
	ferite_register_ns_function(script, engine_namespace, draw_image_function);
	ferite_register_ns_function(script, engine_namespace, screen_width_function);
	ferite_register_ns_function(script, engine_namespace, screen_height_function);
	ferite_register_ns_function(script, engine_namespace, current_working_directory_function);
	ferite_register_ns_function(script, engine_namespace, draw_rectangle_function);
	ferite_register_ns_function(script, engine_namespace, play_music_function);
	ferite_register_ns_function(script, engine_namespace, stop_music_function);
	ferite_register_ns_function(script, engine_namespace, set_sound_channels_function);
	ferite_register_ns_function(script, engine_namespace, load_sound_function);
	
	game_engine_key_init(script, engine_namespace);
	game_engine_image_init(script, engine_namespace);
	game_engine_sound_init(script, engine_namespace);
	game_engine_network_init(script);
}