int main() { library::book knife(3458, "Zane Grey", "The Hash Knife Outfit"); library::book dandelion(1354, "Paul J. Shanley", "Hash & Dandelion Greens"); boost::hash<library::book> book_hasher; std::size_t knife_hash_value = book_hasher(knife); (void)knife_hash_value; // suppress unused variable warning // If std::unordered_set was available: // //std::unordered_set<library::book, boost::hash<library::book> > books; //books.insert(knife); //books.insert(library::book(2443, "Lindgren, Torgny", "Hash")); //books.insert(library::book(1953, "Snyder, Bernadette M.", // "Heavenly Hash: A Tasty Mix of a Mother's Meditations")); //assert(books.find(knife) != books.end()); //assert(books.find(dandelion) == books.end()); return 0; }
void Game::playingHandleEvent(sf::Event &event) { if ((event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) || event.type == sf::Event::LostFocus) { previous_game_state.push_back(Playing); next_game_state = PauseMenu; std::cout << "menu" << std::endl; } if (event.type == sf::Event::KeyPressed) { if (event.key.code == sf::Keyboard::Escape) { previous_game_state.push_back(Playing); next_game_state = PauseMenu; std::cout << "menu" << std::endl; } else if (event.key.code == sf::Keyboard::F8) { window.setMouseCursorVisible(true); next_game_state = MapEditor; std::cout << "mapeditor" << std::endl; } else if (event.key.code == (sf::Keyboard::Key)keys["reload"] && player.extra_ammo > 0) { player.reloading = true; player.reload_timer = clock.getElapsedTime() + sf::milliseconds(1000); reload_sound.play(); } } else if (event.type == sf::Event::MouseButtonPressed) { if (event.mouseButton.button == sf::Mouse::Left) { if (player.ammo > 0 && !player.reloading) { player.ammo -= 1; bool possible; sf::Vector2f pos = bulletSpawnPosition(possible); if (!possible) { return; } sf::Vector2f vel = vecUnit(player.moving * player.vel + (vecUnit(pos - player.position) * 0.002f)) * 0.002f; //sf::Vector2f vel = vecUnit(pos - player.position) * 0.002f; Bullet bullet(&clock, &window, vel); bullet.position = pos; bullet.prev_pos = pos; bullets.push_back(bullet); gunshot_sound.play(); for (int i=-10; i<10; i++) { sf::Vector2f pvel = vecUnit(vecUnit(vel) + vecUnit(sf::Vector2f(vel.y, -vel.x))*float(i/50.0)) * (0.0012f + (rand() % 10) / 100000.f); Particle part(&clock, &window, 1, pvel, -0.000000005); part.position = bullet.position; particles.push_back(part); } } } else if (event.mouseButton.button == sf::Mouse::Right) { if (knives.size() == 0) { bool possible; sf::Vector2f pos = bulletSpawnPosition(possible); if (!possible) { return; } sf::Vector2f vel = vecUnit(player.moving * player.vel + (vecUnit(pos - player.position) * 0.002f)) * 0.002f; Knife knife(&textures[2], &clock, &window, vel); knife.position = pos; knives.push_back(knife); knife_sound.play(); } } } }