Zombie::Zombie(Scene* scene, const std::string& id, const sf::Vector2f& pos) : Entity(scene, id), m_health(100.0f) { setType(Entity::ZOMBIE); setDrawLayer(3); m_sprite.SetImage(*IM.GetResource("data/Images/zombie_1.png")); m_sprite.SetSubRect(sf::IntRect(0, 0, 45, 60)); m_sprite.SetOrigin(m_sprite.GetSize() / 2.0f); b2BodyDef bodyDef; bodyDef.type = b2_dynamicBody; bodyDef.position.Set(pos.x / m_scene->getMeterPixelRatio(), pos.y / m_scene->getMeterPixelRatio()); bodyDef.userData = this; m_body = m_scene->getB2World()->CreateBody(&bodyDef); b2CircleShape shape; shape.m_radius = 24.0f / m_scene->getMeterPixelRatio(); b2FixtureDef fixtureDef; fixtureDef.shape = &shape; fixtureDef.friction = 0.3f; fixtureDef.density = 1.0f; fixtureDef.restitution = 0.1f; fixtureDef.filter.categoryBits = Entity::ZOMBIE; fixtureDef.filter.maskBits = Entity::OBJECT | Entity::PLAYER | Entity::PROJECTILE | Entity::ZOMBIE; m_body->CreateFixture(&fixtureDef); }
GameControl::GameControl(int x, int y, int width, int height) : Actor(Vector(), true), m_enabled(true) { // set bounds will prepare the mesh. This has to be done there because every time // the bounds are changed there is a posibility that mesh modifications will be needed setBounds(Rectangle(x, y, width, height)); getModel().getElement()->getMaterialInstance()->setMaterialName("hud"); getModel().getElement()->getMaterialInstance()->setValue("u_enabled", 1.0f); getModel().getElement()->getMaterialInstance()->setValue("u_textureSampler", "dummy"); setDrawLayer(Common::DL_FOREGROUND); }