Merge branch 'SQC19_Booster' into online_boosts

This commit is contained in:
MarcEricMartel
2023-12-18 11:19:52 -05:00
15 changed files with 216 additions and 135 deletions

View File

@@ -131,6 +131,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="booster.h" />
<ClInclude Include="array2d.h" />
<ClInclude Include="array3d.h" />
<ClInclude Include="blockinfo.h" />
@@ -147,6 +148,7 @@
<ClInclude Include="world.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="booster.cpp" />
<ClCompile Include="blockinfo.cpp" />
<ClCompile Include="boostinfo.cpp" />
<ClCompile Include="bullet.cpp" />

View File

@@ -54,6 +54,9 @@
<ClInclude Include="transformation.h">
<Filter>Fichiers d%27en-tête</Filter>
</ClInclude>
<ClInclude Include="booster.h">
<Filter>Fichiers d%27en-tête</Filter>
</ClInclude>
<ClInclude Include="boostinfo.h">
<Filter>Fichiers d%27en-tête</Filter>
</ClInclude>
@@ -83,6 +86,9 @@
<ClCompile Include="transformation.cpp">
<Filter>Fichiers sources</Filter>
</ClCompile>
<ClCompile Include="booster.cpp">
<Filter>Fichiers sources</Filter>
</ClCompile>
<ClCompile Include="boostinfo.cpp">
<Filter>Fichiers sources</Filter>
</ClCompile>

38
SQCSim-common/booster.cpp Normal file
View File

@@ -0,0 +1,38 @@
#include "booster.h"
Booster::Booster()
{
}
Booster::Booster(Vector3f tpos, BOOST_TYPE ttype)
{
pos = tpos;
type = ttype;
available = true;
}
Booster::~Booster()
{
}
Vector3f Booster::GetPosition()
{
return pos;
}
BOOST_TYPE Booster::GetType()
{
return type;
}
bool Booster::GetAvailability()
{
return available;
}
void Booster::SetAvailability(bool value)
{
available = value;
}

20
SQCSim-common/booster.h Normal file
View File

@@ -0,0 +1,20 @@
#ifndef BOOSTER_H__
#define BOOSTER_H__
#include "define.h"
#include "vector3.h"
class Booster {
public:
Booster();
Booster(Vector3f tpos, BOOST_TYPE ttype);
~Booster();
Vector3f GetPosition();
BOOST_TYPE GetType();
bool GetAvailability();
void SetAvailability(bool value);
private:
Vector3f pos;
BOOST_TYPE type;
bool available;
};
#endif

View File

@@ -31,10 +31,11 @@
#define TEXTURE_SIZE 512
#define MAX_BULLETS 512
#define NB_BOOST 2
#define TIME_SPEED_BOOST 10 //secondes
#define TIME_DAMAGE_BOOST 10 //secondes
#define TIME_INVINCIBLE_BOOST 4 //secondes
#define STRENGTH_SPEED_BOOST 10 //Pourcentage
#define STRENGTH_SPEED_BOOST 1000 //Pourcentage
#define BULLET_TIME .2 //secondes
#define SYNC_ACC 600 // ms

View File

