nuauseqplayercontrol.c 1.95 KB
/*======================================================================*/
/*		NuSystem						*/
/*		nuauseqplayercontrol.c					*/
/*									*/
/*		Copyright (C) 1998, NINTENDO Co,Ltd.			*
/*									*/
/*	98/11/26	Created  by K.Ohki(SLANP)			*/
/*======================================================================*/
/* $Id: nuauseqplayercontrol.c,v 1.1.1.1 2002/10/30 02:07:09 blythe Exp $*/
/*======================================================================*/

#include <nusys.h>
#include <nualsgi.h>

/*----------------------------------------------------------------------*/
/*	nuAuSeqPlayerControl - シーケンスのコントロール			*/
/*									*/
/*	シーケンスのコントロールを行います。				*/
/*	この関数は,nuAuInit()でコールバック関数登録をされ、オーディオ	*/
/*	マネージャから一定周期で呼び出されます。			*/
/*	この関数では,シーケンスのフェードアウトや停止,ポーズの処理を	*/
/*	行っています。カスタムのコールバック作成時の参考にしてください	*/
/*	IN:	無し							*/
/*	RET:	無し							*/
/*----------------------------------------------------------------------*/
void nuAuSeqPlayerControl(void)
{
  int	cnt;
  int vol;

  for(cnt = 0; cnt <2 ;cnt++)
    {
      if(nuAuSeqPlayer[cnt].mode & NU_AU_SEQ_MODE_PLAYPENDING)
	{
	  if(nuAuSeqPlayerGetState(cnt) ==  AL_STOPPED)
	    {
	      /* ペンディングになっていた シーケンスの再生処理 */
	      nuAuSeqPlayerPlay(cnt);
	      nuAuSeqPlayer[cnt].mode &= ~NU_AU_SEQ_MODE_PLAYPENDING;
	    }
	}

      if(nuAuSeqPlayer[cnt].mode & NU_AU_SEQ_MODE_FADEOUT)
	{
	  /* シーケンスのフェードアウト処理 */
	  if(nuAuSeqPlayer[cnt].counter == 0){
	    /* カウンターが0ならフラグを落してボリュームを0にする */
	    nuAuSeqPlayerSetVol(cnt, 0);
	    nuAuSeqPlayerStop(cnt);
	    nuAuSeqPlayer[cnt].mode &=~NU_AU_SEQ_MODE_FADEOUT;
	    nuAuSeqPlayerSetVol(cnt, 0x7fff);
	  } else {
	    vol = nuAuSeqPlayerGetVol(cnt);
	    vol -= nuAuSeqPlayer[cnt].speed;
	    nuAuSeqPlayerSetVol(cnt, vol);
	    nuAuSeqPlayer[cnt].counter--;
	  }
	}
    }	    
}