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 ) ); } } }
void Dialog::stopAnimation() { Object *speaker = getSpeaker(); if (!speaker) return; speaker->playAnimation(); }
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); }
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; }
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 ); }
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(); }