Okay, sure I can post the code.
//in between both endzones or in left endzone
int Character::movesRightInEndZoneToo(int facingLeft, const int SCREENHEIGHT, const int SCREENWIDTH, sf::RenderWindow& window, int& goingDown, int& characterLeft, int& characterY, std::vector<platform>& vector, sf::Sprite& marioSpriteL, sf::Sprite& marioSpriteR, Character& character, int& isLeft, float& positionY, float & positionX)
{
goingDown = 1;
//not in this section
if (currentCharacterPlacement >= rightEndzoneLine)
{
//calls while to drop
int val = movesRightInRightEndZoneToo(facingLeft, SCREENHEIGHT, SCREENWIDTH, window, goingDown, characterLeft, characterY, vector, marioSpriteL, marioSpriteR, character, isLeft, positionY, positionX);
{
if (val == -1)
{
return(-1);
}
return(1);
}
}
//not used anymore
sf::Vector2f position = marioSpriteR.getPosition();
int temp1 = position.x;
int temp2 = position.y;
//int notNeeded1, notNeeded2 = 0;
int answer = character.isOnPlatform(window, marioSpriteR, marioSpriteL, SCREENHEIGHT, goingDown, vector, SCREENWIDTH, characterLeft, characterY, positionY, positionX);
//on platform
if (answer == 1)
{
//moving right in left hand endzone - on platform
if (currentCharacterPlacement <= leftEndzoneLine)
{
//move platforms
//platform::SearchVectorForPlatforms(vector, window, 0.0f, 0.0f, 0);
currentCharacterPlacement = currentCharacterPlacement + VELOCITYX;
positionX = positionX + VELOCITYX;
marioSpriteL.setPosition(positionX, positionY);
marioSpriteR.setPosition(positionX, positionY);
window.clear();
window.draw(marioSpriteL);
platform::SearchVectorForPlatforms(vector, window, 0.0f, 0.0f, 0);
window.display();
//return(1);
//currentLeftEdge = currentLeftEdge + VELOCITYX;
}
//moving right midzone - om platform
else
{
//platform::SearchVectorForPlatforms(vector, window, -VELOCITYX, 0.0f, 0);
currentCharacterPlacement = currentCharacterPlacement + VELOCITYX;
marioSpriteL.setPosition(POSXCENTER, positionY);
marioSpriteR.setPosition(POSXCENTER, positionY);
window.clear();
window.draw(marioSpriteL);
platform::SearchVectorForPlatforms(vector, window, -VELOCITYX, 0.0f, 0);
window.display();
//return(1);
//currentLeftEdge = currentLeftEdge + VELOCITYX;
}
//is still on platform?
answer = character.isOnPlatform(window, marioSpriteR, marioSpriteL, SCREENHEIGHT, goingDown, vector, SCREENWIDTH, characterLeft, characterY, positionY, positionX);
//was on, moved off
if (answer == 0)
{
//drop - off platform
//remove these:
int no = 0;
int no1 = 0;
int goingDown2 = 0;
//calls fall
return(-1);
//whileFunction(facingLeft, character, clock, window, marioSpriteR, marioSpriteL, SCREENHEIGHT, goingDown, vector, SCREENWIDTH, no, no1, goingDown2, positionY, positionX);
}
//still on platform after move
else
{
//in mid zone
if (currentCharacterPlacement >= leftEndzoneLine)
{
//platform::SearchVectorForPlatforms(vector, window, 0, 0.0f, 0);
currentCharacterPlacement = currentCharacterPlacement + VELOCITYX;
//currentLeftEdge = currentLeftEdge - VELOCITYX;
//positionX = positionX + VELOCITYX;
marioSpriteL.setPosition(POSXCENTER, positionY);
marioSpriteR.setPosition(POSXCENTER, positionY);
window.clear();
window.draw(marioSpriteL);
platform::SearchVectorForPlatforms(vector, window, -VELOCITYX, 0.0f, 0);
window.display();
return(1);
}
//in leftzone
else
{
currentCharacterPlacement = currentCharacterPlacement + VELOCITYX;
positionX = positionX + VELOCITYX;
marioSpriteL.setPosition(positionX, positionY);
marioSpriteR.setPosition(positionX, positionY);
window.clear();
window.draw(marioSpriteL);
platform::SearchVectorForPlatforms(vector, window,0, 0.0f, 0);
window.display();
return(1);
}
}
}
//not on platform
else
{
//not on platform
if(positionY >= SCREENHEIGHT - 76)
{
//not on platform
//left endzone
if (currentCharacterPlacement <= leftEndzoneLine)
{
//platform::SearchVectorForPlatforms(vector, window, -2.0f, 0.0f, 0);
currentCharacterPlacement = currentCharacterPlacement + VELOCITYX;
positionX = positionX + VELOCITYX;
//currentLeftEdge = currentLeftEdge + VELOCITYX;
//isLeft = 0;
marioSpriteL.setPosition(positionX, positionY);
marioSpriteR.setPosition(positionX, positionY);
window.clear();
window.draw(marioSpriteL);
platform::SearchVectorForPlatforms(vector, window, 0, 0, 1);
window.display();
return(1);
}
//in middle - moving right - not on platform
else
{
currentCharacterPlacement = currentCharacterPlacement + VELOCITYX;
//currentLeftEdge = currentLeftEdge + VELOCITYX;
marioSpriteL.setPosition(POSXCENTER, positionY);
marioSpriteR.setPosition(POSXCENTER, positionY);
window.clear();
window.draw(marioSpriteL);
platform::SearchVectorForPlatforms(vector, window, -VELOCITYX, 0.0f, 0);
window.display();
return(1);
}
}//is not on ground
else
{
int no = 0;
int goingDown2 = 0;
//whileFunction(facingLeft, character, clock, window, marioSpriteR, marioSpriteL, SCREENHEIGHT, goingDown, vector, SCREENWIDTH, no, no, goingDown2, positionY, positionX);
return(-1);
}
}
return(1);
}
This is the original header:
int movesRightInEndZoneToo(int facingLeft, const int SCREENHEIGHT, const int SCREENWIDTH, sf::RenderWindow& window, int& goingDown, int& characterLeft, int& characterY, std::vector<platform>& vector, sf::Sprite& marioSpriteL, sf::Sprite& marioSpriteR, Character& character, int& isLeft, float& positionY, float &positionX);
This is the new header:
int movesRightInEndZoneToo(int facingLeft, const int SCREENHEIGHT, const int SCREENWIDTH, sf::RenderWindow* window, int* goingDown, int& characterLeft, int& characterY, std::vector<platform>* vector, sf::Sprite* marioSpriteL, sf::Sprite* marioSpriteR, Character* character, int* isLeft, float* positionY, float *positionX);
Description:
When calling the function with a different sprite, the original sprite moves to it's position and does the two pixel movement.
I'm sorry if this should have been in the beginner's forum.
Thank you,
Josheir