setup complete - visible character
This commit is contained in:
96
src/components/player.cpp
Normal file
96
src/components/player.cpp
Normal file
@@ -0,0 +1,96 @@
|
||||
#include "player.h"
|
||||
|
||||
Player::Player(glm::vec2 pos, glm::vec2 size)
|
||||
:Position(pos), Size(size)
|
||||
{
|
||||
ResourceManager::LoadTexture("../art/player/playerAnim.png", "idle1");
|
||||
this->Sprite = ResourceManager::GetTexture("idle1");
|
||||
}
|
||||
Player::~Player(){}
|
||||
void Player::drawPlayer(SpriteRenderer &renderer) {
|
||||
renderer.DrawSprite(this->Sprite, this->Position, this->spriteUVs, this->Size, 0.0f);
|
||||
}
|
||||
|
||||
void Player::calcPos(float dt) {
|
||||
//walking
|
||||
if (this->hSpeed && this->hSpeed < maxRunningSpeed && this->hSpeed > -maxRunningSpeed) {
|
||||
this->state = WALK;
|
||||
}
|
||||
//running
|
||||
else if (this->hSpeed >= this->maxRunningSpeed || this->hSpeed <= -this->maxRunningSpeed) {
|
||||
this->state = RUN;
|
||||
}
|
||||
else { this->state = IDLE; }
|
||||
//vSpeed
|
||||
if (this->onGround) {
|
||||
this->vSpeed = 0.0f;
|
||||
this->onGround = 0;
|
||||
}
|
||||
else if (!this->onGround && this->vSpeed <= maxGravity) {
|
||||
this->vSpeed += gravity*dt; this->state = JUMP;
|
||||
}
|
||||
else { this->vSpeed = maxGravity; this->state = JUMP; }
|
||||
|
||||
this->Position += glm::vec2(this->hSpeed, this->vSpeed) *dt;
|
||||
|
||||
this->playerBody.min = c2V(this->Position.x + 50.0, this->Position.y + 50.0);
|
||||
this->playerBody.max = c2V(this->Position.x - 50.0 + this->Size.x, this->Position.y + this->Size.y);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Player::animSprite(float dt) {
|
||||
switch (state) {
|
||||
case IDLE:
|
||||
this->numTiles = 6;
|
||||
this->animSpeed = 4.0f;
|
||||
this->index = 50;
|
||||
break;
|
||||
case WALK:
|
||||
this->numTiles = 8;
|
||||
this->animSpeed = 6.5f;
|
||||
this->index = 40;
|
||||
break;
|
||||
case RUN:
|
||||
this->numTiles = 14;
|
||||
this->animSpeed = 12.0f;
|
||||
this->index = 80;
|
||||
break;
|
||||
case JUMP:
|
||||
this->numTiles = 1;
|
||||
this->index = 100;
|
||||
//start jump
|
||||
if (this->vSpeed >= this->jumpStrength && this->vSpeed <= this->jumpStrength*7.5f/9.0f) {
|
||||
this->index = 110;
|
||||
}
|
||||
//medium
|
||||
else if (this->vSpeed >= this->jumpStrength * 7.5f / 9.0f && this->vSpeed <= this->jumpStrength * 5.0f / 9.0f) {
|
||||
this->index = 111;
|
||||
}
|
||||
//high
|
||||
else if (this->vSpeed >= this->jumpStrength * 5.0 / 9.0f && this->vSpeed <= this->jumpStrength * 2.0f / 9.0f) {
|
||||
this->index = 112;
|
||||
}
|
||||
//hover1
|
||||
else if (this->vSpeed >= this->jumpStrength * 2.0 / 9.0f && this->vSpeed <= this->jumpStrength * 0.0f / 9.0f) {
|
||||
this->index = 113;
|
||||
}
|
||||
//hover2
|
||||
else if (this->vSpeed >= this->jumpStrength * 0.0 / 9.0f && this->vSpeed <= -this->jumpStrength * 2.0f / 9.0f) {
|
||||
this->index = 114;
|
||||
}
|
||||
//falling
|
||||
else if (this->vSpeed >= -this->jumpStrength * 2.0 / 9.0f /*&& this->vSpeed <= -this->jumpStrength * 6.0f / 9.0f*/) {
|
||||
this->index = 115;
|
||||
}
|
||||
break;
|
||||
}
|
||||
this->animTime += animSpeed*dt;
|
||||
this->index += (int)this->animTime % this->numTiles;
|
||||
this->spriteUVs = this->spriteSheet->getUVs(this->index);
|
||||
if (this->direction == -1) {
|
||||
float z = this->spriteUVs.z;
|
||||
this->spriteUVs.z = this->spriteUVs.x;
|
||||
this->spriteUVs.x = z;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user