first run through for sound on iOS platforms. Currently works only for simulator unless the music files are extracted from the zip file onto the filesystem.

This commit is contained in:
techdragon.nguyen@gmail.com
2012-02-03 11:23:27 +00:00
parent 52f2435c48
commit 78c08af9f5
8 changed files with 1546 additions and 14 deletions
+175
View File
@@ -0,0 +1,175 @@
//
// JSfx.cpp
// wagic
//
// Created by Michael Nguyen on 2/3/12.
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#include <iostream>
#include "JFileSystem.h"
#include "JSoundSystem.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#import "SoundManager.h"
//////////////////////////////////////////////////////////////////////////
JMusic::JMusic()
{
}
void JMusic::Update(){
}
int JMusic::getPlayTime(){
return 0;
}
JMusic::~JMusic()
{
}
//////////////////////////////////////////////////////////////////////////
JSample::JSample()
{
}
JSample::~JSample()
{
}
unsigned long JSample::fileSize()
{
return 0;
}
//////////////////////////////////////////////////////////////////////////
JSoundSystem* JSoundSystem::mInstance = NULL;
JSoundSystem* JSoundSystem::GetInstance()
{
if (mInstance == NULL)
{
mInstance = new JSoundSystem();
mInstance->InitSoundSystem();
}
return mInstance;
}
void JSoundSystem::Destroy()
{
if (mInstance)
{
mInstance->DestroySoundSystem();
delete mInstance;
mInstance = NULL;
}
}
JSoundSystem::JSoundSystem()
{
mVolume = 0;
mSampleVolume = 0;
}
JSoundSystem::~JSoundSystem()
{
}
void JSoundSystem::InitSoundSystem()
{
NSLog(@"InitSoundSystem enter");
[SoundManager sharedSoundManager];
NSLog(@"InitSoundSystem leave");
}
void JSoundSystem::DestroySoundSystem()
{
}
JMusic *JSoundSystem::LoadMusic(const char *fileName)
{
JMusic* music = new JMusic();
string fullpath = JFileSystem::GetInstance()->GetResourceFile(fileName);
music->filename = fullpath;
NSString *filename = [NSString stringWithCString: fileName encoding:NSUTF8StringEncoding];
NSString *key = [[filename componentsSeparatedByString: @"."] objectAtIndex: 0];
NSString *fileType = [[key componentsSeparatedByString: @"."] lastObject];
NSString *path = [NSString stringWithCString: fullpath.c_str() encoding:NSUTF8StringEncoding];
music->key = [key cStringUsingEncoding:NSUTF8StringEncoding];
music->ext = [fileType cStringUsingEncoding: NSUTF8StringEncoding];
[[SoundManager sharedSoundManager] loadBackgroundMusicWithKey:key musicFile:path];
return music;
}
void JSoundSystem::PlayMusic(JMusic *music, bool looping)
{
NSString *key = [NSString stringWithCString: music->key.c_str() encoding: NSUTF8StringEncoding];
[[SoundManager sharedSoundManager] playMusicWithKey: key timesToRepeat: looping? -1 : 1];
}
void JSoundSystem::StopMusic(JMusic *music)
{
[[SoundManager sharedSoundManager] stopMusic];
}
void JSoundSystem::SetVolume(int volume)
{
SetMusicVolume(volume);
SetSfxVolume(volume);
}
void JSoundSystem::SetMusicVolume(int volume)
{
mVolume = volume;
[[SoundManager sharedSoundManager] setMusicVolume: (float ) volume];
}
void JSoundSystem::SetSfxVolume(int volume){
mSampleVolume = volume;
[[SoundManager sharedSoundManager] setFxVolume: (float ) volume];
SetMusicVolume(mVolume);
}
JSample *JSoundSystem::LoadSample(const char *fileName)
{
JSample* sample = new JSample();
if (sample)
{
NSArray *components = [[NSString stringWithCString:fileName encoding:NSUTF8StringEncoding] componentsSeparatedByString:@"."];
string fullpath = JFileSystem::GetInstance()->GetResourceFile(fileName);
sample->filename = fullpath;
sample->ext = [[components lastObject] cStringUsingEncoding: NSUTF8StringEncoding];
NSString *key = [components objectAtIndex:0];
NSString *musicFile = [NSString stringWithCString: fullpath.c_str() encoding:NSUTF8StringEncoding];
[[SoundManager sharedSoundManager] loadSoundWithKey: key musicFile: musicFile];
}
return sample;
}
void JSoundSystem::PlaySample(JSample *sample)
{
SoundManager *soundManager = [SoundManager sharedSoundManager];
NSString *key = [NSString stringWithCString: sample->key.c_str() encoding:NSUTF8StringEncoding];
[soundManager playSoundWithKey: key gain: 1.0f pitch: 1.0f location:CGPointZero shouldLoop: NO sourceID: -1];
}