Ejemplo n.º 1
0
int lsprite_set_anim(lua_State* L) {
    struct sprite* self = (struct sprite*)lua_touserdata(L, 1);
    luaL_checktype(L, 2, LUA_TTABLE);
    
    int len = luaL_len(L, 2);
    struct array* frames = array_new(len);
    for (int i = 1; i <= len; ++i) {
        lua_rawgeti(L, -1, i);
        struct sprite_frame* frame = lua_touserdata(L, -1);
        array_push_back(frames, frame);
        lua_pop(L, 1);
    }
    
    struct anim* anim = anim_new(frames);
    sprite_set_anim(self, anim);
    
    array_free(frames);
    return 0;
}
Ejemplo n.º 2
0
void player_update_animation(player_t *player, game_t *game){
	player->sprite->step += 1;

	if(player->body->flags & BLOCKED_D){
		if(player->move_dir == DIR_X){
			if(player->face_dir == DIR_R){
				sprite_set_anim(player->sprite, anim_dict_get(game->anims, "generic_idle_r"));
			}else if(player->face_dir == DIR_L){
				sprite_set_anim(player->sprite, anim_dict_get(game->anims, "generic_idle_l"));
			}
		}else if(player->move_dir == DIR_R){
			if(player->ctrl_dir == DIR_R){
				sprite_set_anim(player->sprite, anim_dict_get(game->anims, "generic_move_r"));
			}else{
				sprite_set_anim(player->sprite, anim_dict_get(game->anims, "generic_skid_r"));
			}
		}else if(player->move_dir == DIR_L){
			if(player->ctrl_dir == DIR_L){
				sprite_set_anim(player->sprite, anim_dict_get(game->anims, "generic_move_l"));
			}else{
				sprite_set_anim(player->sprite, anim_dict_get(game->anims, "generic_skid_l"));
			}
		}
	}else{
		if(player->face_dir == DIR_R){
			if(player->body->vy < -1.0){
				sprite_set_anim(player->sprite, anim_dict_get(game->anims, "generic_jump_r"));
			}else if(player->body->vy > 1.0){
				sprite_set_anim(player->sprite, anim_dict_get(game->anims, "generic_fall_r"));
			}else{
				sprite_set_anim(player->sprite, anim_dict_get(game->anims, "generic_hang_r"));
			}
		}else if(player->face_dir == DIR_L){
			if(player->body->vy < -1.0){
				sprite_set_anim(player->sprite, anim_dict_get(game->anims, "generic_jump_l"));
			}else if(player->body->vy > 1.0){
				sprite_set_anim(player->sprite, anim_dict_get(game->anims, "generic_fall_l"));
			}else{
				sprite_set_anim(player->sprite, anim_dict_get(game->anims, "generic_hang_l"));
			}
		}
	}
}