Need a unique gift idea?
A Pastebin account makes a great Christmas gift
SHARE
TWEET

Rugby Guy

ThomasDM Nov 4th, 2015 28 Never
Upgrade to PRO!
ENDING IN00days00hours00mins00secs
 
  1. //-----------------------------------------------------
  2. // Name, first name:De Mulder Thomas
  3. // Group: 1DAE2
  4. //-----------------------------------------------------
  5.  
  6. //---------------------------
  7. // Includes
  8. //---------------------------
  9. #include "Rugby.h"
  10.  
  11. //---------------------------
  12. // Defines
  13. //---------------------------
  14. #define GAME_ENGINE (GameEngine::GetSingleton())
  15.  
  16. //---------------------------
  17. // Constructor & Destructor
  18. //---------------------------
  19. Rugby::Rugby(HitRegion *level,DOUBLE2 gravity,int number):
  20.         Enemy(level,gravity,number),
  21.         m_TickCount(0),
  22.         m_HitTopPtr(nullptr),
  23.         m_HitWholePtr(nullptr),
  24.         m_Lives(3),
  25.         m_Timer(20)
  26. {
  27.         m_MonsterRect.top=124;
  28.         m_MonsterRect.bottom=150;
  29.         m_HitTopPtr= new HitRegion();
  30.         m_HitTopPtr->CreateFromRect(0,0,26,3);
  31.         m_HitWholePtr= new HitRegion();
  32.         m_HitWholePtr->CreateFromRect(0,10,26,26);
  33.         m_MonsterVelocity.y=0;
  34. }
  35.  
  36. Rugby::~Rugby()
  37. {
  38.         delete m_HitTopPtr;
  39.         delete m_HitWholePtr;
  40. }
  41.  
  42. //---------------------------
  43. // Methods - Member functions
  44. //---------------------------
  45.  
  46. void Rugby::Paint()
  47. {
  48.         MATRIX3X2 matTransform,matTranslate,matScale,matCenter;
  49.         matTranslate.SetAsTranslate(m_MonsterPos);
  50.         matCenter.SetAsTranslate(-13,0);
  51.         matScale.SetAsScale(m_MonsterScale.x,m_MonsterScale.y);
  52.         matTransform=matCenter*matScale*matTranslate*matCenter.Inverse()*m_MatView;
  53.         GAME_ENGINE->SetTransformMatrix(matTransform);
  54.         GAME_ENGINE->DrawBitmap(m_BmpMonsterPtr,0,0,m_MonsterRect);
  55.  
  56.         /*GAME_ENGINE->SetTransformMatrix(m_MatView);
  57.         GAME_ENGINE->SetColor(COLOR(255,0,0,125));
  58.         GAME_ENGINE->FillHitRegion(m_HitTopPtr);
  59.         GAME_ENGINE->FillHitRegion(m_HitWholePtr);
  60.         GAME_ENGINE->SetColor(COLOR(0,0,0));*/
  61. }
  62. void Rugby::Tick(double deltaTime)
  63. {
  64.         //Bitmaps
  65.         m_TickCount++;
  66.         if(m_TickCount==10)m_TickCount=0;
  67.         m_MonsterRect.left=90+90*(m_TickCount/5);
  68.         m_MonsterRect.right=m_MonsterRect.left+26;
  69.         if(m_MonsterVelocity.y<0)
  70.         {
  71.                 m_MonsterRect.left=30;
  72.                 m_MonsterRect.right=m_MonsterRect.left+16;
  73.         }
  74.  
  75.         if(m_MonsterVelocity.x>0)
  76.                 m_MonsterScale.x=1;
  77.         else m_MonsterScale.x=-1;
  78.         //move
  79.         MoveEnemy(deltaTime);
  80.         //hitregions
  81.         m_HitTopPtr->SetPos(m_MonsterPos);
  82.         m_HitWholePtr->SetPos(m_MonsterPos);
  83. }
  84. void Rugby::VerticalNTopCollision(HitRegion *level)
  85. {
  86.  
  87.  
  88.         HIT hitArr[1];
  89.         DOUBLE2 startPoint = m_MonsterPos;
  90.         DOUBLE2 vector = DOUBLE2(0,22);
  91.  
  92.         startPoint.x = m_MonsterPos.x+4;
  93.         startPoint.y = m_MonsterPos.y+4;
  94.         int numbHits = 0;
  95.         numbHits = level->Raycast(startPoint,vector,hitArr,1);
  96.         if(numbHits > 0)
  97.         {
  98.                 m_MonsterVelocity.y = 0;
  99.                 double depth = vector.Length() * (1-hitArr[0].lambda);
  100.                 m_MonsterPos.y -= depth;
  101.  
  102.         }
  103.         else
  104.         {
  105.                 startPoint.x = m_MonsterPos.x+12;
  106.                 numbHits = 0;
  107.                 numbHits = level->Raycast(startPoint,vector,hitArr,1);
  108.                 if(numbHits > 0)
  109.                 {
  110.                         m_MonsterVelocity.y = 0;
  111.                         double depth = vector.Length() * (1-hitArr[0].lambda);
  112.                         m_MonsterPos.y -= depth;
  113.  
  114.                 }
  115.         }
  116.  
  117. }
  118. void Rugby::HorizontalCollision(HitRegion *level)
  119. {
  120.  
  121.         HIT hitArr[1];
  122.         DOUBLE2 startPoint = m_MonsterPos;
  123.         DOUBLE2 vector = DOUBLE2(13,0);
  124.  
  125.  
  126.         startPoint.y = m_MonsterPos.y+22;
  127.         startPoint.x = m_MonsterPos.x+13;
  128.         int numbHits = 0;
  129.         numbHits = level->Raycast(startPoint,vector,hitArr,1);
  130.         if(numbHits > 0)
  131.         {
  132.  
  133.                 double depth = vector.Length() * (1-hitArr[0].lambda);
  134.                 m_MonsterPos.x -= depth;
  135.                 m_MonsterVelocity.x = -m_MonsterVelocity.x ;
  136.         }
  137.         else{
  138.                 vector = DOUBLE2(-13,0);
  139.                 numbHits = 0;
  140.                 numbHits = level->Raycast(startPoint,vector,hitArr,1);
  141.                 if(numbHits > 0)
  142.                 {
  143.  
  144.                         double depth = vector.Length() * (1-hitArr[0].lambda);
  145.                         m_MonsterPos.x += depth;
  146.                         m_MonsterVelocity.x= -m_MonsterVelocity.x;
  147.  
  148.                 }
  149.  
  150.         }
  151. }
  152. void Rugby::MoveEnemy(double deltaTime)
  153. {
  154.         if(m_MarioPos.x>m_MonsterPos.x)
  155.                 m_DogAccelaration=150;
  156.         else m_DogAccelaration=-150;
  157.  
  158.         //Horizontal movement
  159.         if(m_MonsterVelocity.x<100&&m_MonsterVelocity.x>-100)
  160.                 m_MonsterVelocity.x+=m_DogAccelaration*deltaTime;
  161.         else if(m_MonsterVelocity.x>100)
  162.                 m_MonsterVelocity.x-=2;
  163.         else m_MonsterVelocity.x+=2;
  164.         //gravity
  165.         m_MonsterVelocity+=m_Gravity*deltaTime;
  166.         m_MonsterPos+=m_MonsterVelocity*deltaTime;
  167.  
  168.         //Vertical collision
  169.         if(!(m_MonsterVelocity.y<0))
  170.         {
  171.                 VerticalNTopCollision(m_HitLevelPtr);
  172.                 VerticalNTopCollision(m_HitLevelPlatformPtr);
  173.         }
  174.  
  175.         //Hoirzontal collision
  176.         HorizontalCollision(m_HitLevelPtr);
  177.  
  178. }
  179. bool Rugby::IsHit()
  180. {
  181.         if(m_Timer<20)
  182.                 m_Timer++;
  183.         HIT hitArr[1];
  184.         DOUBLE2 startPoint = m_MarioPos;
  185.         DOUBLE2 vector = DOUBLE2(0,8);
  186.  
  187.         startPoint.x = m_MarioPos.x+4;
  188.         startPoint.y = m_MarioPos.y+24;
  189.         int numbHits = 0;
  190.         numbHits = m_HitTopPtr->Raycast(startPoint,vector,hitArr,1,0);
  191.         if(numbHits > 0&&m_Timer==20)
  192.         {
  193.                 m_Lives--;
  194.                 m_Timer=0;
  195.                 return true;
  196.         }
  197.         else return false;
  198.  
  199. }
  200. void Rugby::SetMarioPos(DOUBLE2 marioPos)
  201. {
  202.         m_MarioPos=marioPos;
  203. }
  204. bool Rugby::IsMarioHit()
  205. {
  206.         HIT hitArr[1];
  207.         DOUBLE2 startPoint = m_MarioPos;
  208.         DOUBLE2 vector = DOUBLE2(8,0);
  209.  
  210.         startPoint.x = m_MarioPos.x+8;
  211.         startPoint.y = m_MarioPos.y+25;
  212.         int numbHits = 0;
  213.         numbHits = m_HitWholePtr->Raycast(startPoint,vector,hitArr,1,0);
  214.         if(numbHits > 0)
  215.         {
  216.                 return true;
  217.         }
  218.         else
  219.         {
  220.                 DOUBLE2 vector = DOUBLE2(-8,0);
  221.                 numbHits = 0;
  222.                 numbHits = m_HitWholePtr->Raycast(startPoint,vector,hitArr,1,0);
  223.                 if(numbHits > 0)
  224.                 {
  225.                         return true;
  226.                 }
  227.                 else return false;
  228.         }
  229.  
  230. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top