penguin::penguin(char *bitmapPath) : object(bitmapPath) { setCollidable(true); setLives(3); lives_icon.setBitmap("resources/images/lives.png"); for(int i=0;i<NUM_BULLETS;i++) { bullets[i].setImage("resources/images/bullet.png"); } }
void Mogh::collision(gen::Sprite* other, gen::World* w){ if(Troll* ch = dynamic_cast<Troll*>(other)){ damaged = true; setCurrentAnimationVector("DAMAGED"); setHealth(getHealth() - 10); setTimer( SDL_GetTicks() + 2000 ); setCollidable(false); setVelocityX(getVelocityX()*2); setVelocityY(getVelocityY()*2); } else if(gen::Object* o = dynamic_cast<gen::Object*>(other)){ std::string direction = getKeyOfCurrentAnimationVector(); if(direction == "LEFT"){ setMovementX(getVelocityX()); moveX(w); } else if(direction == "RIGHT"){ setMovementX(-getVelocityX()); moveX(w); } else if(direction == "BACK"){ setMovementY(getVelocityY()); moveY(w); } else if(direction == "FRONT"){ setMovementY(-getVelocityY()); moveY(w); } } else if(SeaStar* s = dynamic_cast<SeaStar*>(other)){ damaged = true; setCurrentAnimationVector("DAMAGED"); setHealth(getHealth() - s->getDamage()); setTimer( SDL_GetTicks() + 2000 ); setCollidable(false); setVelocityX(getVelocityX()*2); setVelocityY(getVelocityY()*2); } }
void object::initAllToZero() { setX(0); setY(0); setSpeedX(0); setSpeedY(0); setDirX(0); setDirY(0); setAlive(false); setCollidable(false); setSpeed(0); setAngle(0); }
object::object(float x, float y, float speedX, float speedY, int dirX, int dirY, int boundX, int boundY, char *bitmapPath, bool alive, bool collidable) { setX(x); setY(y); setSpeedX(speedX); setSpeedY(speedY); setDirX(dirX); setDirY(dirY); setBoundX(boundX); setBoundY(boundY); setImage(bitmapPath); setValuesFromBitmap(); setAlive(alive); setCollidable(collidable); }
void Mogh::tick(gen::GameEngine* ge){ if(getHealth() < 1){ SDL_Flip(gen::global.screen); SDL_Delay(4000); ge->setGameOver(true); return; } if(damaged){ if(SDL_GetTicks() > getTimer()){ setCollidable(true); setVelocityX(getVelocityX()/2); setVelocityY(getVelocityY()/2); damaged = false; } } Hero::tick(ge); if(hpText == 0){ hpText = gen::Text::createText("c:\\WINDOWS\\Fonts\\arial.ttf", 30, "0", 0, 0, 0); hpText->setPositions(10, 10); } std::stringstream s; s << "HP: "; s << getHealth(); hpText->setMessage(s.str()); if(amountKilled == 0){ amountKilled = gen::Text::createText("c:\\WINDOWS\\Fonts\\arial.ttf", 30, "0", 0, 0, 0); amountKilled->setPositions(200, 10); } std::stringstream s2; s2 << "Killscore: "; s2 << Character::getAmountRemoved(); amountKilled->setMessage(s2.str()); hpText->tick(ge); amountKilled->tick(ge); }
void Moveable::setCollidedState(COLLISION col) { if(col!=NO) setCollidable(false); this->col = col; }
penguin::penguin() : object() { setCollidable(true); setLives(3); }