123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- #include "VideoKamera.h"
- #include "..\Karte\VideoKarte.h"
- #include <Punkt.h>
- #include <Rahmen.h>
- // Inhalt der VideoKamera Klasse aus VideoKamera.h
- // Konstruktor
- VideoKamera::VideoKamera()
- : ReferenceCounter()
- {
- pos = Punkt( 0, 0 );
- gr = Punkt( 0, 0 );
- runde = 0;
- rundePos = new Array< Punkt >();
- rundeGr = new Array< Punkt >();
- rGr = Punkt( 0, 0 );
- rahmen = new LRahmen();
- rahmen->setFarbe( 0xFF505050 );
- rahmen->setRamenBreite( 1 );
- }
- // Destruktor
- VideoKamera::~VideoKamera()
- {
- rundePos->release();
- rundeGr->release();
- rahmen->release();
- }
- // nicht constant
- void VideoKamera::setPosition( int x, int y )
- {
- pos.x = x;
- pos.y = y;
- }
- void VideoKamera::addPosition( int x, int y, VideoKarte *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 VideoKamera::setSize( int br, int hö )
- {
- gr.x = br;
- gr.y = hö;
- }
- void VideoKamera::render( Bild &zRObj )
- {
- rGr = zRObj.getSize();
- rahmen->setPosition( getRX( getLinks() ), getRY( getOben() ) );
- rahmen->setSize( gr );
- rahmen->render( zRObj );
- }
- void VideoKamera::nextRunde( bool vorwärts )
- {
- if( vorwärts )
- {
- rundePos->set( pos, runde );
- rundeGr->set( gr, runde );
- runde++;
- }
- else
- {
- runde--;
- pos = rundePos->hat( runde ) ? rundePos->get( runde ) : Punkt( 0, 0 );
- gr = rundeGr->hat( runde ) ? rundeGr->get( runde ) : Punkt( 0, 0 );
- }
- }
- // constant
- int VideoKamera::getLinks() const
- {
- return pos.x - (int)( gr.x / 2.0 + 0.5 );
- }
- int VideoKamera::getOben() const
- {
- return pos.y - gr.y / 2;
- }
- int VideoKamera::getRechts() const
- {
- return pos.x + gr.x / 2;
- }
- int VideoKamera::getUnten() const
- {
- return pos.y + gr.y / 2;
- }
- bool VideoKamera::istSichtbar( int x, int y ) const
- {
- return ( x >= getLinks() && x < getRechts() && y >= getOben() && y < getUnten() );
- }
- bool VideoKamera::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 VideoKamera::getRX( int mapX ) const
- {
- return rGr.x / 2 - ( pos.x - mapX );
- }
- int VideoKamera::getRY( int mapY ) const
- {
- return rGr.y / 2 - ( pos.y - mapY );
- }
- int VideoKamera::getX() const
- {
- return pos.x;
- }
- int VideoKamera::getY() const
- {
- return pos.y;
- }
|