void showquestion() { const shared_ptr<QuestionBase> base = QuestionBase::Instance(); size_t rndq = base->GetRandomQuestionForRound(RoundOfGame); F->LabelQuestion->WordWrap = false; F->LabelQuestion->AutoSize = true; F->NumberOfQuestion = rndq; F->LabelQuestion->Caption = base->GetQuestion(F->NumberOfQuestion); int offset = (F->imgQuestion->Width - F->LabelQuestion->Width) / 2; F->LabelQuestion->Left = F->imgQuestion->Left + offset; if (F->LabelQuestion->Width == F->LabelQuestion->Constraints->MaxWidth) { F->LabelQuestion->WordWrap = true; F->LabelQuestion->AutoSize = false; F->LabelQuestion->Width = 573; F->LabelQuestion->AutoSize = true; } else { F->LabelQuestion->WordWrap = false; } offset = (F->imgQuestion->Width - F->LabelQuestion->Width) / 2; F->LabelQuestion->Left = F->imgQuestion->Left + offset; F->LabelQuestion->Visible = true; F->tmrWaiting->Enabled = true; PlaySFX(rr_question); // считать вопрос из файла; для начала заранее с помощью отдельной программы }
void Explosion::Update(float delta) { if (mFramesActive == 1) { PlaySFX(); Display(); Inflict(); } else if (mFramesActive == 2) { GameObjectManager::Instance()->RemoveGameObject(this, true); } ++mFramesActive; }
////////////////////////////////////////////////////////////////////////// // high level scripting interface ////////////////////////////////////////////////////////////////////////// HRESULT CBObject::ScCallMethod(CScScript* Script, CScStack *Stack, CScStack *ThisStack, char *Name) { ////////////////////////////////////////////////////////////////////////// // SkipTo ////////////////////////////////////////////////////////////////////////// if(strcmp(Name, "SkipTo")==0){ Stack->CorrectParams(2); m_PosX = Stack->Pop()->GetInt(); m_PosY = Stack->Pop()->GetInt(); AfterMove(); Stack->PushNULL(); return S_OK; } ////////////////////////////////////////////////////////////////////////// // Caption ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "Caption")==0){ Stack->CorrectParams(1); Stack->PushString(GetCaption(Stack->Pop()->GetInt())); return S_OK; } ////////////////////////////////////////////////////////////////////////// // SetCursor ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "SetCursor")==0){ Stack->CorrectParams(1); if(SUCCEEDED(SetCursor(Stack->Pop()->GetString()))) Stack->PushBool(true); else Stack->PushBool(false); return S_OK; } ////////////////////////////////////////////////////////////////////////// // RemoveCursor ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "RemoveCursor")==0){ Stack->CorrectParams(0); if(!m_SharedCursors) SAFE_DELETE(m_Cursor); else m_Cursor = NULL; Stack->PushNULL(); return S_OK; } ////////////////////////////////////////////////////////////////////////// // GetCursor ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "GetCursor")==0){ Stack->CorrectParams(0); if(!m_Cursor || !m_Cursor->m_Filename) Stack->PushNULL(); else Stack->PushString(m_Cursor->m_Filename); return S_OK; } ////////////////////////////////////////////////////////////////////////// // GetCursorObject ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "GetCursorObject")==0){ Stack->CorrectParams(0); if(!m_Cursor) Stack->PushNULL(); else Stack->PushNative(m_Cursor, true); return S_OK; } ////////////////////////////////////////////////////////////////////////// // HasCursor ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "HasCursor")==0){ Stack->CorrectParams(0); if(m_Cursor) Stack->PushBool(true); else Stack->PushBool(false); return S_OK; } ////////////////////////////////////////////////////////////////////////// // SetCaption ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "SetCaption")==0){ Stack->CorrectParams(2); SetCaption(Stack->Pop()->GetString(), Stack->Pop()->GetInt()); Stack->PushNULL(); return S_OK; } ////////////////////////////////////////////////////////////////////////// // LoadSound ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "LoadSound")==0){ Stack->CorrectParams(1); char* Filename = Stack->Pop()->GetString(); if(SUCCEEDED(PlaySFX(Filename, false, false))) Stack->PushBool(true); else Stack->PushBool(false); return S_OK; } ////////////////////////////////////////////////////////////////////////// // PlaySound ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "PlaySound")==0){ Stack->CorrectParams(3); char* Filename; bool Looping; DWORD LoopStart; CScValue* val1 = Stack->Pop(); CScValue* val2 = Stack->Pop(); CScValue* val3 = Stack->Pop(); if(val1->m_Type==VAL_BOOL){ Filename=NULL; Looping = val1->GetBool(); LoopStart = val2->GetInt(); } else{ if(val1->IsNULL()) Filename = NULL; else Filename = val1->GetString(); Looping = val2->IsNULL()?false:val2->GetBool(); LoopStart = val3->GetInt(); } if(FAILED(PlaySFX(Filename, Looping, true, NULL, LoopStart))) Stack->PushBool(false); else Stack->PushBool(true); return S_OK; } else if(strcmp(Name, "SetSoundPitch")==0){ Stack->CorrectParams(1); CScValue* val1 = Stack->Pop(); if (val1->IsNULL()) { Stack->PushBool(false); } else { float pitch = val1->GetFloat(); if(FAILED(SetSFXPitch(pitch))) Stack->PushBool(false); else Stack->PushBool(true); } return S_OK; } ////////////////////////////////////////////////////////////////////////// // PlaySoundEvent ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "PlaySoundEvent")==0){ Stack->CorrectParams(2); char* Filename; char* EventName; CScValue* val1 = Stack->Pop(); CScValue* val2 = Stack->Pop(); if(val2->IsNULL()){ Filename=NULL; EventName = val1->GetString(); } else{ Filename = val1->GetString(); EventName = val2->GetString(); } if(FAILED(PlaySFX(Filename, false, true, EventName))) Stack->PushBool(false); else Stack->PushBool(true); return S_OK; } ////////////////////////////////////////////////////////////////////////// // StopSound ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "StopSound")==0){ Stack->CorrectParams(0); if(FAILED(StopSFX())) Stack->PushBool(false); else Stack->PushBool(true); return S_OK; } ////////////////////////////////////////////////////////////////////////// // PauseSound ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "PauseSound")==0){ Stack->CorrectParams(0); if(FAILED(PauseSFX())) Stack->PushBool(false); else Stack->PushBool(true); return S_OK; } ////////////////////////////////////////////////////////////////////////// // ResumeSound ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "ResumeSound")==0){ Stack->CorrectParams(0); if(FAILED(ResumeSFX())) Stack->PushBool(false); else Stack->PushBool(true); return S_OK; } ////////////////////////////////////////////////////////////////////////// // IsSoundPlaying ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "IsSoundPlaying")==0){ Stack->CorrectParams(0); if(m_SFX && m_SFX->IsPlaying()) Stack->PushBool(true); else Stack->PushBool(false); return S_OK; } ////////////////////////////////////////////////////////////////////////// // SetSoundPosition ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "SetSoundPosition")==0){ Stack->CorrectParams(1); DWORD Time = Stack->Pop()->GetInt(); if(FAILED(SetSFXTime(Time))) Stack->PushBool(false); else Stack->PushBool(true); return S_OK; } ////////////////////////////////////////////////////////////////////////// // GetSoundPosition ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "GetSoundPosition")==0){ Stack->CorrectParams(0); if(!m_SFX) Stack->PushInt(0); else Stack->PushInt(m_SFX->GetPositionTime()); return S_OK; } ////////////////////////////////////////////////////////////////////////// // SetSoundVolume ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "SetSoundVolume")==0){ Stack->CorrectParams(1); int Volume = Stack->Pop()->GetInt(); if(FAILED(SetSFXVolume(Volume))) Stack->PushBool(false); else Stack->PushBool(true); return S_OK; } ////////////////////////////////////////////////////////////////////////// // GetSoundVolume ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "GetSoundVolume")==0){ Stack->CorrectParams(0); if(!m_SFX) Stack->PushInt(m_SFXVolume); else Stack->PushInt(m_SFX->GetVolume()); return S_OK; } ////////////////////////////////////////////////////////////////////////// // SoundFXNone ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "SoundFXNone")==0) { Stack->CorrectParams(0); m_SFXType = SFX_NONE; m_SFXParam1 = 0; m_SFXParam2 = 0; m_SFXParam3 = 0; m_SFXParam4 = 0; Stack->PushNULL(); return S_OK; } ////////////////////////////////////////////////////////////////////////// // SoundFXEcho ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "SoundFXEcho")==0) { Stack->CorrectParams(4); m_SFXType = SFX_ECHO; m_SFXParam1 = (float)Stack->Pop()->GetFloat(0); // Wet/Dry Mix [%] (0-100) m_SFXParam2 = (float)Stack->Pop()->GetFloat(0); // Feedback [%] (0-100) m_SFXParam3 = (float)Stack->Pop()->GetFloat(333.0f); // Left Delay [ms] (1-2000) m_SFXParam4 = (float)Stack->Pop()->GetFloat(333.0f); // Right Delay [ms] (1-2000) Stack->PushNULL(); return S_OK; } ////////////////////////////////////////////////////////////////////////// // SoundFXReverb ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "SoundFXReverb")==0) { Stack->CorrectParams(4); m_SFXType = SFX_REVERB; m_SFXParam1 = (float)Stack->Pop()->GetFloat(0); // In Gain [dB] (-96 - 0) m_SFXParam2 = (float)Stack->Pop()->GetFloat(0); // Reverb Mix [dB] (-96 - 0) m_SFXParam3 = (float)Stack->Pop()->GetFloat(1000.0f); // Reverb Time [ms] (0.001 - 3000) m_SFXParam4 = (float)Stack->Pop()->GetFloat(0.001f); // HighFreq RT Ratio (0.001 - 0.999) Stack->PushNULL(); return S_OK; } else return CBScriptHolder::ScCallMethod(Script, Stack, ThisStack, Name); }
void __cdecl CheckTriggers() { int *v0; // edi int v1; // esi int v2; // ecx int v3; // eax int v4; // edx signed int v5; // edx int v6; // eax char v7; // al int v8; // ecx int v9; // [esp-4h] [ebp-20h] int x; // [esp+Ch] [ebp-10h] int y; // [esp+10h] [ebp-Ch] int v12; // [esp+14h] [ebp-8h] int error_id; // [esp+1Bh] [ebp-1h] if ( plr[myplr]._pmode ) return; v12 = 0; if ( trigflag[4] <= 0 ) return; v0 = &trigs[0]._tmsg; while ( 1 ) { v1 = myplr; v2 = plr[myplr].WorldX; if ( v2 != *(v0 - 2) ) goto LABEL_34; v3 = plr[v1].WorldY; if ( v3 != *(v0 - 1) ) goto LABEL_34; v4 = *v0; if ( *v0 == WM_DIABNEXTLVL ) { if ( pcurs >= CURSOR_FIRSTITEM && DropItemBeforeTrig() ) return; v6 = currlevel + 1; goto LABEL_32; } if ( *v0 == 1027 ) { if ( pcurs >= CURSOR_FIRSTITEM && DropItemBeforeTrig() ) return; v6 = currlevel - 1; LABEL_32: v9 = v6; goto LABEL_33; } if ( *v0 != 1028 ) break; StartNewLvl(myplr, v4, ReturnLvl); LABEL_34: ++v12; v0 += 4; if ( v12 >= trigflag[4] ) return; } if ( *v0 != 1031 ) { if ( *v0 == 1032 ) { TWarpFrom = currlevel; StartNewLvl(myplr, v4, 0); } else { TermMsg("Unknown trigger msg"); } goto LABEL_34; } if ( gbMaxPlayers == 1 ) goto LABEL_46; v5 = 0; if ( v0[1] == 5 && plr[v1]._pLevel < 8 ) { v5 = 1; x = plr[myplr].WorldX; _LOBYTE(y) = v3 + 1; _LOBYTE(error_id) = 40; } if ( v0[1] == 9 && plr[v1]._pLevel < 13 ) { v5 = 1; _LOBYTE(x) = v2 + 1; y = plr[v1].WorldY; _LOBYTE(error_id) = 41; } if ( v0[1] == 13 && plr[v1]._pLevel < 17 ) { x = plr[myplr].WorldX; v5 = 1; _LOBYTE(y) = v3 + 1; _LOBYTE(error_id) = 42; } if ( !v5 ) { LABEL_46: v9 = v0[1]; LABEL_33: StartNewLvl(myplr, *v0, v9); goto LABEL_34; } v7 = plr[myplr]._pClass; switch ( v7 ) { case UI_WARRIOR: v8 = PS_WARR43; goto LABEL_42; case UI_ROGUE: v8 = PS_ROGUE43; goto LABEL_42; case UI_SORCERER: v8 = PS_MAGE43; LABEL_42: PlaySFX(v8); break; } _LOBYTE(v2) = error_id; InitDiabloMsg(v2); NetSendCmdLoc(1u, 1u, x, y); }
/* 2.2. Затем игрок должен дать ответ (обработка клавиши) */ void Proverka() { PlaySFX(F->answer == F->RandomPlace ? rr_true : rr_false); F->tmrWaiting->Enabled = true; }