@@ -68,8 +68,8 @@ Vector3f Player::GetInput(bool front, bool back, bool left, bool right, bool jum
delta.x *= .6f;
delta.z *= .6f;
if ((jump || shoot ) && !m_airborne) {
delta.y += jump? .32f: shoot? .1f : 0.f;
if ((jump || shoot) && !m_airborne) {
delta.y += jump ? .32f : shoot ? .1f : 0.f;
m_airborne = true;
}
if (boostspeed)
@@ -84,7 +84,7 @@ Vector3f Player::GetInput(bool front, bool back, bool left, bool right, bool jum
return delta;
}
Player::Sound Player::ApplyPhysics(Vector3f input, World* world, float elapsedTime) {
Player::Sound Player::ApplyPhysics(Vector3f input, World* world, float elapsedTime, Booster booster_table[]) {
Player::Sound snd = Player::Sound::NOSOUND;
static float timing = 0.f;
/* Gestion de collisions */
@@ -184,33 +184,50 @@ Player::Sound Player::ApplyPhysics(Vector3f input, World* world, float elapsedTi
else isStep = false;
m_POV = m_position.y;
m_POV += m_airborne ? 0 : (sin(bobbingtime) - 0.5f) * (abs(m_velocity.x) + abs(m_velocity.z)) * .2f;
TakeBooster(booster_table, elapsedTime);
RemoveBooster(elapsedTime);
return snd;
}
void Player::ApplyTransformation(Transformation& transformation, bool rel, bool rot) const {
transformation.ApplyRotation(-m_rotX, 1, 0, 0);
transformation.ApplyRotation(-m_rotY, 0, 1, 0);
if (rel) transformation.ApplyTranslation(-GetPOV());
}
void Player::GetBooster(Booster boosttype)
void Player::TakeBooster(Booster booster_table[], float elapsedtime)
{
if (boosttype == SPEED)
Vector3f playerpos = GetPosition();
for (int i = 0; i < sizeof(booster_table); i++)
{
Vector3f pos = booster_table[i].GetPosition();
if (abs(playerpos.x - pos.x) <= 0.5f && abs(playerpos.y - pos.y) <= 1.0f && abs(playerpos.z - pos.z) <= 0.5f && booster_table[i].GetAvailability() == true)
{
GetBooster(booster_table[i].GetType(), elapsedtime);
booster_table[i].SetAvailability(false);
break;
}
}
}
void Player::GetBooster(BOOST_TYPE boosttype, float elapsedtime)
{
if (boosttype == BTYPE_SPEED)
{
boostspeed = true;
timeboostspeed = 0;
}
if (boosttype == HEAL)
if (boosttype == BTYPE_HEAL)
{
m_hp = 100;
m_hp = 1.0f;
}
if (boosttype == DAMAGE)
if (boosttype == BTYPE_DAMAGE)
{
boostdamage = true;
timeboostdamage = 0;
}
if (boosttype == INVINCIBLE)
if (boosttype == BTYPE_INVINCIBLE)
{
boostinvincible = true;
boostinvincible = 0;
@@ -221,19 +238,17 @@ void Player::RemoveBooster(float elapsedtime)
if (boostspeed)
{
timeboostspeed += elapsedtime;
if (timeboostspeed >= TIME_SPEED_BOOST)
if (timeboostspeed >= TIME_SPEED_BOOST && boostspeed == true)
boostspeed = false;
}
if (boostdamage)
{
timeboostdamage += elapsedtime;
if (timeboostdamage >= TIME_DAMAGE_BOOST)
if (timeboostdamage >= TIME_DAMAGE_BOOST && boostdamage == true)
boostdamage = false;
}
if (boostinvincible)
{
timeboostinvincible += elapsedtime;
if (timeboostinvincible >= TIME_INVINCIBLE_BOOST)
if (timeboostinvincible >= TIME_INVINCIBLE_BOOST && boostinvincible == true)
boostinvincible = false;
}
}

View File

@@ -4,6 +4,8 @@
#include <cmath>
#include "transformation.h"
#include "vector3.h"
#include "booster.h"
#include "define.h"
class World;
@@ -11,7 +13,7 @@ class World;
class Player {
public:
enum Sound { NOSOUND, STEP, FALL };
enum Booster { SPEED, HEAL, DAMAGE, INVINCIBLE };
//enum BoosterType { SPEED, HEAL, DAMAGE, INVINCIBLE };
Player(const Vector3f& position, float rotX = 0, float rotY = 0);
~Player();
@@ -19,8 +21,9 @@ public:
void TurnLeftRight(float value, float sensitivity);
void TurnTopBottom(float value, float sensitivity);
Vector3f GetInput(bool front, bool back, bool left, bool right, bool jump, bool dash, float elapsedTime);
Sound ApplyPhysics(Vector3f input, World* world, float elapsedTime);
void GetBooster(Booster boosttype);
Sound ApplyPhysics(Vector3f input, World* world, float elapsedTime, Booster booster_table[]);
void TakeBooster(Booster booster_table[], float elapsedTime);
void GetBooster(BOOST_TYPE boosttype, float elapsedTime);
void RemoveBooster(float elapsedtime);
void ApplyTransformation(Transformation& transformation, bool rel = true, bool rot = true) const;
@@ -50,9 +53,9 @@ public:
bool Eulogy = false;
bool boostspeed;
bool boostdamage;
bool boostinvincible;
bool boostspeed = false;
bool boostdamage = false;
bool boostinvincible = false;
private:
uint64_t getId() const;
@@ -77,7 +80,6 @@ protected:
bool m_airborne;
Vector3f InterpolatePosition(const Vector3f& vec1, const Vector3f& vec2, const Timestamp& tim1, const Timestamp& tim2, const Timestamp& now);
};
#endif //_PLAYER_H__