void AAction::loadBones() { _hb.push_back(Hitbox(5, Position(), _bones[Bones::FOOT1], _player.orient())); _hb.push_back(Hitbox(5, Position(), _bones[Bones::FOOT2], _player.orient())); _hb.push_back(Hitbox(5, Position(), _bones[Bones::HAND1], _player.orient())); _hb.push_back(Hitbox(5, Position(), _bones[Bones::HAND2], _player.orient())); _hb.push_back(Hitbox(5, Position(), _bones[Bones::ELBOW1], _player.orient())); _hb.push_back(Hitbox(5, Position(), _bones[Bones::ELBOW2], _player.orient())); _hb.push_back(Hitbox(5, Position(), _bones[Bones::KNEE1], _player.orient())); _hb.push_back(Hitbox(5, Position(), _bones[Bones::KNEE2], _player.orient())); _hb.push_back(Hitbox(16, Position(), _bones[Bones::HEAD], _player.orient())); _hb.push_back(Hitbox(5, Position(), _bones[Bones::BODY], _player.orient())); }
Character::Character(int xpos, int ypos, std::string name) { std::cout << "Character." << std::endl; this->name = name; position = sf::Vector2f(xpos,ypos); speed = 0; hitbox = Hitbox(position.x+6,position.y+(CHARA_SPRITE_H/2), CHARA_SPRITE_W-14,CHARA_SPRITE_H/2-6); }
bool Character::verifyMove(direction d, Hitbox *h) { Hitbox next_move; float next_speed = (WALKING_SPEED*dt.asSeconds()); switch (d){ case DOWN : next_move = Hitbox(hitbox.getPosition().x, hitbox.getPosition().y+next_speed,hitbox.get_size()); return h->collision(next_move); case LEFT : next_move = Hitbox(hitbox.getPosition().x-next_speed, hitbox.getPosition().y,hitbox.get_size()); return h->collision(next_move); case UP : next_move = Hitbox(hitbox.getPosition().x, hitbox.getPosition().y-next_speed,hitbox.get_size()); return h->collision(next_move); case RIGHT : next_move = Hitbox(hitbox.getPosition().x+next_speed, hitbox.getPosition().y,hitbox.get_size()); return h->collision(next_move); } return false; }
CollTestBox::CollTestBox(double x, double y) : TextureSprite("images/dev/colltestbox.png") { setNumberOfAnimations(2); setSpriteFrameSize(600,50); addSpriteAnimFrame(0,0,0); addSpriteAnimFrame(1,200,0); setCurrentAnimation(0); setPosition(x, y); setLayerID(1); hitbox = Hitbox(0, 0, 600, 50); }
Robert::Robert(double x, double y) : PhysicsSprite("images/spr_robert.png") { setPosition(x, y); // animations: // 0 - standing // 1 - walking // 2 - attacking // 3 - get hit // ANIMATION SETUP // setNumberOfAnimations(4); setSpriteFrameSize(128,128); addSpriteAnimRow(0, 0, 256, 128, 0, 1); // standing animation - 0 setAnimationSpeed(0, 0.1); addSpriteAnimRow(1, 0, 384, 128, 0, 4); // walking animation - 1 setAnimationSpeed(1, 0.25); addSpriteAnimRow(2, 0, 128, 128, 0, 5); // attacking animation - 2 setAnimationSpeed(2, 0.25); setAnimationLoop(2, false); addSpriteAnimRow(3, 0, 0, 128, 0, 2); // hit animation - 3 setAnimationSpeed(3, 0.1); setAnimationLoop(3, false); setCurrentAnimation(0); // PHYSICAL PROPERTIES // mass = 50; airDrag = 0.1; groundFriction = 0.75; // (airGroundFriction and gravity are left to defaults) hitbox = Hitbox(40, 0, 48, 117); setCenter(64, 58); health = 3; // BEHAVIORAL STATE VARIABLE(S) // walking = false; attacking = false; gotHit = false; thrown = false; willAttack = false; }
//----------------------------------------------------------------------------- // Exports mstudiobbox_t. //----------------------------------------------------------------------------- void export_hitbox(scope _studio) { class_<mstudiobbox_t, mstudiobbox_t *, boost::noncopyable> Hitbox("Hitbox"); // Properties... Hitbox.add_property("name", &mstudiobbox_t::pszHitboxName); Hitbox.def_readwrite("bone", &mstudiobbox_t::bone); Hitbox.def_readwrite("group", &mstudiobbox_t::group); Hitbox.add_property("min", make_getter(&mstudiobbox_t::bbmin, reference_existing_object_policy())); Hitbox.add_property("max", make_getter(&mstudiobbox_t::bbmax, reference_existing_object_policy())); // Add memory tools... Hitbox ADD_MEM_TOOLS(mstudiobbox_t); }
BoxBot::BoxBot(double x, double y) : PhysicsSprite("images/spr_boxbot.png") { setPosition(x, y); // animations: // 0 - standing // 1 - walking // 2 - attacking // 3 - get hit // ANIMATION SETUP // setNumberOfAnimations(4); setSpriteFrameSize(128,128); addSpriteAnimRow(0, 0, 0, 128, 0, 1); // standing animation - 0 setAnimationSpeed(0, 0.1); addSpriteAnimRow(1, 0, 384, 128, 0, 2); // walking animation - 1 setAnimationSpeed(1, 0.1); addSpriteAnimRow(2, 0, 128, 128, 0, 7); // attacking animation - 2 setAnimationSpeed(2, 0.25); setAnimationLoop(2, false); addSpriteAnimRow(3, 0, 256, 128, 0, 2); // hit animation - 3 setAnimationSpeed(3, 0.1); setAnimationLoop(3, false); setCurrentAnimation(1); // PHYSICAL PROPERTIES // mass = 50; airDrag = 0.1; groundFriction = 0.75; // (airGroundFriction and gravity are left to defaults) hitbox = Hitbox(44, 0, 30, 110); setCenter(35, 54); // BEHAVIORAL STATE VARIABLE(S) // walking = true; }
//Gets a vector of hitboxes std::vector<Hitbox> lua_get_hitboxes_from_table(lua_State *L, const std::string& key){ lua_pushstring(L,key.c_str()); lua_gettable(L,-2); std::vector<Hitbox> outp; if(!lua_istable(L, -1)) { luaL_error(L, "Not a table: %s", key.c_str()); } lua_pushnil(L); int x,y,r; while(lua_next(L, -2)) { x = lua_get_float_from_table(L, "x"); y = lua_get_float_from_table(L, "y"); r = lua_get_float_from_table(L, "r"); outp.push_back(Hitbox(x,y,r)); lua_pop(L, 1); } lua_pop(L, 1); return outp; }
Hitbox PShot::hitbox() { return Hitbox(x-offsetx,x+offsetx,y-offsety,y+offsety); }
Hitbox Bomb::hitbox() { return Hitbox(x-offsetx,x+offsetx,y-offsety,y+offsety); }
Hitbox Bracket::getHitbox() const { return Hitbox(info.position, info.position + sf::Vector2f(51,-40)); }
Hitbox Explosion::getHitbox() const { return Hitbox( info.position + sf::Vector2f(10, -10), info.position + sf::Vector2f(sd.dimensions.x, -sd.dimensions.y) + sf::Vector2f(-10, 10)); }
// TODO: Usunac blad wysrodkowywania hitboxa => usunax hitboxOffset Hitbox Player::getHitbox() const { // square 22*22 centered on player -- to be placed somewhere else. return Hitbox(position + sf::Vector2f(-11,-11) + hitboxOffset, position + sf::Vector2f(11,11) + hitboxOffset); }
Hitbox Player::ihitbox() { return Hitbox(x-icrad,x+icrad,y-icrad,y+icrad); }
Hitbox Player::hitbox() { return Hitbox(x-hbrad,x+hbrad,y-hbrad,y+hbrad); }
BasicEnemy::BasicEnemy(double x_pos, double y_pos, double x_vel, double y_vel) : GameObject(x_pos, y_pos, x_vel, y_vel) , hitbox_(Hitbox(x_pos_, y_pos_, 90, 50)) { }