Ejemplo n.º 1
0
void
SamplesTreeCtrl::onChangeSampleSpeaker( char const *speakerName, smp::Sample *sample )
{
	// Is there a speaker of this new name?
	wxTreeItemId speakerItem = getSpeaker( speakerName );
	wxTreeItemId speechItem  = getTreeItem( sample );

	if ( speakerItem.IsOk() )
	{
		// The speaker of this name already exists.
		// So I merge the item into that tree.

		wxTreeItemId currentSpeakerItem = getSpeaker( speechItem );
		if ( currentSpeakerItem.IsOk() )
			SelectItem( changeSpeaker( speechItem, currentSpeakerItem, speakerItem ) );
	}
	else
	{
		// The speaker doesn't already exist.

		speakerItem = getSpeaker( speechItem );

		// Do I have siblings?
		if ( GetChildrenCount( speakerItem ) == 1 )
			// There's nobody else. I should change the speaker name in place.
			SetItemText( speakerItem, speakerName );
		else
		{
			// I have a different name than my siblings, I should create a
			// new parent and move there.
			wxTreeItemId newSpeakerItem = AppendItem( GetRootItem(), speakerName );
			SelectItem( changeSpeaker( speechItem, speakerItem, newSpeakerItem ) );
		}
	}
}
Ejemplo n.º 2
0
void Dialog::stopAnimation() {
	Object *speaker = getSpeaker();
	if (!speaker)
		return;

	speaker->playAnimation();
}
Ejemplo n.º 3
0
void Dialog::playAnimation() {
	Object *speaker = getSpeaker();
	if (!speaker)
		return;

	const Aurora::DLGFile::Line *entry = _dlg->getCurrentEntry();
	if (!entry) {
		stopAnimation();
		return;
	}

	speaker->playAnimation(getCreatureTalkAnimationName((TalkAnimation) entry->animation), false, -1.0f);
}
Ejemplo n.º 4
0
int
synchronousBeep (unsigned short frequency, unsigned short milliseconds) {
#ifdef HAVE_MACHINE_SPEAKER_H
  int speaker = getSpeaker();
  if (speaker != -1) {
    tone_t tone;
    memset(&tone, 0, sizeof(tone));
    tone.frequency = frequency;
    tone.duration = (milliseconds + 9) / 10;
    if (ioctl(speaker, SPKRTONE, &tone) != -1) return 1;
    logSystemError("speaker tone");
  }
#endif /* HAVE_MACHINE_SPEAKER_H */
  return 0;
}
Ejemplo n.º 5
0
void
SamplesTreeCtrl::onAddSample( char const *sampleName, char const *speakerName, smp::Sample *addedSample )
{
	SamplesTreeData *data = new SamplesTreeData( addedSample );

	wxTreeItemId speakerItem = getSpeaker( speakerName );

	if ( speakerItem.IsOk() )
		AppendItem( speakerItem, sampleName, -1, -1, data );
	else
	{
		speakerItem = AppendItem( GetRootItem(), speakerName );
		AppendItem( speakerItem, sampleName, -1, -1, data );
	}

	Expand( speakerItem );
}
Ejemplo n.º 6
0
void Dialog::updateBox() {
	GfxMan.lockFrame();

	_dlgBox->clear();

	// Entry


	const Aurora::DLGFile::Line *entry = _dlg->getCurrentEntry();
	if (entry) {
		// Name and portrait

		Object *speaker = getSpeaker();

		if (speaker) {
			_dlgBox->setPortrait(speaker->getPortrait());
			_dlgBox->setName(speaker->getName());
		} else
			_dlgBox->setName("[INVALID NPC]");

		// Text
		_dlgBox->setEntry(entry->text.getString());
	}

	// Replies

	const std::vector<const Aurora::DLGFile::Line *> &replies = _dlg->getCurrentReplies();
	if (!replies.empty()) {
		for (std::vector<const Aurora::DLGFile::Line *>::const_iterator r = replies.begin();
				 r != replies.end(); ++r) {

			Common::UString text = (*r)->text.getString();
			if (text.empty())
				text = TalkMan.getString((*r)->isEnd ? kEndDialog : kContinue);

			_dlgBox->addReply(text, (*r)->id);
		}
	} else
		_dlgBox->addReply(TalkMan.getString(kEndDialog), Aurora::DLGFile::kEndLine);

	_dlgBox->finishReplies();

	GfxMan.unlockFrame();
}