Beispiel #1
0
void mdx_close(MDX_DATA *mdx,PDX_DATA *pdx) {	
    /* one playing finished */
	
	mdx_close_pdx( pdx );
	mdx_close_mdx( mdx );
	self_destroy();
}
Beispiel #2
0
void mdx_close(t_mdxmini *data)
{
    /* one playing finished */
	
	if (data->self)
		mdx_parse_mml_ym2151_async_finalize(data->songdata);
    
    mdx_close_pdx( data->pdx );
    mdx_close_mdx( data->mdx );

    self_destroy(data->songdata);
}
Beispiel #3
0
void
    asl_field_assume (
    asl_field_list_t * list,            //  Parent field list
    char * name,                        //  Field name
    char * value                        //  Field string value
)
{
asl_field_t
    *field;

//
field = asl_field_list_search (list, name);
if (field)
    self_destroy (&field);
asl_field_new_string (list, name, value);
}
Beispiel #4
0
int atenderPedidoNivel(datos_planificador_t *datosPlan) {
	header_t header;

	int nbytes = recv(datosPlan->sockfdNivel, &header, sizeof(header),
			MSG_WAITALL);

	switch (header.type) {
	case NOTIFICAR_ALGORITMO_PLANIFICACION:
		actualizarAlgoritmo(&header, datosPlan);
		break;
	case VICTIMA_DEADLOCK:
		removerPersonaje(&header, datosPlan, "deadlock");
		break;
	case VICTIMA_ENEMIGO:
		removerPersonaje(&header, datosPlan, "enemigo");
		break;
	case UBICACION_CAJA:
		gestionarUbicacionCaja(datosPlan, &header);
		break;
	case NOTIFICACION_RECURSOS_LIBERADOS:
		gestionarDesbloqueoPersonajes(&header, datosPlan);
		break;
	default:
		log_warning(logFile,
				"Mensaje inesperado. type=%d length=%d. (atender pedido nivel).",
				header.type, header.length);
	}

	if (nbytes == 0) {
		log_error(logFile, "Nivel %s se desconecto inesperadamente.",
				datosPlan->nombre);
		self_destroy(datosPlan->nombre);
	}

	return nbytes;
}
demo_client_connection_t *
    demo_client_connection_new_ (
    char * file,                        //  Source file for call
    size_t line,                        //  Line number for call
    char * host,                        //  Host to connect to
    char * virtual_host,                //  Virtual host
    icl_longstr_t * auth_data,          //  Authentication data
    char* instance,                     //  Client instance name
    int trace,                          //  Trace level, 0 - 3
    int timeout                         //  Connection timeout, msecs
)
{
char
    *env_value;                 //  Get environment setting
    demo_client_connection_t *
        self = NULL;                    //  Object reference

if (!s_demo_client_connection_active)
    self_initialise ();
    self = demo_client_connection_alloc_ (file, line);
    if (self) {
        self->object_tag   = DEMO_CLIENT_CONNECTION_ALIVE;
#if defined (DEBUG)
        icl_mem_set_callback (self, demo_client_connection_show_);
#endif

//
self->method_queue = smt_method_queue_sync_new ();
self->timeout = timeout;
self->trace = trace;
self->error_text = "no error";
icl_shortstr_cpy (self->host, host);

env_value = getenv ("WIREAPI_SILENT");
if (env_value && streq (env_value, "1"))
    self->silent = TRUE;

self->thread = demo_client_agent_connection_thread_new (
    self->method_queue,
    &self->alive,
    &self->interrupt,
    &self->reply_code,
    self->reply_text,
    host,
    virtual_host,
    auth_data,
    instance,
    trace,
    timeout);

//  Let the SMT engine take over until we get a reply on our queue
if (self->thread) {
    if (s_wait_for_methods (self, self->timeout, TRUE) == 0) {
        self->alive = TRUE;         //  Connection is ready for use
        //  Decide whether to use Direct Mode or not
        if (demo_client_config_direct (demo_client_config) || self->server_direct)
            self->direct = TRUE;
    }
    else
        self_destroy (&self);
}
}

    return (self);
}
Beispiel #6
0
int mdx_load( char *filename, MDX_DATA **mdx, PDX_DATA **pdx, int slowDevice, int infloop ) {
if (!self_construct()) {
    /* failed to create class instances */
    return -1;
  }

	pdx_pathname        = (char *)NULL;
	no_pdx              = FLAG_FALSE;
	no_fm               = FLAG_FALSE;
	no_opl3             = FLAG_TRUE;
	no_ym2151           = FLAG_FALSE;
	no_fm_voice         = FLAG_FALSE;
	fm_waveform         = 0;
	pcm_volume          = 127;
	fm_volume           = 127;
	volume              = 127;
	is_output_to_stdout = FLAG_FALSE;
	max_infinite_loops  = (infloop==1?10:1); 
	fade_out_speed      = 5;
	dump_voice          = FLAG_FALSE;
	output_titles       = FLAG_FALSE;
	is_use_reverb       = (slowDevice?FLAG_FALSE:FLAG_TRUE);
	reverb_predelay     = 0.05f;
	reverb_roomsize     = 0.5f;
	reverb_damp         = 0.1f;
	reverb_width        = 0.8f;
	reverb_wet          = 0.2f;
	reverb_dry          = 0.5f;
	
	dsp_device          = (char *)NULL;
	is_use_fragment     = FLAG_TRUE;
	
	is_output_to_stdout_in_wav = FLAG_TRUE;
	

    /* load mdx file */

    *mdx = mdx_open_mdx( filename );
    if ( (*mdx) == NULL ) error_end(_("file not found"));
	
	(*mdx)->slowDevice = slowDevice;

    (*mdx)->is_use_pcm8         = no_pdx      == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE;
    (*mdx)->is_use_fm           = no_fm       == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE;
    (*mdx)->is_use_opl3         = no_opl3     == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE;
    (*mdx)->is_use_ym2151       = no_ym2151   == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE;
    (*mdx)->is_use_fm_voice     = no_fm_voice == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE;
    (*mdx)->fm_wave_form        = fm_waveform;
    (*mdx)->master_volume       = volume;
    (*mdx)->fm_volume           = fm_volume  * volume/127;
    (*mdx)->pcm_volume          = pcm_volume * volume/127;
    (*mdx)->max_infinite_loops  = max_infinite_loops;
    (*mdx)->fade_out_speed      = fade_out_speed;

    (*mdx)->is_output_to_stdout = is_output_to_stdout; 
    (*mdx)->is_use_fragment     = is_use_fragment;
    (*mdx)->dsp_device          = dsp_device;
    (*mdx)->dump_voice          = dump_voice;
    (*mdx)->is_output_titles    = output_titles;

    (*mdx)->is_use_reverb       = is_use_reverb;
    (*mdx)->reverb_predelay     = reverb_predelay;
    (*mdx)->reverb_roomsize     = reverb_roomsize;
    (*mdx)->reverb_damp         = reverb_damp;
    (*mdx)->reverb_width        = reverb_width;
    (*mdx)->reverb_dry          = reverb_dry;
    (*mdx)->reverb_wet          = reverb_wet;

    (*mdx)->is_output_to_stdout_in_wav = is_output_to_stdout_in_wav; 

    /* voice data load */

    if ( mdx_get_voice_parameter( *mdx ) == 0 ) {
		/* load pdx data */
		*pdx = _get_pdx(*mdx, filename);
    } else {
		self_destroy();
		return -1;
	}
	
	return 0;
}
Beispiel #7
0
byte *
    asl_field_parse (
    asl_field_list_t * list,            //  Parent field list
    byte * input,                       //  Field definition structure
    byte * limit                        //  End of field-table string
)
{
asl_field_t
    *self;
size_t
    string_size;
    byte *
        field_end;                      //  Calculated end position

//
assert (list);
self = self_new ();

//  Copy field name                                                        
string_size = *input;
input += 1;
memcpy (self->name, input, string_size);
self->name [string_size] = 0;
input += string_size;

assert (input <= limit);
self->type = *input;
input += 1;

if (self->type == ASL_FIELD_TYPE_STRING) {
    ASL_FIELD_GET_LONG (string_size, input);

    //  Ensure that the longstr->data is a valid C string
    self->string = icl_longstr_new (NULL, string_size + 1);
    memcpy (self->string->data, input, string_size);
    self->string->data [string_size] = '\0';
    self->string->cur_size = string_size;
    input += string_size;
    field_end = input;
}
else
if (self->type == ASL_FIELD_TYPE_INTEGER) {
    ASL_FIELD_GET_LONG (self->integer, input);
    field_end = input;
}
else
if (self->type == ASL_FIELD_TYPE_DECIMAL) {
    self->decimals = *input;
    input += 1;
    ASL_FIELD_GET_LONG (self->integer, input);
    field_end = input;
}
else
if (self->type == ASL_FIELD_TYPE_TIME) {
    ASL_FIELD_GET_LONG (self->integer, input);
    field_end = input;
}
else
if (self->type == ASL_FIELD_TYPE_FIELD_TABLE) {
    ASL_FIELD_GET_LONG (string_size, input);

    //  Ensure that the longstr->data is a valid C string
    self->string = icl_longstr_new (NULL, string_size);
    memcpy (self->string->data, input, string_size);
    self->string->cur_size = string_size;
    input += string_size;
    field_end = input;
}
else
if (self->type == ASL_FIELD_TYPE_VOID) {
    field_end = input;
}
else {
    icl_console_print ("asl_field: invalid field type - '%c'", *input);
    field_end = NULL;
}
if (field_end == NULL || input > limit) {
    icl_console_print ("asl_field: field definition badly formed - rejected");
    field_end = NULL;
    self_destroy (&self);
}
else
    asl_field_list_queue (list, self);

asl_field_unlink (&self);

    return (field_end);
}