178 lines
4.7 KiB
C++
178 lines
4.7 KiB
C++
#include "..\C-Engine\CHeader.hpp"
|
|
#include "control.hpp"
|
|
|
|
void Control::Initialisation(Script_GUI * v)
|
|
{
|
|
SGUI = v ;
|
|
}
|
|
|
|
void Control::Start()
|
|
{
|
|
direction = 0;
|
|
directionuser = 0;
|
|
objectif = 0;
|
|
|
|
for( int i = 0; i < GetEngine()->GetMap()->nbtiles_largeur_monde; i++)
|
|
{
|
|
for( int j = 0 ; j < GetEngine()->GetMap()->nbtiles_hauteur_monde; j++)
|
|
{
|
|
|
|
switch(GetEngine()->GetMap()->GetIdMap(i,j))
|
|
{
|
|
case 15: case 16: objectif ++; break;
|
|
default: break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void Control::Update()
|
|
{
|
|
|
|
GetObject()->GetRender()->SetIt(0);
|
|
|
|
switch(input_dir4())
|
|
{
|
|
case 2: directionuser = 3; break;
|
|
case 4: directionuser = 4; break;
|
|
case 6: directionuser = 2; break;
|
|
case 8: directionuser = 1; break;
|
|
}
|
|
|
|
|
|
if(!GetObject()->GetRigibody()->CollisionDecor( GetX() + (directionuser == 2) - (directionuser == 4) , GetY() + (directionuser == 1) - (directionuser == 3) ))direction = directionuser;
|
|
|
|
|
|
switch(direction)
|
|
{
|
|
case 1: Move(0,1); GetObject()->GetRender()->SetDirection(90);GetObject()->GetRender()->ReverseRender(false); break;
|
|
case 2: Move(1,0); GetObject()->GetRender()->SetDirection(0); GetObject()->GetRender()->ReverseRender(false);break;
|
|
case 3: Move(0,-1); GetObject()->GetRender()->SetDirection(270); GetObject()->GetRender()->ReverseRender(false);break;
|
|
case 4: Move(-1,0); GetObject()->GetRender()->SetDirection(0); GetObject()->GetRender()->ReverseRender(true);break;
|
|
}
|
|
|
|
int x , y;
|
|
|
|
x = GetX()/3 + 2;
|
|
y = 91 - GetY()/3 - 3;
|
|
|
|
switch(GetEngine()->GetMap()->GetIdMap( x , y ))
|
|
{
|
|
case 15 :
|
|
GetEngine()->GetMap()->ReplaceIdMap(x , y, 0x00);
|
|
SGUI->AddScore(200);
|
|
objectif--;
|
|
break;
|
|
case 16:
|
|
GetEngine()->GetMap()->ReplaceIdMap(x , y, 0x00);
|
|
GetEngine()->GetMap()->ReplaceIdMap(x+1 , y, 0x00);
|
|
GetEngine()->GetMap()->ReplaceIdMap(x , y+1, 0x00);
|
|
GetEngine()->GetMap()->ReplaceIdMap(x+1 , y+1, 0x00);
|
|
SGUI->AddScore(500);
|
|
SGUI->SetVulnerability(8);
|
|
objectif--;
|
|
break;
|
|
case 17:
|
|
GetEngine()->GetMap()->ReplaceIdMap(x , y, 0x00);
|
|
GetEngine()->GetMap()->ReplaceIdMap(x-1 , y, 0x00);
|
|
GetEngine()->GetMap()->ReplaceIdMap(x , y+1, 0x00);
|
|
GetEngine()->GetMap()->ReplaceIdMap(x-1 , y+1, 0x00);
|
|
SGUI->AddScore(500);
|
|
SGUI->SetVulnerability(8);
|
|
objectif--;
|
|
break;
|
|
case 18:
|
|
GetEngine()->GetMap()->ReplaceIdMap(x , y, 0x00);
|
|
GetEngine()->GetMap()->ReplaceIdMap(x+1 , y, 0x00);
|
|
GetEngine()->GetMap()->ReplaceIdMap(x , y-1, 0x00);
|
|
GetEngine()->GetMap()->ReplaceIdMap(x+1 , y-1, 0x00);
|
|
SGUI->AddScore(500);
|
|
SGUI->SetVulnerability(8);
|
|
objectif--;
|
|
break;
|
|
case 19:
|
|
GetEngine()->GetMap()->ReplaceIdMap(x , y, 0x00);
|
|
GetEngine()->GetMap()->ReplaceIdMap(x-1 , y, 0x00);
|
|
GetEngine()->GetMap()->ReplaceIdMap(x , y-1, 0x00);
|
|
GetEngine()->GetMap()->ReplaceIdMap(x-1 , y-1, 0x00);
|
|
SGUI->AddScore(500);
|
|
SGUI->SetVulnerability(8);
|
|
objectif--;
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
|
|
}
|
|
|
|
if(objectif <= 0)
|
|
{
|
|
ML_clear_vram();
|
|
PrintXY(30,28,"You Win",0);
|
|
ML_display_vram();
|
|
Sleep(1500);
|
|
GetEngine()->StopGame();
|
|
}
|
|
|
|
Object * Ennemi = GetObject()->CollisionTagO("Ghost");
|
|
|
|
if(Ennemi != NULL)
|
|
{
|
|
if(SGUI->GetVulnerability() <= 0)Die();
|
|
else Ennemi->GetTransforms()->SetXY(116,131);
|
|
}
|
|
|
|
if(GetObject()->CollisionTag("TP1"))
|
|
{
|
|
GetObject()->GetTransforms()->SetXY(229,138);
|
|
direction = 4;
|
|
}
|
|
|
|
if(GetObject()->CollisionTag("TP2"))
|
|
{
|
|
GetObject()->GetTransforms()->SetXY(2,138);
|
|
direction = 2;
|
|
}
|
|
|
|
if(input_trigger(K_EXIT))GetEngine()->StopGame();
|
|
|
|
GetEngine()->MiddleScreen(GetX() + 18 , GetY() + 8 ,false);
|
|
}
|
|
|
|
void Control::Die()
|
|
{
|
|
bool cinematic = true;
|
|
|
|
GetObject()->GetRender()->SetIt(1);
|
|
|
|
while(cinematic == true)
|
|
{
|
|
|
|
ML_clear_vram();
|
|
|
|
GetEngine()->GetMap()->AfficherMap();
|
|
GetObject()->GetRender()->DrawObject();
|
|
|
|
ML_display_vram();
|
|
|
|
if(GetObject()->GetRender()->GetisEnd())cinematic = false;
|
|
|
|
Sleep(100);
|
|
}
|
|
|
|
ML_clear_vram();
|
|
|
|
GetEngine()->GetMap()->AfficherMap();
|
|
|
|
ML_display_vram();
|
|
|
|
Sleep(250);
|
|
|
|
GetObject()->GetRender()->SetIt(0);
|
|
|
|
GetObject()->GetTransforms()->SetXY(116, 57);
|
|
|
|
SGUI->DelVie(1);
|
|
}
|
|
|