Exemple #1
0
/**
 * Create a new user
 * @param client to associate with user
 * @return new user pointer struct
 */
User new_user( Client client ) {


	User user = malloc( sizeof(struct user_struct ) );
	if( user == NULL ){
		perror("Malloc user");
		return NULL;
	}
	
    // init
    memset( user, 0, sizeof( struct user_struct ) );
    
    // generate the parent, if this fails everything does
    Mob mob = new_mob( MOB_TYPE_USER, user );
    if( mob == NULL ){
        perror("malloc mob");
        free( user );
        return NULL;
    }
    
    user->parent = mob;

	user->client = client;

    user->flags = 0;
    
	// create mutex
	pthread_mutex_t mutex;
	int status = pthread_mutex_init( &mutex, NULL );
    user->mutex = mutex;

	return user;
}
void		add_mob(int npc, int x, int y, enum e_dir direc)
{
	static GLfloat	dir[3] = {0.0, 0.0, 0.0};
	static GLfloat	vec[3] = {0.0, 0.0, 1.0};
	GLfloat			pos[3];
	t_move			*move;
	t_rot			*rot;
	t_anim			*anim;
	t_square		*sq;
	t_mob			*mob;

	set_vecf(pos, (float)x * 2, 0.0, (float)y * 2);
	anim = new_anim(rand() % 360, 360, anim_mob);
	move = new_move(0, 0, pos, dir);
	rot = new_rot(0, vec, 90 * direc, 0);
	mob = new_mob(anim, move, rot, npc);
	sq = g_env->sq + x + y * g_env->mapw;
	g_env->npc[npc].sq = sq;
	sq->mobs = new_link(sq->mobs, mob);
}