Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace Liloz
- {
- struct low
- {
- sf::Sprite sprite; //End
- PlayerEntity* liloz;
- void setPosition()
- {
- bool isLeft = RNG::getNumber(2);
- if(isLeft)
- {
- sprite.setPosition(-1 * RNG::getNumber(1250),-1 * RNG::getNumber(1000));
- liloz->isNegativeLeft = true;
- liloz->isNegativeRight = false;
- }
- else {
- sprite.setPosition(RNG::getNumber(1250),RNG::getNumber(1000));
- liloz->isNegativeLeft = false;
- liloz->isNegativeRight = true;
- }
- }
- low(PlayerEntity* liloz)
- :sprite(spriteSheet), liloz(liloz)
- {
- sprite.setTextureRect(sf::IntRect(100,431,80,69));
- sprite.setScale(0.9f,0.9f);
- setPosition();
- liloz->weapon->target = &sprite;
- }
- };
- struct CustomWeapon : public WeaponEntity
- {
- bool forceJump = false;
- bool slowdown = false;
- bool forceLeft = false;
- bool forceRight = false;
- PlayerEntity* player;
- unsigned short powerCounter = 1800;
- unsigned short affectCounter = 350;
- void resetAffects()
- {
- forceJump = false; slowdown = false;
- forceLeft = false; forceRight = false;
- }
- void setAffect()
- {
- unsigned short affect = RNG::getNumber(4);
- if(affect == 3 && powerCounter > 1200)
- forceLeft = true;
- else if(affect == 2 && powerCounter > 1200)
- forceRight = true;
- else if(affect >= 1 && powerCounter > 600)
- slowdown = true;
- else forceJump = true;
- }
- CustomWeapon(PlayerEntity* liloz)
- :WeaponEntity(P90_UPGRADED,1,liloz), player(characterObjects.at(0))
- {
- setAffect();
- }
- void PrimaryFire() override
- {
- if(--affectCounter == 0)
- {
- resetAffects();
- setAffect();
- affectCounter = 350;
- }
- if(slowdown)
- player->movespd = SLOW_X;
- else
- player->movespd = NORMAL_X;
- if(forceLeft)
- player->x_movement -= 2;
- else if(forceRight)
- player->x_movement += 2;
- if(forceJump && player->fallCounter == 0 && player->jumpFrames == 0)
- player->jumpFrames = 12;
- }
- };
- class top : public PlayerEntity
- {
- sf::Sprite sprite;
- CustomWeapon thisWeapon;
- low* thisLow;
- public:
- top()
- :PlayerEntity(PlayerStatus(250),BOT,sprite,MODERATE_X,NORMAL_JUMP), sprite(spriteSheet), thisWeapon(this)
- {
- setTextureRect();
- setAttackingRange();
- weapon = new melee::Soft(this);
- thisLow = new low(this);
- }
- void forceProcess() override
- {
- if(thisWeapon.powerCounter == 0)
- {
- player.setHealthTo(0);
- *enemyCounter -= 1;
- delete thisLow;
- }
- thisWeapon.powerCounter--;
- }
- void setTextureRect() override
- {
- sprite.setTextureRect(INT_RECT(7,2));
- }
- void setAttackingRange() override
- {
- attackRange.setPosition(
- sprite.getPosition().x - attackRange.getTextureRect().width / 2,
- sprite.getPosition().y - attackRange.getTextureRect().height/ 2);
- attackRange.setTextureRect(sf::IntRect(
- 0,0,2 * thisWeapon.powerCounter, 2 * thisWeapon.powerCounter));
- }
- bool checkAttacking() override
- {
- setAttackingRange();
- if(attackRange.getGlobalBounds().contains(weapon->target->getPosition()))
- thisWeapon.PrimaryFire();
- if(attackRange.getGlobalBounds().intersects(weapon->target->getGlobalBounds()))
- thisWeapon.PrimaryFire();
- return false;
- }
- XyMove getInput() override
- {
- if(abs(thisLow->sprite.getPosition().x - sprite.getPosition().x) <= 10)
- {
- thisLow->sprite.move(0,
- thisLow->sprite.getPosition().y < sprite.getPosition().y ? 3 : -3);
- }
- if(thisWeapon->powerCounter <= 600)
- {
- isNegativeLeft = isNegativeRight;
- isNegativeRight = isNegativeRight ? false : true;
- }
- if(thisLow->sprite.getGlobalBounds().intersects(sprite.getGlobalBounds()))
- {
- thisLow->setPosition();
- thisWeapon.powerCounter = 1800;
- }
- app.draw(thisLow->sprite);
- return moveScript;
- }
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement