123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- #include "Kamera.h"
- #include "..\Karte\Karte.h"
- #include <Punkt.h>
- #include <Rahmen.h>
- // Inhalt der Kamera Klasse aus Kamera.h
- // Konstruktor
- Kamera::Kamera()
- {
- pos = Punkt( 0, 0 );
- gr = Punkt( 0, 0 );
- rGr = Punkt( 0, 0 );
- rahmen = new LRahmen();
- rahmen->setFarbe( 0xFF505050 );
- rahmen->setRamenBreite( 1 );
- ref = 1;
- }
- // Destruktor
- Kamera::~Kamera()
- {
- rahmen->release();
- }
- // nicht constant
- void Kamera::setPosition( int x, int y )
- {
- pos.x = x;
- pos.y = y;
- }
- void Kamera::addPosition( int x, int y, Karte *zMap )
- {
- pos.x += x;
- pos.y += y;
- if( pos.x < 0 )
- pos.x = 0;
- if( pos.y < 0 )
- pos.y = 0;
- if( pos.x > zMap->getBreite() )
- pos.x = zMap->getBreite();
- if( pos.y > zMap->getHeight() )
- pos.y = zMap->getHeight();
- }
- void Kamera::setSize( int br, int hö )
- {
- gr.x = br;
- gr.y = hö;
- }
- void Kamera::render( Bild &zRObj )
- {
- rGr = zRObj.getSize();
- rahmen->setPosition( getRX( getLinks() ), getRY( getOben() ) );
- rahmen->setSize( gr );
- rahmen->render( zRObj );
- }
- // constant
- int Kamera::getLinks() const
- {
- return pos.x - (int)( gr.x / 2.0 + 0.5 );
- }
- int Kamera::getOben() const
- {
- return pos.y - gr.y / 2;
- }
- int Kamera::getRechts() const
- {
- return pos.x + gr.x / 2;
- }
- int Kamera::getUnten() const
- {
- return pos.y + gr.y / 2;
- }
- bool Kamera::istSichtbar( int x, int y ) const
- {
- return ( x >= getLinks() && x < getRechts() && y >= getOben() && y < getUnten() );
- }
- bool Kamera::istMausIn( int x, int y ) const
- {
- return ( x >= ( rGr.x / 2 - gr.x / 2 ) && x < ( rGr.x / 2 + gr.x / 2 ) && y >= ( rGr.y / 2 - gr.y / 2 ) && y < ( rGr.y / 2 + gr.y / 2 ) );
- }
- int Kamera::getRX( int mapX ) const
- {
- return rGr.x / 2 - ( pos.x - mapX );
- }
- int Kamera::getRY( int mapY ) const
- {
- return rGr.y / 2 - ( pos.y - mapY );
- }
- int Kamera::getX() const
- {
- return pos.x;
- }
- int Kamera::getY() const
- {
- return pos.y;
- }
- // Reference Counting
- Kamera *Kamera::getThis()
- {
- ref++;
- return this;
- }
- Kamera *Kamera::release()
- {
- ref--;
- if( !ref )
- delete this;
- return 0;
- }
|