00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "resources/ambientoverlay.h"
00023
00024 #include "resources/image.h"
00025
00026 #include "graphics.h"
00027
00028 AmbientOverlay::AmbientOverlay(Image *img, float parallax,
00029 float speedX, float speedY):
00030 mImage(img), mParallax(parallax),
00031 mPosX(0), mPosY(0),
00032 mSpeedX(speedX), mSpeedY(speedY)
00033 {
00034 mImage->incRef();
00035 }
00036
00037 AmbientOverlay::~AmbientOverlay()
00038 {
00039 mImage->decRef();
00040 }
00041
00042 void AmbientOverlay::update(int timePassed, float dx, float dy)
00043 {
00044
00045 mPosX -= mSpeedX * timePassed / 10;
00046 mPosY -= mSpeedY * timePassed / 10;
00047
00048
00049 mPosX += dx * mParallax;
00050 mPosY += dy * mParallax;
00051
00052 int imgW = mImage->getWidth();
00053 int imgH = mImage->getHeight();
00054
00055
00056 while (mPosX > imgW)
00057 mPosX -= imgW;
00058 while (mPosX < 0)
00059 mPosX += imgW;
00060
00061 while (mPosY > imgH)
00062 mPosY -= imgH;
00063 while (mPosY < 0)
00064 mPosY += imgH;
00065 }
00066
00067 void AmbientOverlay::draw(Graphics *graphics, int x, int y)
00068 {
00069 graphics->drawImagePattern(mImage,
00070 (int) -mPosX, (int) -mPosY, x + (int) mPosX, y + (int) mPosY);
00071 }