Example #1
0
void Game::intro() {
	
	Mix_Chunk *s_expl = loadSound(S_FLASH1);
	
	SDL_Surface *fade_white = graphics->copySurface(screen, false);
	SDL_FillRect(fade_white, NULL, 0x00FFFFFF);
	
	float m = -479.0/160.0;
	int vx = 20;
	
	int x1 = (int) (SCREEN_HEIGHT/m);
	int y1 = SCREEN_HEIGHT;
	int x2 = (int) (-SCREEN_HEIGHT/m);
	int y2 = -SCREEN_HEIGHT;
	
	bool exit = false;
	bool flash = true;
	bool flash_sound = true;
	
	playSound(balls[0]->data->s_start);
	
	while(!exit) {
		
		control->updateState();
		if (control->isPressed(KEY_BACK) || control->isPressed(KEY_OK))
			exit = true;
		
		SDL_FillRect(screen, NULL, 0x00000000);
		graphics->apply_surface(x1, y1, players[0]->title, screen);
		graphics->apply_surface(x2, y2, players[1]->title, screen);
		
		if (x1 != x2) {
			
			x1 += vx;
			x2 -= vx;
			y1 = (int) roundf(m*x1);
			y2 = (int) roundf(m*x2);
			
		} else {
			
			if (flash) {
				
				if (flash_sound) {
					playSound(s_expl);
					flash_sound = false;
				}
				
				graphics->apply_surface(0, 0, fade_white, screen);
				SDL_SetAlpha(fade_white, SDL_SRCALPHA, fade_white->format->alpha-5);
				flash = (fade_white->format->alpha > 0);
				
			}
			
			if (!Mix_Playing(-1))
				exit = true;
			
		}
		
		
		framerate->tic();
		graphics->refresh_whole_screen();
		framerate->delay();
		
	}
	
	Mix_FadeOutChannel(-1, 500);
	
}
Example #2
0
void AudioEngine::playCollisionSound(Vehicle * source)
{
	glm::vec3 pos = source->getPosition();

	playSound(crashSound, pos, source);
}
MeleeAttackClientSkillEffect::MeleeAttackClientSkillEffect(unsigned int _masterId, unsigned int _targetId, PLAYER_INFO _playerInfo, float _animationSpeed)
{
	this->m_lifetime = 1.0f;
	Entity* master = ClientEntityHandler::getEntity(_masterId);
	if(master)
	{
		Entity* target = ClientEntityHandler::getEntity(_targetId);
		if(target)
		{
			master->m_model->getAnimation()->PlayLoop("attack", -1, _animationSpeed);

			if(master->m_type == ServerEntity::HeroType)
			{
				// Play impact sound
				int impactSound;
				switch(random(0, 2))
				{
				case 0:
					impactSound = createSoundHandle("attacks/meleeAttack_0.wav", false, true, target->m_model->getPosition());
					break;
				case 1:
					impactSound = createSoundHandle("attacks/meleeAttack_1.wav", false, true, target->m_model->getPosition());
					break;
				case 2:
					impactSound = createSoundHandle("attacks/meleeAttack_2.wav", false, true, target->m_model->getPosition());
					break;
				}

				playSound(impactSound);
				deactivateSound(impactSound);
			}

			// Play damage sound.
			int sound;
			switch(target->m_type)
			{
			case ServerEntity::HeroType:
				switch(_playerInfo.heroType)
				{
				case Hero::RED_KNIGHT:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("red_knight/RedKnight_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("red_knight/RedKnight_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("red_knight/RedKnight_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				case Hero::ENGINEER:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("engineer/Engineer_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("engineer/Engineer_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("engineer/Engineer_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				case Hero::THE_MENTALIST:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("mentalist/Mentalist_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("mentalist/Mentalist_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("mentalist/Mentalist_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				case Hero::OFFICER:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("officer/Officer_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("officer/Officer_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("officer/Officer_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				case Hero::DOCTOR:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("doctor/Doctor_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("doctor/Doctor_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("doctor/Doctor_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				}
				break;

			case ServerEntity::EnemyType:
				switch(target->m_subtype)
				{
				case Enemy::IMP:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Monster_Imp_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("enemy/Monster_Imp_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("enemy/Monster_Imp_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				case Enemy::SHADE:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Monster_Shade_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("enemy/Monster_Shade_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("enemy/Monster_Shade_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				case Enemy::FROST_DEMON:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Monster_Frost_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("enemy/Monster_Frost_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("enemy/Monster_Frost_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				case Enemy::SPITTING_DEMON:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Monster_Spitting_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("enemy/Monster_Spitting_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("enemy/Monster_Spitting_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				case Enemy::HELLFIRE_STEED:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Beast_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("enemy/Beast_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("enemy/Beast_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				case Enemy::SOUL_EATER_STEED:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Beast_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("enemy/Beast_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("enemy/Beast_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				case Enemy::THUNDERSTEED:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Beast_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("enemy/Beast_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("enemy/Beast_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				case Enemy::BRUTE_STEED:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Beast_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("enemy/Beast_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("enemy/Beast_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				case Enemy::BOSS:
					switch(random(0, 2))
					{
					case 0:
						sound = createSoundHandle("enemy/Beast_Damage_0.wav", false, true, target->m_model->getPosition());
						break;
					case 1:
						sound = createSoundHandle("enemy/Beast_Damage_1.wav", false, true, target->m_model->getPosition());
						break;
					case 2:
						sound = createSoundHandle("enemy/Beast_Damage_2.wav", false, true, target->m_model->getPosition());
						break;
					}
					break;
				}
				break;
			}

			SpeechManager::speak(_targetId, sound);
			deactivateSound(sound);
		}
	}
}
bool CHammerDispensorButton::MouseButtonUpMsg(CMouseButtonUpMsg *msg) {
	playSound("z#93.wav");
	petDisplayMessage(1, POKE_WITH_LONG_STICK);
	return true;
}
Example #5
0
void AudioEngine::playReloadSound(Vehicle * source)
{
	glm::vec3 pos = source->getPosition();

	playSound(reloadSound, pos, source);
}
void PonscripterLabel::flushEventSub(SDL_Event &event)
{
    if (event.type == ONS_SOUND_EVENT) {
        if (music_play_loop_flag) {
            stopBGM(true);
            if (music_file_name)
                playSound(music_file_name, SOUND_OGG_STREAMING | SOUND_MP3, true);
        }
        else {
            stopBGM(false);
        }
    }
// The event handler for the mp3 fadeout event itself.  Simply sets the volume of the mp3 being played lower and lower until it's 0,
// and until the requisite mp3 fadeout time has passed.  Recommend for integration.  [Seung Park, 20060621]
    else if (event.type == ONS_FADE_EVENT) {
        if (skip_flag || draw_one_page_flag ||
            ctrl_pressed_status || skip_to_wait)
        {
            mp3fadeout_duration = 0;
            if (mp3_sample) SMPEG_setvolume(mp3_sample, 0);
        }

        Uint32 tmp = SDL_GetTicks() - mp3fadeout_start;
        if (tmp < mp3fadeout_duration) {
            tmp  = mp3fadeout_duration - tmp;
            tmp *= music_volume;
            tmp /= mp3fadeout_duration;

            if (mp3_sample) SMPEG_setvolume(mp3_sample, tmp);
        }
        else {
            SDL_RemoveTimer(timer_mp3fadeout_id);
            timer_mp3fadeout_id = 0;

            event_mode &= ~WAIT_TIMER_MODE;
            stopBGM(false);
            advancePhase();
        }
    }
    else if (event.type == ONS_MIDI_EVENT) {
#ifdef MACOSX
        if (!Mix_PlayingMusic()) {
            ext_music_play_once_flag = !midi_play_loop_flag;
            Mix_FreeMusic(midi_info);
            playMIDI(midi_play_loop_flag);
        }

#else
        ext_music_play_once_flag = !midi_play_loop_flag;
        Mix_FreeMusic(midi_info);
        playMIDI(midi_play_loop_flag);
#endif
    }
    else if (event.type == ONS_MUSIC_EVENT) {
        ext_music_play_once_flag = !music_play_loop_flag;
        Mix_FreeMusic(music_info);
        playExternalMusic(music_play_loop_flag);
    }
    else if (event.type == ONS_WAVE_EVENT) { // for processing btntim2 and automode correctly
        if (wave_sample[event.user.code]) {
            Mix_FreeChunk(wave_sample[event.user.code]);
            wave_sample[event.user.code] = NULL;
            if (event.user.code == MIX_LOOPBGM_CHANNEL0
                && loop_bgm_name[1]
                && wave_sample[MIX_LOOPBGM_CHANNEL1])
                Mix_PlayChannel(MIX_LOOPBGM_CHANNEL1,
                    wave_sample[MIX_LOOPBGM_CHANNEL1], -1);
        }
    }
}
Example #7
0
bool CFanControl::StatusChangeMsg(CStatusChangeMsg *msg) {
	if (!_fieldCC) {
		playSound("z#42.wav");
		if (_enabled) {
			switch (msg->_newStatus) {
			case 1:
				_fieldC8 = !_fieldC8;
				if (_fieldC8) {
					playMovie(6, 8, 0);
					_state = 0;
				} else {
					switch (_state) {
					case 0:
						playMovie(4, 6, 0);
						_state = -1;
						break;
					case 1:
						playMovie(0, 6, 0);
						break;
					case 2:
						playMovie(18, 24, 0);
						playMovie(0, 6, 0);
						break;
					default:
						break;
					}

					_state = -1;
				}
				break;

			case 2:
				if (_fieldC8) {
					_state = (_state + 1) % 4;
					switch (_state) {
					case 0:
						playMovie(18, 24, 0);
						playMovie(0, 4, 0);
						break;
					case 1:
						playMovie(8, 12, 0);
						break;
					case 2:
						if (_fieldC4) {
							inc54();
							_fieldCC = 1;
							playMovie(12, 18, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
						} else {
							playMovie(12, 18, 0);
						}
						break;
					default:
						break;
					}
				}
				break;
			
			default:
				break;
			}

			CStatusChangeMsg statusMsg;
			statusMsg._newStatus = _state;
			statusMsg.execute("RightFan");
		} else {
			petDisplayMessage(1, FAN_HAS_BLOWN_A_FUSE);
		}
	}

	return true;
}
Example #8
0
void KotOR2Engine::playMenuMusic() {
	if (SoundMan.isPlaying(_menuMusic))
		return;

	_menuMusic = playSound("mus_sion", Sound::kSoundTypeMusic, true);
}
Example #9
0
int main( int argc, char *argv[] ) {
  char *path;
  list *l;
#ifdef SOUND
  int c;
#endif

#ifdef __FreeBSD__
  fpsetmask(0);
#endif

#ifdef macintosh
    setupHomeEnvironment ();
#endif

  SystemInit(&argc, argv);

#ifndef CURRENT_EQ_DATA_DIR
  goto_installpath(argv[0]);
#endif

  /* initialize artpack list before loading settigns! */
  initArtpacks();

  path = getFullPath("settings.txt");
  if(path != NULL)
    initMainGameSettings(path); /* reads defaults from ~/.gltronrc */
  else {
    printf("fatal: could not settings.txt, exiting...\n");
    exit(1);
  }

  parse_args(argc, argv);

  consoleInit();
  initGameStructures();
  resetScores();

  /* sound */
  path = getMusicPath(MUSIC_DIR);
  game->settings->soundList = 
    readDirectoryContents(path, SONG_PREFIX);
  
  game->settings->soundIndex = -1;

  l = game->settings->soundList;

#ifdef SOUND
  printf("initializing sound\n");
  initSound();
  setFxVolume(game->settings->fxVolume);

  if(l->next != NULL) {
    char *tmp;
    tmp = malloc(strlen(path) + 1 + /* seperator */
		 strlen((char*) l->data) + 1);
    sprintf(tmp, "%s%c%s", path, SEPERATOR, 
	    (char*) l->data);
    fprintf(stderr, "loading song %s\n", tmp);
    loadSound(tmp);
    free(tmp);
    game->settings->soundIndex = 0;
  }

  c = 0;
  while(l->next != NULL) {
    l = l->next;
    c++;
  }
  game->settings->soundSongCount = c;

  if(game->settings->playMusic)
    playSound();
  fprintf(stderr, "setting music volume to %.3f\n",
	  game->settings->musicVolume);
  setMusicVolume(game->settings->musicVolume);
  free(path);
#endif

  printf("loading menu\n");
  path = getFullPath("menu.txt");
  if(path != NULL)
    pMenuList = loadMenuFile(path);
  else {
    printf("fatal: could not load menu.txt, exiting...\n");
    exit(1);
  }
  printf("menu loaded\n");
  free(path);

  setupDisplay(game->screen);
  switchCallbacks(&guiCallbacks);
  switchCallbacks(&guiCallbacks);

  SystemMainLoop();

  return 0;
}
Example #10
0
void InterlinearLineLabel::mouseDoubleClickEvent ( QMouseEvent * event )
{
    Q_UNUSED(event);
    playSound();
}
Example #11
0
void AsScene2101Door::stOpenDoor() {
	startAnimation(0x0C202B9C, 0, -1);
	_newStickFrameIndex = STICK_LAST_FRAME;
	setVisible(true);
	playSound(0, calcHash("fxDoorOpen32"));
}
Example #12
0
void sellItemToShop(Item* item)
{
	if ( !item )
	{
		return;
	}
	if ( item->beatitude < 0 && itemIsEquipped(item, clientnum) )
	{
		messagePlayer(clientnum, language[1124], item->getName());
		playSound(90, 64);
		return;
	}

	bool deal = true;
	if ( stats[clientnum]->PROFICIENCIES[PRO_TRADING] >= CAPSTONE_UNLOCK_LEVEL[PRO_TRADING] )
	{
		//Skill capstone: Can sell anything to any shop.
	}
	else
	{
		switch ( shopkeepertype )
		{
			case 0: // arms & armor
				if ( itemCategory(item) != WEAPON && itemCategory(item) != ARMOR && itemCategory(item) != THROWN )
				{
					deal = false;
				}
				break;
			case 1: // hats
				if ( itemCategory(item) != ARMOR )
				{
					deal = false;
				}
				break;
			case 2: // jewelry
				if ( itemCategory(item) != RING && itemCategory(item) != AMULET && itemCategory(item) != GEM )
				{
					deal = false;
				}
				break;
			case 3: // bookstore
				if ( itemCategory(item) != SPELLBOOK && itemCategory(item) != SCROLL && itemCategory(item) != BOOK )
				{
					deal = false;
				}
				break;
			case 4: // potion shop
				if ( itemCategory(item) != POTION )
				{
					deal = false;
				}
				break;
			case 5: // magicstaffs
				if ( itemCategory(item) != MAGICSTAFF )
				{
					deal = false;
				}
				break;
			case 6: // food
				if ( itemCategory(item) != FOOD )
				{
					deal = false;
				}
				break;
			case 7: // tools
			case 8: // lights
				if ( itemCategory(item) != TOOL && itemCategory(item) != THROWN )
				{
					deal = false;
				}
				break;
			default:
				break;
		}
	}
	if ( !deal )
	{
		shopspeech = language[212 + rand() % 3];
		shoptimer = ticks - 1;
		playSound(90, 64);
		return;
	}

	if ( items[item->type].value * .75 <= item->sellValue(clientnum) )
	{
		shopspeech = language[209 + rand() % 3];
	}
	else
	{
		shopspeech = language[206 + rand() % 3];
	}
	shoptimer = ticks - 1;
	newItem(item->type, item->status, item->beatitude, 1, item->appearance, item->identified, shopInv);
	stats[clientnum]->GOLD += item->sellValue(clientnum);
	playSound(89, 64);
	int ocount = item->count;
	item->count = 1;
	messagePlayer(clientnum, language[1125], item->description(), item->sellValue(clientnum));
	item->count = ocount;
	if ( multiplayer != CLIENT )
	{
		if ( rand() % 2 )
		{
			if ( item->sellValue(clientnum) <= 1 )
			{
				// selling cheap items does not increase trading past basic
				if ( stats[clientnum]->PROFICIENCIES[PRO_TRADING] < SKILL_LEVEL_SKILLED )
				{
					players[clientnum]->entity->increaseSkill(PRO_TRADING);
				}
			}
			else
			{
				players[clientnum]->entity->increaseSkill(PRO_TRADING);
			}
		}
	}
	else
	{
		strcpy((char*)net_packet->data, "SHPS");
		SDLNet_Write32(shopkeeper, &net_packet->data[4]);

		// send item that was sold to server
		SDLNet_Write32(item->type, &net_packet->data[8]);
		SDLNet_Write32(item->status, &net_packet->data[12]);
		SDLNet_Write32(item->beatitude, &net_packet->data[16]);
		SDLNet_Write32((Uint32)item->appearance, &net_packet->data[20]);
		if ( item->identified )
		{
			net_packet->data[24] = 1;
		}
		else
		{
			net_packet->data[24] = 0;
		}
		net_packet->data[25] = clientnum;
		net_packet->address.host = net_server.host;
		net_packet->address.port = net_server.port;
		net_packet->len = 26;
		sendPacketSafe(net_sock, -1, net_packet, 0);
	}
	consumeItem(item);
	sellitem = NULL;
}
Example #13
0
void buyItemFromShop(Item* item)
{
	if ( !item )
	{
		return;
	}

	if ( stats[clientnum]->GOLD >= item->buyValue(clientnum) )
	{
		if ( items[item->type].value * 1.5 >= item->buyValue(clientnum) )
		{
			shopspeech = language[200 + rand() % 3];
		}
		else
		{
			shopspeech = language[197 + rand() % 3];
		}
		shoptimer = ticks - 1;
		Item* itemToPickup = newItem(item->type, item->status, item->beatitude, 1, item->appearance, item->identified, nullptr);
		itemPickup(clientnum, itemToPickup);

		stats[clientnum]->GOLD -= item->buyValue(clientnum);
		playSound(89, 64);
		int ocount = item->count;
		item->count = 1;
		messagePlayer(clientnum, language[1123], item->description(), item->buyValue(clientnum));
		item->count = ocount;
		if ( multiplayer != CLIENT )
		{
			Entity* entity = uidToEntity(shopkeeper);
			if (entity)
			{
				Stat* shopstats = entity->getStats();
				shopstats->GOLD += item->buyValue(clientnum);
			}
			if ( rand() % 2 )
			{
				if ( item->buyValue(clientnum) <= 1 )
				{
					// buying cheap items does not increase trading past basic
					if ( stats[clientnum]->PROFICIENCIES[PRO_TRADING] < SKILL_LEVEL_SKILLED )
					{
						players[clientnum]->entity->increaseSkill(PRO_TRADING);
					}
				}
				else
				{
					players[clientnum]->entity->increaseSkill(PRO_TRADING);
				}
			}
			else if ( item->buyValue(clientnum) >= 150 )
			{
				if ( item->buyValue(clientnum) >= 300 || rand() % 2 )
				{
					players[clientnum]->entity->increaseSkill(PRO_TRADING);
				}
			}
		}
		else
		{
			strcpy((char*)net_packet->data, "SHPB");
			SDLNet_Write32(shopkeeper, &net_packet->data[4]);

			// send item that was bought to server
			SDLNet_Write32(item->type, &net_packet->data[8]);
			SDLNet_Write32(item->status, &net_packet->data[12]);
			SDLNet_Write32(item->beatitude, &net_packet->data[16]);
			SDLNet_Write32((Uint32)item->appearance, &net_packet->data[20]);
			if ( item->identified )
			{
				net_packet->data[24] = 1;
			}
			else
			{
				net_packet->data[24] = 0;
			}
			net_packet->data[25] = clientnum;
			net_packet->address.host = net_server.host;
			net_packet->address.port = net_server.port;
			net_packet->len = 26;
			sendPacketSafe(net_sock, -1, net_packet, 0);
		}
		consumeItem(item);
	}
	else
	{
		shopspeech = language[203 + rand() % 3];
		shoptimer = ticks - 1;
		playSound(90, 64);
	}
}
Example #14
0
void Game::round_title() {
	
	SDL_Surface *s_txt, *s_txt2, *s_txt2_resize;
	char round_no[2];
	
	if ((round == rounds) && (rounds%2 != 0)) {
		
		s_txt = graphics->renderTextTTF("FINAL", &ttf_starcraft, 3, &color_red);
		s_txt2 = graphics->renderTextTTF("ROUND", &ttf_starcraft, 3, &color_red);
		
	} else {
		
		s_txt = graphics->renderTextTTF("ROUND", &ttf_starcraft, 3, &color_red);
		sprintf(round_no, "%d", round);
		s_txt2 = graphics->renderTextTTF(round_no, &ttf_starcraft, 3, &color_red);
		
	}
	
	double zoom_factor = 1.1;
	int max_resize = s_txt2->w * 3;
	int txt_x = SCREEN_WIDTH*2;
	int txt_vx = SCREEN_WIDTH/32; // 20 pixels
	
	if (round == 1);
		playSound(balls[0]->data->s_ready);
	
	bool exit = false;
	
	while ((txt_x - s_txt->w/2) > SCREEN_WIDTH + 32) { txt_x -= txt_vx; }
	
	while (!exit) {
		
		control->updateState();
		
		if (control->isPressed(KEY_BACK) || control->isPressed(KEY_OK))
			exit = true;
			
		else {
			
			graphics->apply_surface(0, 0, background, screen);
			draw_player_stats();
			
			players[0]->show();
			players[1]->show();
			draw_player_stats();
			
			
			txt_x -= txt_vx;
			graphics->apply_surface(txt_x, (SCREEN_HEIGHT)/2, s_txt, screen, NULL, (H_CENTER|V_CENTER));
			
			if ((txt_x < (SCREEN_WIDTH/2))) {
				
				graphics->apply_surface(SCREEN_WIDTH/2, SCREEN_HEIGHT/2, s_txt2, screen, NULL, (H_CENTER|V_CENTER));
				
				if (s_txt2->w < max_resize) {
					s_txt2_resize = zoomSurface(s_txt2, zoom_factor, zoom_factor, SMOOTHING_OFF);
					SDL_FreeSurface(s_txt2);
					s_txt2 = s_txt2_resize;
				}
				
			}
			
			if ((txt_x + s_txt->w/2) <= 0)
				exit = true;
			
		}
		
		framerate->tic();
		graphics->refresh_whole_screen();
		framerate->delay();
		
	}
	
	Mix_FadeOutChannel(-1, 500);
	SDL_FreeSurface(s_txt);
	SDL_FreeSurface(s_txt2);
	
}
Example #15
0
bool CBarbot::MovieEndMsg(CMovieEndMsg *msg) {
	if (msg->_endFrame == _frameNum) {
		_frameNum = -1;
		_field14C = getTicksCount();
	}

	if (msg->_endFrame == _field148) {
		_field148 = -1;
		_field150 = getTicksCount();
	}

	if (msg->_endFrame == _field13C) {
		if (_field124)
			playMovie(_frames[53]._startFrame, _frames[53]._startFrame, 0);
		else if (_visCenterOnCounter)
			playMovie(_frames[27]._endFrame, _frames[27]._endFrame, 0);

		_field13C = -1;
		return true;
	}

	if (msg->_endFrame == _frames[58]._endFrame || msg->_endFrame == _frames[21]._endFrame) {
		CVisibleMsg visibleMsg(true);
		visibleMsg.execute("BarShelfVisCentre");
	}

	if (msg->_endFrame == _frames[57]._endFrame) {
		startTalking(this, 250575);
		playSound("c#10.wav", _volume);
		return true;
	}

	if (msg->_endFrame == _frames[55]._endFrame) {
		playSound("c#10.wav", _volume);
		return true;
	}

	if (msg->_endFrame == _frames[56]._endFrame
			|| msg->_endFrame == _frames[54]._endFrame) {
		CStatusChangeMsg statusMsg;
		statusMsg._newStatus = 1;
		statusMsg.execute("PickUpGlass");
		CMoveToStartPosMsg moveMsg;
		moveMsg.execute("BeerGlass");
		return true;
	}

	if (msg->_endFrame == _frames[30]._endFrame) {
		_field124 = 0;
		CStatusChangeMsg statusMsg;
		statusMsg._newStatus = 0;
		statusMsg.execute("PickUpGlass");
	}

	if (msg->_endFrame == _frames[45]._endFrame) {
		if (!_gottenDrunk) {
			CVisibleMsg visibleMsg(false);
			visibleMsg.execute("BarShelfVisCentre");
		}

		return true;
	}

	if (msg->_endFrame == _frames[44]._endFrame) {
		_visCenterOnCounter = true;
		_gottenDrunk = true;
		startTalking(this, 250586);
		CStatusChangeMsg statusMsg;
		statusMsg._newStatus = 1;
		statusMsg.execute("PickUpVisCentre");
		CPuzzleSolvedMsg solvedMsg;
		solvedMsg.execute("VisionCentre");
	}

	if (msg->_endFrame == _frames[46]._endFrame) {
		if (!_gottenDrunk && !areIngredientsMissing())
			startTalking(this, 250571);
		return true;
	}

	if (msg->_endFrame == _frames[43]._endFrame
			|| msg->_endFrame == _frames[42]._endFrame
			|| msg->_endFrame == _frames[41]._endFrame) {
		if (_field124)
			playMovie(_frames[53]._startFrame, _frames[53]._startFrame, 0);
		return true;
	}

	if (msg->_endFrame == _frames[38]._endFrame || msg->_endFrame == _frames[23]._endFrame) {
		playSound("c#3.wav", _volume);
	} else if (msg->_endFrame == _frames[36]._endFrame) {
		playSound("c#6.wav", _volume);
	} else if (msg->_endFrame == _frames[35]._endFrame) {
		playSound("c#8.wav", _volume);
	} else if (msg->_endFrame == _frames[33]._endFrame) {
		playSound("c#4.wav", _volume);
	} else if (msg->_endFrame == _frames[32]._endFrame) {
		startTalking(this, 145);
		playSound("c#9.wav", _volume);
	} else if (msg->_endFrame == _frames[47]._endFrame) {
		playSound("c#9.wav", _volume);
		_addedVodka = true;
		_drunkFlag = true;
	} else if (msg->_endFrame == _frames[30]._endFrame) {
		playSound("c#4.wav", 60);
	} else if (msg->_endFrame == _frames[29]._endFrame) {
		if (!_fieldC4) {
			performAction(true, nullptr);
			setVisible(false);
			CActMsg actMsg("ResetCount");
			actMsg.execute("BarBell");
		}
	} else if (msg->_endFrame == _frames[27]._endFrame) {
		CStatusChangeMsg statusMsg;
		statusMsg._newStatus = 1;
		statusMsg.execute("PickUpVisCentre");
		_visCenterOnCounter = true;
		_field134 = 0;
		startTalking(this, 250586);
	}

	return true;
}
Example #16
0
void CFoob::process()
{
	if (state==FOOB_DEAD) return;

	if (!hasbeenonscreen) return;

	if ( (mHealthPoints <=0 && state != FOOB_EXPLODE) || touchPlayer)
	{
		if (state != FOOB_EXPLODE)
		{
			animframe = 0;
			animtimer = 0;
			state = FOOB_EXPLODE;
			playSound(SOUND_YORP_DIE);
		}
	}

	switch(state)
	{
	case FOOB_WALK:
		// if player is on the same level for FOOB_SPOOK_TIME, run away
		if (onsamelevel)
		{
			if (OnSameLevelTime > FOOB_SPOOK_TIME)
			{
				state = FOOB_SPOOK;
				spooktimer = 0;
				if (onscreen)
					playSound(SOUND_YORP_DIE);
			}
			else OnSameLevelTime++;
		}
		else OnSameLevelTime = 0;

		if (dir == RIGHT)
		{  // walking right
			sprite = FOOB_WALK_RIGHT_FRAME + animframe;
			if (blockedr)
			{
				dir = LEFT;
			}
			else
			{
				xinertia = FOOB_WALK_SPEED;
			}
		}
		else
		{  // walking left
			sprite = FOOB_WALK_LEFT_FRAME + animframe;
			if (blockedl)
			{
				dir = RIGHT;
			}
			else
			{
				xinertia = -FOOB_WALK_SPEED;
			}
		}

		// walk animation
		if (animtimer > FOOB_WALK_ANIM_RATE)
		{
			animframe ^= 1;
			animtimer = 0;
		}
		else animtimer++;
		break;

	case FOOB_SPOOK:
		break;

	case FOOB_FLEE:
		// if player is off of the same level for FOOB_RELAX_TIME,
		// we can stop fleeing
		if (!onsamelevel)
		{
			if (OffOfSameLevelTime > FOOB_RELAX_TIME)
			{
				relax: ;
				state = FOOB_WALK;
				OnSameLevelTime = 0;
				break;
			}
			else OffOfSameLevelTime++;
		}
		else OffOfSameLevelTime = 0;

		if (dir == RIGHT)
		{  // walking right
			sprite = FOOB_WALK_RIGHT_FRAME + animframe;
			if (!blockedr)
			{
				xinertia = FOOB_FLEE_SPEED;
				blockedtime = 0;
			}
			else if(g_pBehaviorEngine->mDifficulty==HARD)
			{
				if (++blockedtime >= FOOB_HARDMODE_BLOCK_TIME)
				{
					blockedtime = 0;
					goto relax;
				}
			}
		}
		else
		{  // walking left
			sprite = FOOB_WALK_LEFT_FRAME + animframe;
			if (!blockedl)
			{
				xinertia = -FOOB_FLEE_SPEED;
				blockedtime = 0;
			}
			else if(g_pBehaviorEngine->mDifficulty==HARD)
			{
				if (++blockedtime >= FOOB_HARDMODE_BLOCK_TIME)
				{
					blockedtime = 0;
					goto relax;
				}
			}
		}

		// walk animation
		if (animtimer > FOOB_FLEE_ANIM_RATE)
		{
			animframe ^= 1;
			animtimer = 0;
		}
		else animtimer++;
		break;

	case FOOB_EXPLODE:
		// ahhhhh; I'm sorry.....you poor little thing......
		sprite = FOOB_EXPLODE_FRAME + animframe;
		if (sprite==FOOB_DEAD_FRAME)
		{
			state = FOOB_DEAD;
			dead = 1;
		}
		else
		{
			if (animtimer > FOOB_EXPLODE_ANIM_RATE)
			{
				animframe++;
				animtimer = 0;
			}
			else animtimer++;
		}
		break;
	case FOOB_DEAD: break;
	}
}
Example #17
0
	void playSoundAiff(uint8_t channel, const uint8_t *data, uint8_t volume) {
		const uint32_t size = READ_BE_UINT32(data + 4) + 8;
		SDL_RWops *rw = SDL_RWFromConstMem(data, size);
		Mix_Chunk *chunk = Mix_LoadWAV_RW(rw, 1);
		playSound(channel, volume, chunk);
	}
Example #18
0
int MainMenu::main () {

	Scene *scene;
	Plasma plasma;
	SetupMenu setupMenu;
	SDL_Rect src, dst;
	int option;
	unsigned int idleTime;

	option = 0;

	video.setPalette(palette);

	playMusic("menusng.psm");

	// Demo timeout
	idleTime = globalTicks + T_DEMO;

	while (true) {

		if (loop(NORMAL_LOOP) == E_QUIT) return E_QUIT;

		if (controls.release(C_ESCAPE)) option = 5;

		if (controls.release(C_UP)) option = (option + 5) % 6;

		if (controls.release(C_DOWN)) option = (option + 1) % 6;

		if (controls.release(C_ENTER)) {

			playSound(S_ORB);

			switch (option) {

				case 0: // New game

					if (gameMenu->newGame() == E_QUIT) return E_QUIT;

					break;

				case 1: // Load game

					if (gameMenu->loadGame() == E_QUIT) return E_QUIT;

					break;

				case 2: // Instructions

					try {

						scene = new Scene(F_INSTRUCT_0SC);

					} catch (int e) {

						message("COULD NOT LOAD INSTRUCTIONS");

						break;

					}

					if (scene->play() == E_QUIT) {

						delete scene;

						return E_QUIT;

					}

					delete scene;

					break;

				case 3: // Setup options

					if (setupMenu.setup() == E_QUIT) return E_QUIT;

					break;

				case 4: // Order info

					try {

						scene = new Scene(F_ORDER_0SC);

					} catch (int e) {

						message("COULD NOT LOAD ORDER INFO");

						break;

					}

					if (scene->play() == E_QUIT) {

						delete scene;

						return E_QUIT;

					}

					delete scene;

					break;

				case 5: // Exit

					return E_NONE;

			}

			// Restore the main menu palette
			video.setPalette(palette);

			// New demo timeout
			idleTime = globalTicks + T_DEMO;

		}


		if (idleTime <= globalTicks) {

			game = NULL;


			// Create the player
			nPlayers = 1;
			localPlayer = players = new Player[1];
			localPlayer->init(characterName, NULL, 0);


			// Load the macro

			try {

				baseLevel = level = new DemoLevel(F_MACRO);

			} catch (int e) {

				delete[] players;
				localPlayer = NULL;

				break;

			}

			// Play the level
			if (level->play() == E_QUIT) {

				delete level;
				delete[] players;

				return E_QUIT;

			}

			delete level;
			baseLevel = level = NULL;

			delete[] players;
			localPlayer = NULL;

			playMusic("menusng.psm");

			// Restore the main menu palette
			video.setPalette(palette);

			idleTime = globalTicks + T_DEMO;

		}

		SDL_Delay(T_FRAME);


		//as long as we're drawing plasma, we don't need to clear the screen.
		//video.clearScreen(28);

		plasma.draw();


		dst.x = (canvasW >> 2) - 72;
		dst.y = canvasH - (canvasH >> 2);
		SDL_BlitSurface(logo, NULL, canvas, &dst);

		dst.x = (canvasW - SW) >> 1;
		dst.y = (canvasH - SH) >> 1;
		SDL_BlitSurface(background, NULL, canvas, &dst);

		switch (option) {

			case 0:

				src.x = 92;
				src.y = 35;
				src.w = 136;
				src.h = 22;

				break;

			case 1:

				src.x = 92;
				src.y = 57;
				src.w = 140;
				src.h = 22;

				break;

			case 2:

				src.x = 88;
				src.y = 83;
				src.w = 144;
				src.h = 22;

				break;

			case 3:

				src.x = 86;
				src.y = 109;
				src.w = 150;
				src.h = 23;

				break;

			case 4:

				src.x = 82;
				src.y = 137;
				src.w = 156;
				src.h = 26;

				break;

			case 5:

				src.x = 78;
				src.y = 166;
				src.w = 166;
				src.h = 29;

				break;

		}

		dst.x = ((canvasW - SW) >> 1) + src.x;
		dst.y = ((canvasH - SH) >> 1) + src.y;
		SDL_BlitSurface(highlight, &src, canvas, &dst);

	}

	return E_NONE;

}
Example #19
0
bool Page4::init(){
    
    if (!Layer::init()) {
        return false;
    }
    
    
    auto tools = Tools::create();
    
    auto winSize = Director::getInstance()->getWinSize();
    
    tools->addTouchEff(this);
    tools->addBackGround(this);
    tools->addTitleFrame(this);
    
    
    auto titleLabel = tools->blueLabel("こむぎことふくらしこをふるって入れよう", 28,true);
    
    auto titleButton = MenuItemLabel::create(titleLabel,
                                             [&](Ref* ref){
                                                 
                                                 auto label = static_cast<MenuItemLabel*>(ref);
                                                 label->setString("Sift the flour and baking powder");
                                                 label->setScale(1.3);
                                                 
                                                 tools->playSound(Tools::sound::P4);
                                             });
    
    auto titleLabelMenu = Menu::create(titleButton,NULL);
    titleLabelMenu->setPosition(Vec2(winSize.width / 2.0, winSize.height / 1.1));
    this->addChild(titleLabelMenu, 2);
    
    
    auto actPhoto = Sprite::create("CupcakeMake3.png");
    actPhoto->setTag(10);
    actPhoto->setOpacity(0);
    actPhoto->setScale(1.3);
    actPhoto->setPosition(Vec2(winSize.width / 2, winSize.height / 2.2));
    this->addChild(actPhoto);
    
    
    
    auto photo = MenuItemImage::create("CupcakeMake3.png","CupcakeMake3.png",
                                       [&](Ref* ref){
                                           
                                           auto myImg = static_cast<MenuItemImage*>(ref);
                                           myImg->setOpacity(0);
                                           
                                           auto actImg = static_cast<Sprite*>(getChildByTag(10));
                                           actImg->setOpacity(255);
                                           actImg->runAction(RotateBy::create(0.2, 0, 180));
                                           
                                           tools->playSoundSet(_tapNum, "C");
                                           
                                           if(_tapNum > 2){
                                               _tapNum = 0;
                                           }else{
                                               _tapNum++;
                                           }

                                           
                                       });
    
    photo->setScale(1.3);
    photo->setPosition(Vec2(winSize.width / 2, winSize.height / 2.2));
    
    auto photoMenu = Menu::create(photo, NULL);
    photoMenu->setPosition(0, 0);
    this->addChild(photoMenu);
    
    
    
    auto next = MenuItemImage::create("CupcakeNext.png","CupcakeNextPress.png",
                                      [&](Ref* ref){
                                          tools->playSound(Tools::sound::TAP1);

                                          auto scene = Page5::createScene();
                                          auto transition = TransitionPageTurn::create(1.2, scene,false);
                                          Director::getInstance()->replaceScene(transition);
                                      });
    next->setScale(0.8);
    next->setPosition(Vec2(winSize.width / 2 * 1.8, winSize.height / 1.1));
    
    
    auto back = MenuItemImage::create("CupcakeBack.png","CupcakeBackPress.png",
                                      [&](Ref* ref){
                                          tools->playSound(Tools::sound::TAP1);

                                          auto scene = Page3::createScene();
                                          auto transition = TransitionPageTurn::create(1.2, scene,true);
                                          Director::getInstance()->replaceScene(transition);
                                      });
    back->setScale(0.8);
    back->setPosition(Vec2(winSize.width / 2 * 0.2, winSize.height / 1.1));
    
    
    auto Button = Menu::create(next,back, NULL);
    Button->setPosition(0, 0);
    this->addChild(Button);
    
    
    
    return true;
}
Example #20
0
// RakNet - change shoot from assuming the camera, to taking any starting location
// This way the same function can be called from the network
RakNet::TimeMS CDemo::shootFromOrigin(core::vector3df camPosition, core::vector3df camAt)
{
	scene::ISceneManager* sm = device->getSceneManager();
	scene::ICameraSceneNode* camera = sm->getActiveCamera();

	if (!camera || !mapSelector)
		return 0;

	SParticleImpact imp;
	imp.when = 0;

	// get line of camera

	core::vector3df start = camPosition;
	core::vector3df end = (camAt);
	//end.normalize();
	start += end*8.0f;
	end = start + (end * camera->getFarValue());

	core::triangle3df triangle;

	core::line3d<f32> line(start, end);

	// get intersection point with map
	scene::ISceneNode* hitNode;
	if (sm->getSceneCollisionManager()->getCollisionPoint(
		line, mapSelector, end, triangle, hitNode))
	{
		// collides with wall
		core::vector3df out = triangle.getNormal();
		out.setLength(0.03f);

		imp.when = 1;
		imp.outVector = out;
		imp.pos = end;
	}
	else
	{
		// doesnt collide with wall
		core::vector3df start = camPosition;
		core::vector3df end = (camAt);
		//end.normalize();
		start += end*8.0f;
		end = start + (end * camera->getFarValue());
	}

	// create fire ball
	scene::ISceneNode* node = 0;
	node = sm->addBillboardSceneNode(0,
		core::dimension2d<f32>(BALL_DIAMETER,BALL_DIAMETER), start);

	node->setMaterialFlag(video::EMF_LIGHTING, false);
	node->setMaterialTexture(0, device->getVideoDriver()->getTexture(IRRLICHT_MEDIA_PATH "fireball.bmp"));
	node->setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR);

	f32 length = (f32)(end - start).getLength();
	const f32 speed = SHOT_SPEED;
	u32 time = (u32)(length / speed);

	scene::ISceneNodeAnimator* anim = 0;

	// set flight line

	anim = sm->createFlyStraightAnimator(start, end, time);
	node->addAnimator(anim);
	anim->drop();

	anim = sm->createDeleteAnimator(time);
	node->addAnimator(anim);
	anim->drop();

	if (imp.when)
	{
		// create impact note
		imp.when = device->getTimer()->getTime() + (time - 100);
		Impacts.push_back(imp);
	}

	// play sound
#ifdef USE_IRRKLANG
	if (ballSound)
	{
		//	irrKlang->play2D(ballSound);

		// RakNet: Make the sound 3d so others can hear it from the proper origin
		irrklang::ISound* sound = 
			irrKlang->play3D(ballSound, node->getPosition(), false, false, true);

		if (sound)
		{
			// adjust max value a bit to make to sound of an impact louder
			sound->setMinDistance(400);
			sound->drop();
		}

	}
#endif
#ifdef USE_SDL_MIXER
	if (ballSound)
		playSound(ballSound);
#endif

	return (RakNet::TimeMS) time;
}
task main () {
  displayCenteredTextLine(0, "HiTechnic");
  displayCenteredBigTextLine(1, "MAGNETIC");
  displayCenteredTextLine(3, "Field Sensor");
  displayCenteredTextLine(4, "SMUX Test");
  displayCenteredTextLine(5, "Connect SMUX to");
  displayCenteredTextLine(6, "S1 and sensor to");
  displayCenteredTextLine(7, "SMUX Port 1");

  sleep(2000);

  displayCenteredTextLine(5, "Press enter");
  displayCenteredTextLine(6, "to set bias");

  sleep(2000);
  eraseDisplay();

  // Create struct to hold sensor data
  tHTMAG magneticSensor;

	// The sensor is connected to the first port
	// of the SMUX which is connected to the NXT port S1.
	// To access that sensor, we must use msensor_S1_1.  If the sensor
	// were connected to 3rd port of the SMUX connected to the NXT port S4,
	// we would use msensor_S4_3

  // Initialise and configure struct and port
  initSensor(&magneticSensor, msensor_S1_1);

  while(true) {
    eraseDisplay();
    displayTextLine(1, "Resetting");
    displayTextLine(2, "bias");
    sleep(500);

    // Start the calibration and display the offset
    sensorCalibrate(&magneticSensor);

    displayTextLine(2, "Bias: %4d", magneticSensor.bias);
    playSound(soundBlip);
    while(bSoundActive) sleep(1);
    while(getXbuttonValue(xButtonAny)) sleep(1);

    while(!getXbuttonValue(xButtonEnter)) {
      eraseDisplay();

      // Read the sensor data
      readSensor(&magneticSensor);

      displayTextLine(1, "Reading");
      // Display the current calibration value
      displayTextLine(2, "Bias: %4d", magneticSensor.bias);

      displayClearTextLine(4);
      // Display the current magnetic field strength
      displayTextLine(4, "Mag:   %4d", magneticSensor.strength);
      displayTextLine(6, "Press enter");
      displayTextLine(7, "to recalibrate");
      sleep(100);
    }
  }
}
Example #22
0
void CDemo::createParticleImpacts()
{
	u32 now = device->getTimer()->getTime();
	scene::ISceneManager* sm = device->getSceneManager();

	for (s32 i=0; i<(s32)Impacts.size(); ++i)
		if (now > Impacts[i].when)
		{
			// create smoke particle system
			scene::IParticleSystemSceneNode* pas = 0;

			pas = sm->addParticleSystemSceneNode(false, 0, -1, Impacts[i].pos);

			pas->setParticleSize(core::dimension2d<f32>(10.0f, 10.0f));

			scene::IParticleEmitter* em = pas->createBoxEmitter(
				core::aabbox3d<f32>(-5,-5,-5,5,5,5),
				Impacts[i].outVector, 20,40, video::SColor(0,255,255,255),video::SColor(0,255,255,255),
				1200,1600, 20);

			pas->setEmitter(em);
			em->drop();

			scene::IParticleAffector* paf = campFire->createFadeOutParticleAffector();
			pas->addAffector(paf);
			paf->drop();

			pas->setMaterialFlag(video::EMF_LIGHTING, false);
			pas->setMaterialTexture(0, device->getVideoDriver()->getTexture(IRRLICHT_MEDIA_PATH "smoke.bmp"));
			pas->setMaterialType(video::EMT_TRANSPARENT_VERTEX_ALPHA);

			scene::ISceneNodeAnimator* anim = sm->createDeleteAnimator(2000);
			pas->addAnimator(anim);
			anim->drop();

			// play impact sound
			#ifdef USE_IRRKLANG
			if (irrKlang)
			{
				irrklang::ISound* sound = 
					irrKlang->play3D(impactSound, Impacts[i].pos, false, false, true);

				if (sound)
				{
					// adjust max value a bit to make to sound of an impact louder
					sound->setMinDistance(400);
					sound->drop();
				}
			}
			#endif

			#ifdef USE_SDL_MIXER
			if (impactSound)
				playSound(impactSound);
			#endif

			// delete entry
			Impacts.erase(i);
			i--;
		}
}
Example #23
0
void AudioEngine::playDeliveryFailSound(Vehicle * source)
{
	glm::vec3 pos = source->getPosition();

	playSound(deliveryFailSound, pos, source, 2.0f);
}
// "actions": ["transition 3000 carwork", "playsound drive.wav"]
// "onEnter": ["set $nukes 0", "set $skips 0"],
// "actions": ["signal nuke", "inc $nukes"]
// "actions": ["goto office"],
// "elseActions": ["say Just a few more"]
// inc $var
void gsGame::doAction(std::string action) {
	auto args = nnb::split(action, " ");
	if (args.size() == 0) {
		NNB_ERROR << "Empty condition!";
	} else if (args[0] == "playsound") {
		playSound(args[1]);
	} else if (args[0] == "set") {
		auto var = args[1].substr(1, args[1].size() - 1);
		if (isNumber(args[2])) {
			vars[var] = nnb::stoi(args[2]);
		} else {
			vars[var] = args[2];
		}
	} else if (args[0] == "signal") {
		std::string msg = args[1];
		for (size_t i = 2; i < args.size(); ++i) {
			msg += " " + args[i];
		}
		
		if (msg == "throwit") {
			NNB_DEBUG << "THROW IT";
			bias = "good";
			action = "You destroyed the evil device.";
			g_gm->setState("nuke");
		} else if (msg == "suicide") {
			NNB_DEBUG << "SUICIDE";
			bias = "bad";
			action = "You threw yourself to the ground";
			g_gm->setState("nuke");
		}

		for (auto& module : activeModules) {
			module->receive(msg);
		}
	} else if (args[0] == "goto") {
		nextView = args[1];
		transitionTime = -1;
	} else if (args[0] == "transition") {
		nextView = args[2];
		transitionTime = nnb::stoi(args[1]);
		transitionStart = SDL_GetTicks();
	} else if (args[0] == "say") {
		std::string msg = args[1];
		for (size_t i = 2; i < args.size(); ++i) {
			msg += " " + args[i];
		}
		
		auto lines = nnb::split(msg, "#");

		if (lines.size() == 1) {
			line1.setText(lines[0]);
			line2.setText("");
		} else if (lines.size() == 2) {
			line1.setText(nnb::trim(lines[0]));
			line2.setText(nnb::trim(lines[1]));
		}

		std::cout << msg << std::endl;
	} else if (args[0] == "item") {
		auto itemName = args[1].substr(0, args[1].size() - 4);
		inventory[itemName] = Item();
		inventory[itemName].sprite = g_tm->getTexture("sprites", args[1]);
		inventory[itemName].sprite.setPosition(nextItemX, 560);
		inventory[itemName].setBounds(nextItemX, 560, inventory[itemName].sprite.getRenderWidth(), inventory[itemName].sprite.getRenderHeight());
		nextItemX += 100;
	} else if (args[0] == "consume") {
		// inventory.erase(args[1]);
		inventory[args[1]].has = false;
	} else if (args[0] == "inc") {
		auto varName = args[1].substr(1, args[1].size());
		vars[varName] = vars[varName].get<int>() + 1;
	}
}
Example #25
0
void AudioEngine::playDryFireSound(Vehicle * source)
{
	glm::vec3 pos = source->getPosition();

	playSound(dryFireSound, pos, source);
}
Example #26
0
 int Sound::playSound(std::string name)
 {
     return playSound(name,0);
 }
Example #27
0
	void playSound(uint sound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, bool loop, int vol = 0) {
		playSound(sound, sound, type, handle, loop, vol);
	}
Example #28
0
bool CBarbot::ActMsg(CActMsg *msg) {
	if (msg->_action == "Vodka") {
		if (!_addedVodka) {
			playRange(_frames[47], MOVIE_NOTIFY_OBJECT);
			playRange(_frames[46], MOVIE_NOTIFY_OBJECT);
			playRange(_frames[40]);
			playRange(_frames[7]);
			playRange(_frames[13]);
			playRange(_frames[8]);
			playRange(_frames[40]);
			playRange(_frames[7]);
			playRange(_frames[13]);
			playRange(_frames[8]);
			playRange(_frames[7]);
			playRange(_frames[40]);
			playRange(_frames[13]);
			playRange(_frames[40]);
			playRange(_frames[7]);
			playRange(_frames[8]);
			playRange(_frames[13]);
			playRange(_frames[40], MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH);
			_frameNum = _frames[40]._endFrame;
		}
	} else if (msg->_action == "GiveBackVisCentre") {
		if (_field134) {
			playRange(_frames[27]);
			_frameNum = _frames[27]._endFrame;
		}
	} else if (msg->_action == "Bird") {
		CStatusChangeMsg statusMsg;
		statusMsg._newStatus = 2;
		statusMsg.execute("PickUpGlass");
		_glassContent = GG_BIRD;

		playRange(_frames[32], MOVIE_NOTIFY_OBJECT);
		movieEvent();
		playRange(_frames[30], MOVIE_NOTIFY_OBJECT);
		_frameNum = _frames[30]._endFrame;

		if (areIngredientsMissing()) {
			playRange(_frames[42], MOVIE_NOTIFY_OBJECT);
			_frameNum = _frames[42]._endFrame;
		}

		CActMsg actMsg("InTitilator");
		actMsg.execute("BeerGlass");
	} else if (msg->_action == "None") {
		CStatusChangeMsg statusMsg;
		statusMsg._newStatus = 2;
		statusMsg.execute("PickUpGlass");
		_glassContent = GG_EMPTY;

		playRange(_frames[55], MOVIE_NOTIFY_OBJECT);
		movieEvent();
		playRange(_frames[54], MOVIE_NOTIFY_OBJECT);
		_frameNum = _frames[54]._endFrame;
	} else if (msg->_action == "Mustard" || msg->_action == "Tomato") {
		CStatusChangeMsg statusMsg;
		statusMsg._newStatus = 2;
		statusMsg.execute("PickUpGlass");
		_glassContent = GG_CONDIMENT;

		playRange(_frames[55], MOVIE_NOTIFY_OBJECT);
		movieEvent();
		playRange(_frames[54], MOVIE_NOTIFY_OBJECT);
		_frameNum = _frames[54]._endFrame;

		CActMsg actMsg("InTitilator");
		actMsg.execute("BeerGlass");
	} else if (msg->_action == "Fruit") {
		if (!_addedLemon) {
			CActMsg visibleMsg;
			visibleMsg.execute("LemonOnBar");
			startTalking(this, 250576);
			_addedLemon = true;

			playRange(_frames[36], MOVIE_NOTIFY_OBJECT);
			movieEvent();
			_frameNum = _frames[36]._endFrame;

			if (areIngredientsMissing()) {
				playRange(_frames[43], MOVIE_NOTIFY_OBJECT);
				_frameNum = _frames[43]._endFrame;
			}

			CRemoveFromGameMsg removeMsg;
			removeMsg.execute("Lemon");
		}
	} else if (msg->_action == "CrushedTV") {
		if (!_addedTV) {
			CVisibleMsg visibleMsg;
			visibleMsg.execute("TVOnBar");
			startTalking(this, 250584);
			_field160 = 1;
			_addedTV = true;

			playSound("c#5.wav", _volume);
			playRange(_frames[35], MOVIE_NOTIFY_OBJECT);
			movieEvent();
			playRange(_frames[34]);
			playRange(_frames[33], MOVIE_NOTIFY_OBJECT);
			_frameNum = _frames[33]._endFrame;

			if (areIngredientsMissing()) {
				playRange(_frames[41], MOVIE_NOTIFY_OBJECT);
				_frameNum = _frames[41]._endFrame;
			}

			CRemoveFromGameMsg removeMsg;
			removeMsg.execute("CrushedTV");
		}
	} else if (msg->_action == "PlayerTakesGlass") {
		playRange(_frames[53]);
		_field124 = 0;

		CStatusChangeMsg statusMsg;
		statusMsg._newStatus = 0;
		statusMsg.execute("PickUpGlass");
	} else if (msg->_action == "PlayerTakesVisCentre") {
		_visCenterOnCounter = false;
		loadFrame(0);
		CStatusChangeMsg statusMsg;
		statusMsg._newStatus = 0;
		statusMsg.execute("PickUpVisCentre");
	} else if (msg->_action == "BellRing1") {
		startTalking(this, 251105);
	} else if (msg->_action == "BellRing2") {
		startTalking(this, 251107);
	} else if (msg->_action == "BellRing3") {
		startTalking(this, 250285);
	} else if (msg->_action == "GoRingBell") {
		startTalking(this, 250285);
	} else if (msg->_action == "ClickOnVision") {
		startTalking(this, 251858);
	}

	return true;
}
void CGarg::process()
{
	// did the garg get shot?
	if (mHealthPoints <= 0 && state != GARG_DYING )
	{
		// die, you stupid garg, die!
		state = GARG_DYING;
		dying = true;
		sprite = GARG_DYING_FRAME;
		yinertia = GARGDIE_START_INERTIA;
		playSound(SOUND_GARG_DIE);
	}

	// Check, if Garg is moving and collides and change directions whenever needed
	if(state != GARG_LOOK &&  state != GARG_CHARGE && state != GARG_DYING)
	{
		// Set the proper frame
		sprite = (movedir==LEFT) ? GARG_WALK_LEFT : GARG_WALK_RIGHT;
		sprite += walkframe;

		// collides? Change direction
		if( movedir==LEFT && blockedl )
			movedir = RIGHT;
		else if( movedir==RIGHT && blockedr )
			movedir = LEFT;

		// Compute the speed
		xinertia = (m_hardmode) ? GARG_WALK_SPEED_FAST : GARG_WALK_SPEED;

		// Set the correct speed according to direction
		if(movedir == LEFT)
			xinertia = -xinertia;
		dist_traveled++;
	}

	switch(state)
	{
	case GARG_DYING:
		if ( blockedd && yinertia >= 0 )
		{
			sprite = GARG_DEAD_FRAME;
			dead = true;
		}
		break;
	case GARG_LOOK:
		if (looktimes>GARG_NUM_LOOKS)
		{			
			if (!about_to_charge && rnd()%3==1)
			{
				// 25% prob, go the other way (but always charge towards player)				
				movedir = (movedir == LEFT) ? RIGHT : LEFT;
			}

			// however if we're blocked on one side we must go the other way
			if (blockedl)
				movedir = RIGHT;
			else if (blockedr)
				movedir = LEFT;

			timer = 0;
			walkframe = 0;
			dist_traveled = 0;
			if (about_to_charge)
			{
				state = GARG_CHARGE;
				about_to_charge = 0;
			}
			else state = GARG_MOVE;
		}

		// look animation
		if (!timer)
		{
			sprite = GARG_STAND + lookframe;
			looktimes++;

			if (++lookframe>3)
			{
				lookframe=0;
			}
			timer = GARG_LOOK_TIME;
		} else timer--;
		break;
	case GARG_MOVE:
	{
		// every now and then go back to look state
		if (dist_traveled > GARG_MINTRAVELDIST)
		{
			if (rnd()%GARG_LOOK_PROB==(GARG_LOOK_PROB/2))
			{
				looktimes = 0;
				timer = 0;
				state = GARG_LOOK;
				break;
			}
		}

		// walk animation
		if (timer > GARG_WALK_ANIM_TIME ||
				(timer > GARG_WALK_ANIM_TIME && m_hardmode))
		{
			walkframe ^= 1;
			timer = 0;
		} else timer++;
	}
	break;
	case GARG_JUMP:
		if( jumptime > 0 )
			jumptime--;
		else
			state = GARG_CHARGE;

		if( blockedd ) // There is floor
			state = GARG_CHARGE;

		charge();
		break;
	case GARG_CHARGE:
		charge();

		// if Garg is about to fall while charged make him jump
		if( !blockedd )
		{
			state = GARG_JUMP;
			yinertia = -(GARG_JUMP_SPEED);
			jumptime = GARG_JUMP_TIME;
		}

		break;
	default: break;
	}
}
void Widget::onClickButton(int buttonId)
{
    // ----------------------------------------------------------------- Main -----------------------------------------------------------------

    if(screensaverEnd())
    {
        // Set oldScene
        if(scene != sceneMap["mainQExit"] &&
                scene != sceneMap["options"] &&
                scene != sceneMap["shop"])
            oldScene = scene;

        if(scene == sceneMap["main"]) // ----------------------------- Main -----------------------------

        {
            if(buttonId == mainButtonPlay.id) // Button Play
            {
                scene = sceneMap["gameOptions"];

                // Set Duration (Sword Speed)
                playerAnimation.setDuration(swords[usedSwordId].speed());

                // Set text
                gameOptionsText = "Game Options";

                // Sounds
                playSound(gameSoundStartBattle);
                pauseSound(mainSoundtrack);

                startGameOptionsAnimations();
            }

            else if(buttonId == mainButtonExit.id) // Button Exit
            {
                scene = sceneMap["mainQExit"];

                // Start Animations
                startQExitAnimations();
            }

            else if(buttonId == mainButtonShop.id) // Button shop
            {
                scene = sceneMap["shop"];

                // Set selectSwordId
                selectSwordId = usedSwordId;

                // Start Animations
                startShopAnimations();

                shopButtonUse.visible = true;
            }

            else if(buttonId == mainButtonOptions.id) // Button options
            {
                scene = sceneMap["options"];

                // Start Animations
                startOptionsAnimations();
            }

        }

        else if(scene == sceneMap["options"]) // ----------------------------- Options -----------------------------

        {
            if(buttonId == optionsButtonBack.id) // Button Options Back
            {
                if(oldScene == sceneMap["main"])
                {
                    // Start Animations
                    startMainAnimations(false);
                }

                else if(oldScene == sceneMap["gamePause"])
                {
                    // Start Animations
                    startPauseAnimations();
                }
                scene = oldScene;
            }

            else if(buttonId == optionsButtonSite.id) // Button Options Back
            {
                QDesktopServices::openUrl(QUrl("http://coolone.ru/category/projects/"));
            }

            else if(buttonId == optionsButtonCheckUpdates.id) // Button Options Back
            {
                QDesktopServices::openUrl(QUrl("http://coolone.ru/category/projects/games/sword-battle/"));
            }

        }

        else if(scene == sceneMap["shop"]) // ----------------------------- Shop -----------------------------

        {
            if(buttonId == shopButtonUpgrade.id) // Button Update
            {
                // Buy Upgrade / Price
                int price = swords[selectSwordId].price();
                if(coins >= price)
                {
                    // Buy / Upgrade
                    if(swords[selectSwordId].levelSword>0)
                        playSound(shopSoundUpgrade);
                    else
                        playSound(shopSoundBuy);
                    coins -= price;
                    swords[selectSwordId].levelSword++;
                    usedSwordId = selectSwordId;
                }

                shopButtonUse.visible = true;
            }

            else if(buttonId == shopButtonBack.id) // Button Back
            {
                scene = sceneMap["main"];

                // Start Animations
                bool iconsAniamtions = false;
                if(usedSwordId != selectSwordId)
                    iconsAniamtions = true;
                startMainAnimations(iconsAniamtions);
            }

            else if(buttonId == shopButtonUse.id) // Button Use
            {
                if(swords[selectSwordId].levelSword>0)
                {
                    usedSwordId = selectSwordId;
                    playSound(shopSoundUse);
                }
            }

            else if(buttonId == shopButtonLeft.id) // Button Left
            {
                if(selectSwordId<=0)
                {
                    selectSwordId = numberSwords-1;
                }
                else
                {
                    selectSwordId--;
                }

                if(swords[selectSwordId].levelSword > 0)
                {
                    shopButtonUse.visible = true;
                }
                else
                {
                    shopButtonUse.visible = false;
                }
            }

            else if(buttonId == shopButtonRight.id) // Button Right
            {
                if(selectSwordId+1>numberSwords-1)
                {
                    selectSwordId = 0;
                }
                else
                {
                    selectSwordId++;
                }

                if(swords[selectSwordId].levelSword > 0)
                {
                    shopButtonUse.visible = true;
                }
                else
                {
                    shopButtonUse.visible = false;
                }
            }
        }

        else if(scene == sceneMap["mainQExit"]) // ----------------------------- QExit -----------------------------

        {
            if(buttonId == qExitButtonNo.id) // Button QNo
            {
                if(oldScene == sceneMap["main"])
                {
                    // Start Animations
                    startMainAnimations(false);
                }
                else if(oldScene == sceneMap["gamePause"])
                {
                    // Start Animations
                    startPauseAnimations();
                }
                scene = oldScene;
            }

            else if(buttonId == qExitButtonYes.id) // Button QYes
            {
                QApplication::exit();
            }
        }

        // ----------------------------------------------------------------- Game -----------------------------------------------------------------

        else if(scene == sceneMap["gameOptions"]) // ----------------------------- Game Options -----------------------------

        {
            if(buttonId == gameOptionsButtonPlay.id) // Button Options Play
            {
                // Set player sword coords
                playerAnimation.x = moveX;
                playerAnimation.y = moveY;

                // Set sword and sounds Id
                int id;
                if(gameOptionsButtonHard.text == "Easy")
                {
                    id = 0;
                }
                else if(gameOptionsButtonHard.text == "Normal")
                {
                    id = 1;
                }
                else
                {
                    id = 2;
                }

                gameSoundShotsId = id;
                usedEnemySwordId = id;

                // Set combo
                playerCombo = 0;
                enemyCombo = 0;

                // Enemy go attack
                enemyAttack = true;

                playerLeft = true;

                // Set full health
                dEnemyHealth = 100+gameOptionsButtonHard.progressValue*9;

                enemyHealthDAnimation.animation->stop();
                enemyHealth = dEnemyHealth;
                enemyHealthDAnimation.value = enemyHealth;
                playerHealth = dPlayerHealth;
                playerHealthDAnimation.value = playerHealth;

                scene = sceneMap["game"];

                // Start Animations
                startGameAnimations();
            }

            else if(buttonId == gameOptionsButtonMain.id) // Button Play
            {
                scene = sceneMap["gamePause"];
                onClickButton(pauseButtonMain.id);
            }
        }

        else if(scene == sceneMap["game"]) // ----------------------------- Game -----------------------------

        {
            if(buttonId == gameButtonPause.id) // Button Pause
            {
                scene = sceneMap["gamePause"];

                enemyAnimation.pause();

                // Start Animations
                startPauseAnimations();
            }
        }

        else if(scene == sceneMap["gamePause"]) // ----------------------------- Pause -----------------------------

        {
            if(buttonId == pauseButtonExit.id) // Button Pause Exit
            {
                scene = sceneMap["mainQExit"];

                // Start Animations
                startQExitAnimations();
            }

            else if(buttonId == pauseButtonOptions.id) // Button Pause options
            {
                scene = sceneMap["options"];

                // Start Animations
                startOptionsAnimations();
            }

            else if(buttonId == pauseButtonMain.id) // Button Pause Main
            {
                scene = sceneMap["main"];

                // Set Default game values
                enemyAttackSpeed = dEnemyAttackSpeed;
                playerScore = 0;

                // Play Soundtrack
                playSound(mainSoundtrack);

                // Stop Health Bars Aniamtions
                enemyHealthDAnimation.animation->stop();
                playerHealthDAnimation.animation->stop();

                // Set null opasity mask main logo sword
                mainSwordOpasityAnimation.setValue(minOpasitySword);
                mainSwordOpasityAnimation.start();

                // Start Animations
                startMainAnimations();
            }

            else if(buttonId == pauseButtonBack.id) // Button Pause Back
            {
                scene = sceneMap["game"];

                // Start Animations
                enemyAnimation.start(false,false);
                startGameAnimations();
            }
        }
    }
}