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