Exemplo n.º 1
0
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);
    // считать вопрос из файла; для начала заранее с помощью отдельной программы
}
Exemplo n.º 2
0
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);
}
Exemplo n.º 4
0
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);
}
Exemplo n.º 5
0
/* 2.2. Затем игрок должен дать ответ (обработка клавиши) */
void Proverka() {
    PlaySFX(F->answer == F->RandomPlace ? rr_true : rr_false);
    F->tmrWaiting->Enabled = true;
}