Ejemplo n.º 1
0
void
Stalactite::active_update(float elapsed_time)
{
  if(state == STALACTITE_HANGING) {
    auto player = get_nearest_player();
    if (player && !player->get_ghost_mode()) {
      if(player->get_bbox().p2.x > bbox.p1.x - SHAKE_RANGE_X
         && player->get_bbox().p1.x < bbox.p2.x + SHAKE_RANGE_X
         && player->get_bbox().p2.y > bbox.p1.y
         && player->get_bbox().p1.y < bbox.p2.y + SHAKE_RANGE_Y
         && Sector::current()->can_see_player(bbox.get_middle())) {
        timer.start(SHAKE_TIME);
        state = STALACTITE_SHAKING;
        SoundManager::current()->play("sounds/cracking.wav", get_pos());
      }
    }
  } else if(state == STALACTITE_SHAKING) {
    shake_delta = Vector(static_cast<float>(graphicsRandom.rand(-3, 3)), 0.0f);
    if(timer.check()) {
      state = STALACTITE_FALLING;
      physic.enable_gravity(true);
      set_colgroup_active(COLGROUP_MOVING);
    }
  } else if(state == STALACTITE_FALLING) {
    movement = physic.get_movement(elapsed_time);
  }
}
Ejemplo n.º 2
0
CheatMenu::CheatMenu()
{
  std::vector<Player*> players = Sector::get().get_players();
  auto player = players.empty() ? nullptr : players[0];

  add_label(_("Cheats"));
  add_hl();
  add_entry(MNID_GROW, _("Bonus: Grow"));
  add_entry(MNID_FIRE, _("Bonus: Fire"));
  add_entry(MNID_ICE, _("Bonus: Ice"));
  add_entry(MNID_AIR, _("Bonus: Air"));
  add_entry(MNID_EARTH, _("Bonus: Earth"));
  add_entry(MNID_STAR, _("Bonus: Star"));
  add_entry(MNID_SHRINK, _("Shrink Tux"));
  add_entry(MNID_KILL, _("Kill Tux"));
  add_entry(MNID_FINISH, _("Finish Level"));
  add_entry(MNID_GHOST, (player != nullptr && player->get_ghost_mode()) ?
                        _("Leave Ghost Mode") : _("Activate Ghost Mode"));
  add_hl();
  add_back(_("Back"));
}
Ejemplo n.º 3
0
void
CheatMenu::menu_action(MenuItem& item)
{
  if (Sector::current())
  {
    std::vector<Player*> players = Sector::get().get_players();
    auto player = players.empty() ? nullptr : players[0];

    switch(item.id)
    {
      case MNID_GROW:
        if (player)
        {
          player->set_bonus(GROWUP_BONUS);
        }
        break;

      case MNID_FIRE:
        if (player)
        {
          player->set_bonus(FIRE_BONUS);
        }
        break;

      case MNID_ICE:
        if (player)
        {
          player->set_bonus(ICE_BONUS);
        }
        break;

      case MNID_AIR:
        if (player)
        {
          player->set_bonus(AIR_BONUS);
        }
        break;

      case MNID_EARTH:
        if (player)
        {
          player->set_bonus(EARTH_BONUS);
        }
        break;

      case MNID_STAR:
        if (player)
        {
          player->make_invincible();
        }
        break;

      case MNID_SHRINK:
        if (player)
        {
          player->kill(false);
        }
        break;

      case MNID_KILL:
        if (player)
        {
          player->kill(true);
        }
        break;

      case MNID_FINISH:
        if (GameSession::current())
        {
          GameSession::current()->finish(true);
        }
        break;

      case MNID_GHOST:
        if (GameSession::current() && player)
        {
          if(player->get_ghost_mode())
          {
            scripting::mortal();
          }
          else
          {
            scripting::ghost();
          }
        }
        break;

      default:
        break;
    }
  }

  MenuManager::instance().clear_menu_stack();
}