diff --git a/CEngine.hpp b/CEngine.hpp index a178692..f476c40 100644 --- a/CEngine.hpp +++ b/CEngine.hpp @@ -32,7 +32,7 @@ //#define CE_ALL #define CE_BASIC //#define CE_RPG - //#define CE_PLATEFORME + #define CE_PLATEFORME //#define CE_NETWORK #define CE_DELTA1 diff --git a/include/Object/Render.hpp b/include/Object/Render.hpp index 5c13047..15cc9de 100644 --- a/include/Object/Render.hpp +++ b/include/Object/Render.hpp @@ -41,6 +41,11 @@ class Render int GetBlitX(); int GetBlitY(); + bool GetActivate(); + + void ActivateRender(); + void DeActivateRender(); + void DrawObject(); private: @@ -56,6 +61,7 @@ class Render bool reverse; bool copie; + bool activate; }; #endif diff --git a/include/Object/Script.hpp b/include/Object/Script.hpp index 90afc7f..a10292c 100644 --- a/include/Object/Script.hpp +++ b/include/Object/Script.hpp @@ -29,6 +29,32 @@ class Script Engine * GetEngine(); Object * GetObject(); + //Render + + void SetIt( int v ); + int GetIt(); + + void ReverseRender( bool v ); + bool GetReverse(); + + //Rigidbody + + Body * GetBody(); + + void Move( int x , int y ); + bool CollisionDecor( int x , int y ); + + //Transforms + + int GetX(); + int GetY(); + + void SetX( int x ); + void SetY( int y); + void SetXY( int x , int y ); + + + protected: Object * OConteneur; diff --git a/src/Engine.cpp b/src/Engine.cpp index afd130c..7d7bb85 100644 --- a/src/Engine.cpp +++ b/src/Engine.cpp @@ -121,6 +121,8 @@ void Engine::AddObject( Object * v , int level) nbobject ++; delete Tab; + + return; } void Engine::DelObject( Object * v , bool destroy ) @@ -134,6 +136,10 @@ void Engine::DelObject( Object * v , bool destroy ) if(tabLevel[i]->DelObject(v , destroy ))return; } } + else + { + return; + } } Object ** Tab = listeObject; @@ -201,6 +207,8 @@ void Engine::ExecuteScript() { for( int i = 0 ; i < GetCurrentLevel()->GetNbObject() ; i++ ) { + if(i >= GetCurrentLevel()->GetNbObject())return; + if( GetCurrentLevel()->GetListeObject()[i]->GetEnable()) if(GetCurrentLevel()->GetListeObject()[i]->GetScript()) GetCurrentLevel()->GetListeObject()[i]->GetScript()->Update(); @@ -210,6 +218,8 @@ void Engine::ExecuteScript() { for( int i = 0 ; i < nbobject ; i++ ) { + if(i >= nbobject)return; + if( listeObject[i]->GetEnable()) if(listeObject[i]->GetScript()) listeObject[i]->GetScript()->Update(); @@ -416,6 +426,8 @@ void Engine::ExecuteScriptSecond() { for( int i = 0 ; i < GetCurrentLevel()->GetNbObject() ; i++ ) { + if(i >= GetCurrentLevel()->GetNbObject())return; + if( GetCurrentLevel()->GetListeObject()[i]->GetEnable()) if(GetCurrentLevel()->GetListeObject()[i]->GetScript()) GetCurrentLevel()->GetListeObject()[i]->GetScript()->UpdateEverySecond(); @@ -425,6 +437,8 @@ void Engine::ExecuteScriptSecond() { for( int i = 0 ; i < nbobject ; i++ ) { + if(i >= nbobject)return; + if( listeObject[i]->GetEnable()) if(listeObject[i]->GetScript()) listeObject[i]->GetScript()->UpdateEverySecond(); diff --git a/src/Object/Render.cpp b/src/Object/Render.cpp index 84b7633..7221e76 100644 --- a/src/Object/Render.cpp +++ b/src/Object/Render.cpp @@ -21,23 +21,34 @@ Render::Render(Object * Pointeur) direction = 0; copie = false; + + activate = false; } Render::~Render() { - if(copie)delete TabAnim; + if(copie) + { + delete TabAnim; + + //Bug lorsqu'il y a plusieurs animations + } } void Render::SetRender(Animation * v, int nb) { TabAnim = v; nb_anim = nb; + + activate = true; } void Render::SetRender(Animation & v) { TabAnim = &v; nb_anim = 1; + + activate = true; } void Render::CopieRender(Animation * v, int nb) @@ -51,6 +62,8 @@ void Render::CopieRender(Animation * v, int nb) nb_anim = nb; copie = true; + + activate = true; } void Render::CopieRender(Animation & v) @@ -61,6 +74,8 @@ void Render::CopieRender(Animation & v) nb_anim = 1; copie = true; + + activate = true; } void Render::SetIt(int v) @@ -133,9 +148,24 @@ int Render::GetBlitY() else return 0; } +void Render::ActivateRender() +{ + activate = true; +} + +void Render::DeActivateRender() +{ + activate = false; +} + +bool Render::GetActivate() +{ + return activate; +} + void Render::DrawObject() { - if(TabAnim) + if(TabAnim && activate) { if(!reverse) { diff --git a/src/Object/RigiBodys.cpp b/src/Object/RigiBodys.cpp index 85f0ae1..ec9b337 100644 --- a/src/Object/RigiBodys.cpp +++ b/src/Object/RigiBodys.cpp @@ -25,6 +25,9 @@ RigidBody::RigidBody(Object * Pointeur) R_body.acceleration.x = 0; R_body.acceleration.y = 0; + R_body.force.x = 0; + R_body.force.y = 0; + R_body.mass_data.mass = 0; R_body.mass_data.inv_mass = 0; } @@ -119,7 +122,7 @@ int RigidBody::TryMove( int x ,int y) return 1; } - if( x >= m->tileWidth || y>= m->tileHeight ) + if( x >= m->tileWidth || y>= m->tileHeight || x <= - m->tileWidth || y <= - m->tileHeight) { TryMove( x / 2 , y / 2 ); TryMove( x / 2 , y / 2 ); diff --git a/src/Object/Script.cpp b/src/Object/Script.cpp index fdba05e..4a578ea 100644 --- a/src/Object/Script.cpp +++ b/src/Object/Script.cpp @@ -59,5 +59,85 @@ Engine * Script::GetEngine() return EConteneur; } +//Render + +void Script::SetIt( int v ) +{ + if( GetObject()->GetRender() )GetObject()->GetRender()->SetIt( v ); +} + +int Script::GetIt() +{ + if( GetObject()->GetRender() )return GetObject()->GetRender()->GetIt(); + + return 0; +} + +void Script::ReverseRender( bool v ) +{ + if( GetObject()->GetRender() )GetObject()->GetRender()->ReverseRender( v ); +} + +bool Script::GetReverse() +{ + if( GetObject()->GetRender() )return GetObject()->GetRender()->GetReverse(); + + return 0; +} + +//Rigidbody + +Body * Script::GetBody() +{ + if( GetObject()->GetRigidBody() )return GetObject()->GetRigidBody()->GetBody(); + + return NULL; +} + +void Script::Move( int x , int y ) +{ + if( GetObject()->GetRigidBody() )GetObject()->GetRigidBody()->Move( x , y ); +} + + +bool Script::CollisionDecor( int x , int y ) +{ + if( GetObject()->GetRigidBody() )return GetObject()->GetRigidBody()->CollisionDecor( x , y ); + + return 1; +} + +//Transforms + +int Script::GetX() +{ + if( GetObject()->GetTransform())return GetObject()->GetTransform()->GetX(); + + return 0; +} + +int Script::GetY() +{ + if( GetObject()->GetTransform())return GetObject()->GetTransform()->GetY(); + + return 0; +} + +void Script::SetX( int x ) +{ + if( GetObject()->GetTransform()) GetObject()->GetTransform()->SetX( x ); +} + +void Script::SetY( int y) +{ + if( GetObject()->GetTransform()) GetObject()->GetTransform()->SetY( y ); +} + +void Script::SetXY( int x , int y ) +{ + if( GetObject()->GetTransform()) GetObject()->GetTransform()->SetXY( x , y ); +} + +