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); }
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; }
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); } } }
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; }
void KotOR2Engine::playMenuMusic() { if (SoundMan.isPlaying(_menuMusic)) return; _menuMusic = playSound("mus_sion", Sound::kSoundTypeMusic, true); }
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; }
void InterlinearLineLabel::mouseDoubleClickEvent ( QMouseEvent * event ) { Q_UNUSED(event); playSound(); }
void AsScene2101Door::stOpenDoor() { startAnimation(0x0C202B9C, 0, -1); _newStickFrameIndex = STICK_LAST_FRAME; setVisible(true); playSound(0, calcHash("fxDoorOpen32")); }
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; }
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); } }
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); }
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; }
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; } }
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); }
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; }
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; }
// 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); } } }
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--; } }
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; } }
void AudioEngine::playDryFireSound(Vehicle * source) { glm::vec3 pos = source->getPosition(); playSound(dryFireSound, pos, source); }
int Sound::playSound(std::string name) { return playSound(name,0); }
void playSound(uint sound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, bool loop, int vol = 0) { playSound(sound, sound, type, handle, loop, vol); }
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(); } } } }