PacMan/iaghost1.cpp

140 lines
4.0 KiB
C++
Raw Normal View History

2016-04-30 13:47:44 +02:00
#include "..\C-Engine\CHeader.hpp"
#include "GUI.hpp"
#include "iaghost1.hpp"
void IA1::Start()
{
couldown=0;
2016-05-02 20:10:33 +02:00
direction=0;
directionuser=0;
2016-04-30 13:47:44 +02:00
}
void IA1::UpdateEverySecond()
{
if (couldown==5)
{
directionuser = rand_int(4) + 1;
couldown=0;
}
couldown++;
}
void IA1::Initialisation(Script_GUI * v)
{
SGUI = v ;
}
void IA1::Update()
{
int hasard;
if(SGUI->GetVulnerability() > 0)SetIt(1);
else SetIt(0);
//Intersection//
2016-05-02 20:10:33 +02:00
if(!GetObject()->CollisionTag("Jail"))
2016-04-30 13:47:44 +02:00
{
2016-05-02 20:10:33 +02:00
if(!(!GetObject()->GetRigibody()->CollisionDecor(GetX(), GetY() + 1) && !GetObject()->GetRigibody()->CollisionDecor(GetX() , GetY() - 1) &&!GetObject()->GetRigibody()->CollisionDecor(GetX() + 1 , GetY()) && !GetObject()->GetRigibody()->CollisionDecor(GetX() - 1 , GetY())))
{
switch(direction)
{
case 1:
if(!GetObject()->GetRigibody()->CollisionDecor(GetX(), GetY() + 1) || !GetObject()->GetRigibody()->CollisionDecor(GetX() , GetY() - 1))
{
hasard = rand_int(3) + 1;
switch(hasard)
{
case 1: directionuser = 1;break;
case 2: directionuser = 2;break;
case 3: directionuser = 4;break;
}
}
break;
case 2:
if(!GetObject()->GetRigibody()->CollisionDecor(GetX() + 1 , GetY()) || !GetObject()->GetRigibody()->CollisionDecor(GetX() - 1 , GetY()))
{
hasard = rand_int(3) + 1;
switch(hasard)
{
case 1: directionuser = 2;break;
case 2: directionuser = 1;break;
case 3: directionuser = 3;break;
}
}
break;
case 3:
if(!GetObject()->GetRigibody()->CollisionDecor(GetX(), GetY() + 1) || !GetObject()->GetRigibody()->CollisionDecor(GetX(), GetY() - 1))
{
hasard = rand_int(3) + 1;
switch(hasard)
{
case 1: directionuser = 3;break;
case 2: directionuser = 2;break;
case 3: directionuser = 4;break;
}
}
break;
case 4:
if(!GetObject()->GetRigibody()->CollisionDecor(GetX() + 1 , GetY()) || !GetObject()->GetRigibody()->CollisionDecor(GetX() - 1 , GetY()))
{
hasard = rand_int(3) + 1;
switch(hasard)
{
case 1: directionuser = 4;break;
case 2: directionuser = 1;break;
case 3: directionuser = 3;break;
}
}
break;
}
}
}
else
2016-04-30 13:47:44 +02:00
{
2016-05-02 20:10:33 +02:00
if(GetObject()->GetRigibody()->CollisionDecor(GetX() , GetY()+1))
2016-04-30 13:47:44 +02:00
{
2016-05-02 20:10:33 +02:00
Object * Jail = GetObject()->CollisionTagO("Jail");
if(Jail != NULL)
{
if(Jail->GetTransforms()->GetX() + 20 < GetX())directionuser = 4;
else directionuser = 2;
}
2016-04-30 13:47:44 +02:00
}
2016-05-02 20:10:33 +02:00
else directionuser = 1;
2016-04-30 13:47:44 +02:00
}
//***********Deplacement***********//
if(!GetObject()->GetRigibody()->CollisionDecor( GetX() + (directionuser == 2) - (directionuser == 4) , GetY() + (directionuser == 1) - (directionuser == 3) ))direction = directionuser;
switch(direction)
{
case 1: Move(0,1); break;
case 2: Move(1,0); break;
case 3: Move(0,-1); break;
case 4: Move(-1,0); break;
}
//************//
if(GetObject()->CollisionTag("TP1"))
{
GetObject()->GetTransforms()->SetXY(229,138);
direction = 4;
}
if(GetObject()->CollisionTag("TP2"))
{
GetObject()->GetTransforms()->SetXY(2,138);
direction = 2;
}
}