/************************************************************************ * 玩家经验值改变 ************************************************************************/ bool Controller::CheckPlayerIsInPortal() { Player* myPlayer = GetMyPlayer();//GetPlayerManager()->GetPlayer(m_strMyPlayerID); Point playerPosition = myPlayer->getPosition(); if (GetCurrentChapter() != CHAPTER_4 && Game()->GetPathManager()->IsInRect(Game()->GetSkillManager()->GetPortalAnimation()->GetScope(),playerPosition)) { if (GetCurrentChapter() == CHAPTER_1) { ChangeChapter(CHAPTER_2); } else if (GetCurrentChapter() == CHAPTER_2) { ChangeChapter(CHAPTER_3); } else if (GetCurrentChapter() == CHAPTER_3) { ChangeChapter(CHAPTER_4); } return true; } return false; }
bool MythDVDPlayer::DoJumpChapter(int chapter) { if (!player_ctx->buffer->IsDVD()) return false; int total = GetNumChapters(); int current = GetCurrentChapter(); if (chapter < 0 || chapter > total) { if (chapter < 0) { chapter = current -1; if (chapter < 0) chapter = 0; } else if (chapter > total) { chapter = current + 1; if (chapter > total) chapter = total; } } bool success = player_ctx->buffer->DVD()->playTrack(chapter); if (success) { if (decoder) { decoder->UpdateFramesPlayed(); if (player_ctx->buffer->DVD()->GetCellStart() == 0) decoder->SeekReset(framesPlayed, 0, true, true); } ClearAfterSeek(!player_ctx->buffer->IsInDiscMenuOrStillFrame()); } jumpchapter = 0; return success; }