// callbacks
 public void OnTriggerEnterCallBack(KLevelName level, KLevelName beacon)
 {
     // determina a qual dos niveis o portal deve levar
     if (game_state_.GetCurrentLevel == level || game_state_.GetCurrentLevel == beacon)
     {
         // deve teleportar para o nivel
         IEnumeratorCallBacks.Instance.LoadNewScene(game_state_.GetCurrentLevelSceneIndex());
     }
 }
    // metodos publics para avançar nos niveis
    public void CompletedLevel()
    {
        // dependendo do nivel em que o jogo se encontra
        switch (current_level_)
        {
        case KLevelName.Hamr:
            // se o jogador completar o nivel Hamr, muda o nivel actual para o beacon
            current_level_ = KLevelName.HamrBeacon;      // altera o nivel actual para hamrBeacon
            break;

        case KLevelName.HamrBeacon:
            // se o jogador completar o beacon de Hamr, muda o nivel actual para Hugr, e altera tambem
            // o portal
            current_level_ = KLevelName.Hugr;        // altera o nivel atual para Hugr
            break;

        case KLevelName.Hugr:
            // se o jogador completar o nivel hugr, muda o nivel actual para hugrBeacon
            current_level_ = KLevelName.HugrBeacon;     // altera o nivel actual para HugrBeacon
            break;

        case KLevelName.HugrBeacon:
            // se o jogador completar o beacon de Hugr beacon, muda o nivel e o portal para Fylgja
            current_level_ = KLevelName.Fylgja;         // altera o nivel actual para fylgja
            break;

        case KLevelName.Fylgja:
            // se o jogador completar o beacon de fylgja, muda o nivel para o beacon de fylgja
            current_level_ = KLevelName.FylgjaBeacon;       // altera o nivel para o beacon de fylgja
            break;

        case KLevelName.FylgjaBeacon:
            // caso o jogador tenho completo o beacon de filgja, muda o nivel e o actual para haminja
            current_level_ = KLevelName.Hamingja;       // altera o nivel actual para filgja
            break;

        case KLevelName.Hamingja:
            // caso o jogador tenha completo o hamingja, o beacon fica disponivel
            current_level_ = KLevelName.HamingjaBeacon;
            break;

        case KLevelName.HamingjaBeacon:
            // caso o jogador tenha completo o beacon de hamingja, o jogo terminou, marca o nivel como o principal
            current_level_ = KLevelName.Gaol;
            break;
        }

        // determina qual o portal
        DefinePortal();
    }