//
//  click.m
//
//  Created by AIG-Soft on 2011/02/02.
//  Copyright 2011 AIG-Soft. All rights reserved.
//
//  フレームワークにAudioToolbox.framaworkの追加が必要

#import "Click.h"

Click click;

// click音データの読み込み
void initClick(void)
{
	nslog(@"click音データの読み込み");
	CFBundleRef mainBundle=CFBundleGetMainBundle();
	click.soundURL = CFBundleCopyResourceURL(mainBundle,CFSTR ("click"),CFSTR ("aiff"),NULL);
#ifdef DEBUG
	if (click.soundURL==NULL) {
		nslog(@"ファイル付が見つかりません");
	}
#endif
	AudioServicesCreateSystemSoundID (click.soundURL, &click.soundID);
	CFRelease (click.soundURL);
	clickOnOff(true); // デフォルトは音声ON
	click.count=0;
}

// クリック音を鳴らす
void _clickSound(void)
{
	if (click.fsound) {
		// クリック音を出す
//		nslog(@"クリック音出す");
		AudioServicesPlaySystemSound (click.soundID);
	} // 出さない
#ifdef DEBUG
	else {
		nslog(@"クリック音出さない");
	}
#endif
}

// クリック音を恒久的にON/OFFする(YES/NO)
void clickOnOff(BOOL onoff)
{
	click.fsound=onoff;
//	nslog(@"クリック音=%d",onoff);
}

// クリック音を一時的に止める；多重呼出ししないこと
void clickStop(void)
{
	if (click.count++==0) {
		// 現在の状態を保管
		click.fsound2=click.fsound;
		// 音を止める
		clickOnOff(NO);
	}
}

// clickStop()で止めた音を復活する
void clickResume(void)
{
	if (click.count==0) return; // resumeだけ単独で呼び出された時のため
	if (--click.count==0) {
		// ==0になったときに戻す
		click.fsound =click.fsound2;
	}
}

// クリック音処理の開放
void deallocClick(void)
{
	AudioServicesDisposeSystemSoundID(click.soundID);
}
