예제 #1
0
파일: BossSaw.cpp 프로젝트: olofn/db_public
void BossSaw::draw( BITMAP *buffer, int offsetX, int offsetY, int layer )
{
	int x = getDrawPositionX() + offsetX - getHalfSize().x;
	int y = getDrawPositionY() + offsetY - getHalfSize().y;

	mySaw->drawFrame(buffer, myFrameCounter / 10, x, y);

	//Entity::draw(buffer, offsetX, offsetY, layer);
}
예제 #2
0
void Entity::draw(BITMAP *buffer, int offsetX, int offsetY, int layer)
{
	int x = getDrawPositionX() + offsetX;
	int y = getDrawPositionY() + offsetY;
	int x1 = (int)(x - getHalfSize().x);
	int y1 = (int)(y - getHalfSize().y);
	int x2 = (int)(x + getHalfSize().x);
	int y2 = (int)(y + getHalfSize().y);
	rect(buffer, x1, y1, x2, y2, makecol(255, 255, 0));
	line(buffer, x - 3, y, x + 3, y, makecol(255, 255, 0));
	line(buffer, x, y - 3, x, y + 3, makecol(255, 255, 0));
	//textout_centre_ex(buffer, font, typeid(this).name(), x, y - 9, makecol(200, 200, 200), 0);
}
void Savepoint::draw(BITMAP *buffer, int offsetX, int offsetY, int layer)
{
	if (mTextCounter > 0)
	{
		mFont->drawCenter(buffer, "GAME SAVED", 0, 0, 320, 100);
	}

	mAnimation.drawFrame(
		buffer, 
		mFrame / 4, 
		offsetX + getDrawPositionX() - mAnimation.getFrameWidth() / 2,
		offsetY + getDrawPositionY() + getHalfSize().y - mAnimation.getFrameHeight() + 10);
}
예제 #4
0
void BreakingHookTile::draw(BITMAP *buffer, int offsetX, int offsetY, int layer)
{
	if (mDestroyed) {
		return;
	}

	int x = getDrawPositionX() + offsetX - mSprite.getFrameWidth() / 2;
	int y = getDrawPositionY() + offsetY - mSprite.getFrameWidth() / 2;

	if (!mBreaking || (mBreakCounter & 1) == 0) {
		mSprite.drawFrame(buffer, 0, x, y);
	}

}
void MovableBox::draw(BITMAP *buffer, int offsetX, int offsetY, int layer) {
    int x = getDrawPositionX();
    int y = getDrawPositionY();

    int frame = 1;
    //frame = mFrame/4;

    bool gravityFlip = (getGravityDirection()>0)?false:true;

    mBoxAnimation.drawFrame(buffer,
                            frame,
                            offsetX + x - mBoxAnimation.getFrameWidth()/2,
                            offsetY + y+getHalfSize().y-mBoxAnimation.getFrameHeight(),
                            true,gravityFlip);

}
예제 #6
0
파일: Boss.cpp 프로젝트: olofn/db_public
void Boss::draw( BITMAP *buffer, int offsetX, int offsetY, int layer )
{
	int x = getDrawPositionX() + offsetX - getHalfSize().x;
	int y = getDrawPositionY() + offsetY - getHalfSize().y;

	if (myState == State_Sleeping)
		myReactor->drawFrame(buffer, DAMAGE_MAX / FRAME_PER_DAMAGE - (myInitalHealth + 3) / FRAME_PER_DAMAGE, x , y );
	else if (myState == State_InitialBlow)
		myReactor->drawFrame(buffer, 3, x , y );
	else if  (myState == State_Vulnerable)
		myBoss->drawFrame(buffer, 0, x, y);
	else
		myBoss->drawFrame(buffer, myAnimFrameCounter / 5, x, y);
	

//	Entity::draw(buffer, offsetX, offsetY, layer);
}
예제 #7
0
void Shot::draw(BITMAP *buffer, int offsetX, int offsetY, int layer){
	int x = getDrawPositionX();
	int y = getDrawPositionY();

	int frame;
	if(! hasCollided()){
		frame = mFrame/10;
		mShotAnimation[mShotType]->drawFrame(buffer,
			frame, 
			offsetX + x - mShotAnimation[mShotType]->getFrameWidth()/2, 
			offsetY + y+getHalfSize().y-mShotAnimation[mShotType]->getFrameHeight());
	} else {
		cFrame++;
		frame = cFrame/10;
		mCollisionAnimation[mShotType]->drawFrame(buffer,
			frame, 
			offsetX + x - mCollisionAnimation[mShotType]->getFrameWidth()/2, 
			offsetY + y+getHalfSize().y-mCollisionAnimation[mShotType]->getFrameHeight());
	}
}
예제 #8
0
void MovingHookTile::draw(BITMAP *buffer, int offsetX, int offsetY, int layer)
{
	int x = getDrawPositionX() + offsetX - mSprite.getFrameWidth() / 2;
	int y = getDrawPositionY() + offsetY - mSprite.getFrameHeight() / 2;
	mSprite.drawFrame(buffer, mFrameCounter / 12, x, y);
}
예제 #9
0
void Hero::draw(BITMAP *buffer, int offsetX, int offsetY, int layer)
{
	int x = getDrawPositionX();
	int y = getDrawPositionY();

	if (myIsDead)
	{
		mAnimationHurt.drawFrame(buffer,
			0, 
			offsetX + x - mAnimationHurt.getFrameWidth()/2, 
			offsetY + y+getHalfSize().y-mAnimationHurt.getFrameHeight(),
			mFacingDirection == Direction_Left);
		return;
	}

	Animation* animation = 0;
	int frame = 1;

//	mMovementState = MovementState_Jump;

	switch(mMovementState)
	{
	case MovementState_Run:
		animation = &mAnimationRun;
		frame = mFrame/10;
		break;
	case MovementState_AirRun:
		animation = &mAnimationRun;
		frame = mFrame/3;
		break;
	case MovementState_Still:
		animation = &mAnimationRun;
		frame = 1;
		break;
	case MovementState_Jump:
		animation = &mAnimationJump;
		frame = 1;
		break;
	case MovementState_Fall:
		animation = &mAnimationFall;
		frame = 1;
		break;
	default:
		Entity::draw(buffer, offsetX, offsetY, layer);
	}

	if (mRopeState != RopeState_Retracted && (mRopeState != RopeState_Dissapearing || (mRopeDissapearCounter & 1) != 0)) {
		int x2 = getDrawPositionX() + offsetX;
		int y2 = getDrawPositionY() + offsetY;
		int x1 = (int)(mRopePosition.x + 0.5f) + offsetX;
		int y1 = (int)(mRopePosition.y + 0.5f) + offsetY;
		
		float2 line(x2-x1, y2-y1);
		int rlength = length(line);
		line /= length(line);
		line *= 3;
		
		float x = x1;
		float y = y1;
		
		int segments = (int)ceil(rlength/length(line));

		for (int i = 0; i < segments; i++)
		{
			float2 wave;

			if ((mRopeState == RopeState_Moving || mRopeState == RopeState_Dissapearing) && segments > 1) {
				float t = i / (float)(segments - 1);
				float value = sin(t * 3.141592) * sin(i * 0.3f);
				wave = float2(line.y, -line.x) * value;
			}

			mAnimationRope.drawFrame(buffer,
				frame, 
				x + wave.x - mAnimationRope.getFrameWidth()/2, 
				y + wave.y - mAnimationRope.getFrameHeight()/2);

			x += line.x;
			y += line.y;
		}

		mAnimationHook.drawFrame(buffer,
			frame, 
			x1 - mAnimationHook.getFrameWidth()/2, 
			y1 - mAnimationHook.getFrameHeight()/2);

	}

	if (mBlinkingTicksLeft > 0 && !mOnGround)
	{
		animation = &mAnimationHurt;
	}

	if ((mBlinkingTicksLeft/6)%2 == 0)
	{
		animation->drawFrame(buffer,
			frame, 
			offsetX + x - animation->getFrameWidth()/2, 
			offsetY + y+getHalfSize().y-animation->getFrameHeight(),
			mFacingDirection == Direction_Left);
	}
}
예제 #10
0
void Hero::draw(BITMAP *buffer, int offsetX, int offsetY, int layer)
{
	if (mySpawnPortal)
	{
		return;
	}

	int x = getDrawPositionX();
	int y = getDrawPositionY();

	if (myIsDead)
	{
		bool gravityFlip = (getGravityDirection()>0)?false:true;
		mAnimationHurt.drawFrame(buffer,
			0, 
			offsetX + x - mAnimationHurt.getFrameWidth()/2, 
			offsetY + y+getHalfSize().y-mAnimationHurt.getFrameHeight(),
			mFacingDirection == Direction_Left, gravityFlip);
		return;
	}

	Animation* animation = 0;
	int frame = 1;

//	mMovementState = MovementState_Jump;

	switch(mMovementState)
	{
	case MovementState_Run:
		animation = &mAnimationRun;
		frame = mFrame/5;
		break;
	case MovementState_Still:
		animation = &mAnimationRun;
		frame = 1;
		break;
	case MovementState_Jump:
		animation = &mAnimationJump;
		frame = 1;
		break;
	case MovementState_Fall:
		animation = &mAnimationFall;
		frame = 1;
		break;
	default:
		Entity::draw(buffer, offsetX, offsetY, layer);
	}

	if (mBlinkingTicksLeft > 0 && !mOnGround)
	{
		animation = &mAnimationHurt;
	}

	if ((mBlinkingTicksLeft/6)%2 == 0)
	{
		bool gravityFlip = (getGravityDirection()>0)?false:true;

		animation->drawFrame(buffer,
			frame, 
			offsetX + x - animation->getFrameWidth()/2, 
			offsetY + y + (gravityFlip ? -getHalfSize().y : getHalfSize().y - animation->getFrameHeight()),
			mFacingDirection == Direction_Left,
			gravityFlip);
	}
}
예제 #11
0
void Powerup::draw(BITMAP *buffer, int offsetX, int offsetY, int layer)
{
	if (GameState::getInt(mKind) != 0)
	{
		return;
	}

	int f = (mFrame / 4) % 4;

	if (mKind == GameState::POWERUP_HIJUMP) {
		f += 4;
	} else if (mKind == GameState::POWERUP_GUN) {
		f += 8;
	}

	mAnimation.drawFrame(buffer, f, offsetX + getDrawPositionX() - getHalfSize().x, offsetY + getDrawPositionY() - getHalfSize().y);
}