Пример #1
0
static n_object * transfer_sim_obj(void)
{
    n_object * noble_sim_identifier = obj_number(0L, "signature", NOBLE_APE_SIGNATURE);
    obj_number(noble_sim_identifier, "version number", VERSION_NUMBER);
    obj_string(noble_sim_identifier, "copyright", FULL_VERSION_COPYRIGHT);
    obj_string(noble_sim_identifier, "date", FULL_DATE);
    return noble_sim_identifier;
}
Пример #2
0
static n_object * transfer_being_spacetime_obj(n_spacetime * value)
{
    n_object * noble_spacetime = obj_number(0L, "date", value->date);
    n_array  * noble_location = array_number(value->location[0]);
    array_add(noble_location, array_number(value->location[1]));
    obj_array(noble_spacetime, "location", noble_location);
    obj_number(noble_spacetime, "time", value->time);
    return noble_spacetime;
}
Пример #3
0
static n_object * transfer_land_obj(void)
{
    n_object * noble_land = obj_number(0L, "date", land_date());
    n_byte2  * genetics_values = land_genetics();
    n_array  * land_genetics = array_number(genetics_values[0]);
    array_add(land_genetics, array_number(genetics_values[1]));
    
    obj_array(noble_land, "genetics", land_genetics);
    obj_number(noble_land, "time", land_time());
    return noble_land;
}
Пример #4
0
static n_object * transfer_being_delta_obj(noble_being_delta * delta)
{
    n_object * noble_being_delta = obj_number(0L, "direction_facing", delta->direction_facing);
    n_array  * location = array_number(delta->location[0]);
    n_array  * seed = array_number(delta->seed[0]);
    n_array  * goal = array_number(delta->goal[0]);
    n_array  * social_coord = array_number(delta->social_coord_x);

    array_add(location, array_number(delta->location[1]));
    
    array_add(seed, array_number(delta->seed[1]));
    
    array_add(goal, array_number(delta->goal[1]));
    array_add(goal, array_number(delta->goal[2]));
    array_add(goal, array_number(delta->goal[3]));
    
    array_add(social_coord, array_number(delta->social_coord_y));
    array_add(social_coord, array_number(delta->social_coord_nx));
    array_add(social_coord, array_number(delta->social_coord_ny));
    
    obj_array(noble_being_delta, "location", location);

    obj_number(noble_being_delta, "velocity", delta->velocity);
    obj_number(noble_being_delta, "stored_energy", delta->stored_energy);

    obj_array(noble_being_delta, "seed", seed);

    obj_number(noble_being_delta, "macro_state", delta->macro_state);
    obj_number(noble_being_delta, "parasites", delta->parasites);
    obj_number(noble_being_delta, "honor", delta->honor);
    obj_number(noble_being_delta, "crowding", delta->crowding);
    obj_number(noble_being_delta, "height", delta->height);
    obj_number(noble_being_delta, "mass", delta->mass);
    obj_number(noble_being_delta, "posture", delta->posture);

    obj_array(noble_being_delta, "goal", goal);
    obj_array(noble_being_delta, "social_coord", social_coord);

    return noble_being_delta;
}
Пример #5
0
static n_object * transfer_being_constant_obj(noble_being_constant * constant)
{
    n_int genetic_count = 1;
    n_object * noble_being_contant = obj_number(0L, "date_of_birth", constant->date_of_birth);
    n_array * generation = array_number(constant->generation_min);
    n_array * genetics = array_number(constant->genetics[0]);
    while (genetic_count < CHROMOSOMES)
    {
        array_add(genetics, array_number(constant->genetics[genetic_count++]));
    }
    obj_array(noble_being_contant, "genetics", genetics);

    array_add(generation, array_number(constant->generation_max));
    obj_array(noble_being_contant, "generation_range", generation);

    return noble_being_contant;
}
Пример #6
0
void				set_light_tok(t_scene_tok *s_tok, char **tab)
{
	int		len;
	int		*tmp;

	len = obj_number(tab, N_LIGHT);
	if (!len)
		s_tok->lights_tok = NULL;
	else
	{
		if (!(tmp = (int*)malloc(sizeof(int) * (len))))
			check_errors(MALLOC, "tmp", "set_light_tok.c");
		get_index(tab, tmp, N_LIGHT);
		new_lights_tok(s_tok, len);
		set_lights_tok_tab((s_tok->lights_tok), tab, tmp, len);
		free(tmp);
	}
}
Пример #7
0
static n_object * object_file_base(n_file * file)
{
    n_object * base_object = 0L;
    n_object_stream_type stream_type;
    CHECK_FILE_SIZE("file read outside end of file");
    
    stream_type = object_stream_char(file->data[file->location]);
    
    if (stream_type == OBJ_TYPE_OBJECT_OPEN)
    {
        tracking_object_open++;
        do{
            file->location++;
            CHECK_FILE_SIZE("file read outside end of file");
            stream_type = object_stream_char(file->data[file->location]);
            if (stream_type == OBJ_TYPE_STRING_NOTATION)
            {
                n_string string_key = object_file_read_string(file);
                if (string_key)
                {
                    stream_type = object_stream_char(file->data[file->location]);
                    if (stream_type == OBJ_TYPE_COLON)
                    {
                        file->location++;
                        CHECK_FILE_SIZE("file read outside end of file");
                        stream_type = object_stream_char(file->data[file->location]);
                        
                        if (stream_type == OBJ_TYPE_OBJECT_OPEN)
                        {
                            n_object * insert_object = object_file_base(file);
                            if (insert_object)
                            {
                                if (base_object)
                                {
                                    obj_object(base_object, string_key, insert_object);
                                }
                                else
                                {
                                    base_object = obj_object(base_object, string_key, insert_object);
                                }
                                file->location++;
                                CHECK_FILE_SIZE("file read outside end of file");
                                stream_type = object_stream_char(file->data[file->location]);
                            }
                        }
                        if (stream_type == OBJ_TYPE_NUMBER)
                        {
                            n_int number_error;
                            n_int number_value = object_file_read_number(file, &number_error);
                            if (number_error == 0)
                            {
                                stream_type = object_stream_char(file->data[file->location]);
                                if ((stream_type == OBJ_TYPE_OBJECT_CLOSE) || (stream_type == OBJ_TYPE_COMMA))
                                {
                                    if (base_object)
                                    {
                                        obj_number(base_object, string_key, number_value);
                                    }
                                    else
                                    {
                                        base_object = obj_number(base_object, string_key, number_value);
                                    }
                                }
                            }
                        }
                        if (stream_type == OBJ_TYPE_STRING_NOTATION)
                        {
                            n_string string_value = object_file_read_string(file);
                            if (string_value)
                            {
                                stream_type = object_stream_char(file->data[file->location]);
                                if ((stream_type == OBJ_TYPE_OBJECT_CLOSE) || (stream_type == OBJ_TYPE_COMMA))
                                {
                                    if (base_object)
                                    {
                                        obj_string(base_object, string_key, string_value);
                                    }
                                    else
                                    {
                                        base_object = obj_string(base_object, string_key, string_value);
                                    }
                                }
                            }
                        }
                        if (stream_type == OBJ_TYPE_ARRAY_OPEN)
                        {
                            n_array * array_value = object_file_array(file); // TODO: rename object_file_read_array
                            if (array_value)
                            {
                                stream_type = object_stream_char(file->data[file->location]);
                                if ((stream_type == OBJ_TYPE_OBJECT_CLOSE) || (stream_type == OBJ_TYPE_COMMA))
                                {
                                    if (base_object)
                                    {
                                        obj_array(base_object, string_key, array_value);
                                    }
                                    else
                                    {
                                        base_object = obj_array(base_object, string_key, array_value);
                                    }
                                }
                                CHECK_FILE_SIZE("file read outside end of file");
                                stream_type = object_stream_char(file->data[file->location]);
                            }
                            
                            OBJ_DBG(array_value, "array value nil?");
                        }
                    }
                }
            }
            if (stream_type == OBJ_TYPE_OBJECT_CLOSE)
            {
                tracking_object_open--;
            }
        } while (stream_type == OBJ_TYPE_COMMA);
    }
    return base_object;
}