コード例 #1
0
ファイル: Snap.cpp プロジェクト: RaphaelMarinier/audacity
void SnapManager::Reinit()
{
   int snapTo = mProject->GetSnapTo();
   double rate = mProject->GetRate();
   wxString format = mProject->GetSelectionFormat();

   // No need to reinit if these are still the same
   if (snapTo == mSnapTo && rate == mRate && format == mFormat)
   {
      return;
   }

   // Save NEW settings
   mSnapTo = snapTo;
   mRate = rate;
   mFormat = format;

   mSnapPoints.clear();

   // Grab time-snapping prefs (unless otherwise requested)
   mSnapToTime = false;

   // Look up the format string
   if (mSnapTo != SNAP_OFF && !mNoTimeSnap)
   {
      mSnapToTime = true;
      mConverter.SetSampleRate(mRate);
      mConverter.SetFormatName(mFormat);
   }

   // Add a SnapPoint at t=0
   mSnapPoints.push_back(SnapPoint{});

   TrackListConstIterator iter(mTracks);
   for (const Track *track = iter.First();  track; track = iter.Next())
   {
      if (mTrackExclusions &&
          mTrackExclusions->end() !=
          std::find(mTrackExclusions->begin(), mTrackExclusions->end(), track))
      {
         continue;
      }

      if (track->GetKind() == Track::Label)
      {
         LabelTrack *labelTrack = (LabelTrack *)track;
         for (int i = 0, cnt = labelTrack->GetNumLabels(); i < cnt; ++i)
         {
            const LabelStruct *label = labelTrack->GetLabel(i);
            const double t0 = label->getT0();
            const double t1 = label->getT1();
            CondListAdd(t0, labelTrack);
            if (t1 != t0)
            {
               CondListAdd(t1, labelTrack);
            }
         }
      }
      else if (track->GetKind() == Track::Wave)
      {
         auto waveTrack = static_cast<const WaveTrack *>(track);
         for (const auto &clip: waveTrack->GetClips())
         {
            if (mClipExclusions)
            {
               bool skip = false;
               for (size_t j = 0, cnt = mClipExclusions->size(); j < cnt; ++j)
               {
                  if ((*mClipExclusions)[j].track == waveTrack &&
                      (*mClipExclusions)[j].clip == clip.get())
                  {
                     skip = true;
                     break;
                  }
               }

               if (skip)
               {
                  continue;
               }
            }

            CondListAdd(clip->GetStartTime(), waveTrack);
            CondListAdd(clip->GetEndTime(), waveTrack);
         }
      }
#ifdef USE_MIDI
      else if (track->GetKind() == Track::Note)
      {
         CondListAdd(track->GetStartTime(), track);
         CondListAdd(track->GetEndTime(), track);
      }
#endif
   }

   // Sort all by time
   std::sort(mSnapPoints.begin(), mSnapPoints.end());
}
コード例 #2
0
ファイル: EnemiesAndObjects.cpp プロジェクト: bjonke/Exodus
void Boss::UpdateBoss()
{
	int x = GetTimerAttack();
	if( x >= BOSS_ATTACK_START || HeadsComing == true )
	{
		HeadsComing = true;
		AnimPaceBoss++;
		HeadTimer++;
		SetState( BOSS_ATTACK );
		if( AnimPaceBoss >= ANIMPACEBOSSHEAD )
		{
			UpdateFrame();
			AnimPaceBoss = 0;
		}
		ResetAttackTimer();
		if( HeadTimer >= 20 )
		{
			if( HeadAnimation == true )
			{
				HeadTimer = 0;
				My_BossHead.push_back(	CreateBossHeads(	xPos, 
													yPos + 10, 
													surface,
													20 * SizeHeads ));
				SizeHeads++;
			}

			
			if( GetFrame() >= 4 )
			{
				HeadAnimation = true;
				SetFrame( BOSS_IDLE );
			}
		}

		if( SizeHeads == 6 )
		{
			HeadsComing = false;
			SetFrame( BOSS_IDLE );
			SizeHeads = 1;
		}
	}
	else
	{
		SetFrame( BOSS_IDLE );
		UpdateAttackTimer();
	}
		//sanity check
	switch( GetState() )
	{
		case BOSS_IDLE:
			{
				SDL_BlitSurface( gamestate.GetSurface( surface ), 
					&GetClips( GetFrame() ),
								gamestate.screen, &ReturnDestRect() );
			}
		case BOSS_ATTACK:
			{
				SDL_BlitSurface( gamestate.GetSurface( surface ),
				&GetClips( GetFrame() ), 
				gamestate.screen, &ReturnDestRect() );
			}
		case BOSS_DIE:
			{
				SDL_BlitSurface( gamestate.GetSurface( surface ),
				&GetClips( GetFrame() ), 
				gamestate.screen, &ReturnDestRect() );
			}
	}

	UpdateHeads();
	
}