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