Merge branch 'GameLogic' of https://github.com/dean11/Danbias into GameLogic
This commit is contained in:
commit
d145853d34
|
@ -0,0 +1,71 @@
|
|||
#include "AttatchmentGun.h"
|
||||
#include "PhysicsAPI.h"
|
||||
#include "GameLogicStates.h"
|
||||
#include "Game.h"
|
||||
using namespace GameLogic;
|
||||
|
||||
|
||||
|
||||
AttatchmentGun::AttatchmentGun(void)
|
||||
{
|
||||
this->owner = 0;
|
||||
this->damage = 0.0f;
|
||||
}
|
||||
|
||||
AttatchmentGun::AttatchmentGun(Player &owner)
|
||||
{
|
||||
this->owner = &owner;
|
||||
this->damage = standardDamage;
|
||||
}
|
||||
|
||||
|
||||
AttatchmentGun::~AttatchmentGun(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/********************************************************
|
||||
* Uses the attatchment and will from here switch case the different WEAPON_FIRE's that are to be used
|
||||
********************************************************/
|
||||
void AttatchmentGun::UseAttatchment(const GameLogic::WEAPON_FIRE &usage, float dt)
|
||||
{
|
||||
//switch case to determin what functionallity to use in the attatchment
|
||||
switch (usage)
|
||||
{
|
||||
case WEAPON_FIRE::WEAPON_USE_PRIMARY_PRESS:
|
||||
//skjut här
|
||||
break;
|
||||
|
||||
case WEAPON_FIRE::WEAPON_USE_SECONDARY_PRESS:
|
||||
break;
|
||||
|
||||
case WEAPON_USE_SECONDARY_RELEASE:
|
||||
break;
|
||||
|
||||
case WEAPON_FIRE::WEAPON_USE_UTILLITY_PRESS:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void AttatchmentGun::Update(float dt)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void AttatchmentGun::ShootBullet(const WEAPON_FIRE &usage, float dt)
|
||||
{
|
||||
Oyster::Collision3D::Ray *hitRay;
|
||||
Oyster::Math::Float3 pos = owner->GetRigidBody()->GetState().centerPos;
|
||||
Oyster::Math::Float3 look = owner->GetLookDir().GetNormalized();
|
||||
Oyster::Math::Float hitDamage = this->damage;
|
||||
|
||||
firedBullet bullet;
|
||||
bullet.hitDamage = hitDamage;
|
||||
|
||||
hitRay = new Oyster::Collision3D::Ray(pos,look);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
//////////////////////////////////////////////////
|
||||
//Created by Erik of the GameLogic team
|
||||
//////////////////////////////////////////////////
|
||||
#ifndef ATTATCHMENTGUN_H
|
||||
#define ATTATCHMENTGUN_H
|
||||
#include "IAttatchment.h"
|
||||
|
||||
|
||||
|
||||
namespace GameLogic
|
||||
{
|
||||
const Oyster::Math::Float standardDamage = 10;
|
||||
|
||||
class AttatchmentGun : public IAttatchment
|
||||
{
|
||||
public:
|
||||
AttatchmentGun(void);
|
||||
AttatchmentGun(Player &owner);
|
||||
~AttatchmentGun(void);
|
||||
|
||||
|
||||
void UseAttatchment(const WEAPON_FIRE &usage, float dt);
|
||||
void Update(float dt);
|
||||
|
||||
private:
|
||||
Oyster::Math::Float damage;
|
||||
private:
|
||||
void ShootBullet(const WEAPON_FIRE &usage, float dt);
|
||||
|
||||
};
|
||||
}
|
||||
#endif
|
||||
|
|
@ -45,7 +45,7 @@ void AttatchmentMassDriver::UseAttatchment(const GameLogic::WEAPON_FIRE &usage,
|
|||
//switch case to determin what functionallity to use in the attatchment
|
||||
switch (usage)
|
||||
{
|
||||
case WEAPON_FIRE::WEAPON_USE_PRIMARY_PRESS:
|
||||
case WEAPON_USE_PRIMARY_PRESS:
|
||||
//if(currentEnergy >= 9.0f)
|
||||
{
|
||||
currentEnergy -= 9.0f;
|
||||
|
@ -53,23 +53,24 @@ void AttatchmentMassDriver::UseAttatchment(const GameLogic::WEAPON_FIRE &usage,
|
|||
// add CD
|
||||
((Game*)&Game::Instance())->onActionEventFnc(this->owner, WeaponAction::WeaponAction_PrimaryShoot);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case WEAPON_FIRE::WEAPON_USE_SECONDARY_PRESS:
|
||||
case WEAPON_USE_SECONDARY_PRESS:
|
||||
if(this->hasObject)
|
||||
{
|
||||
((DynamicObject*)(this->heldObject->GetCustomTag()))->RemoveManipulation();
|
||||
this->hasObject = false;
|
||||
this->heldObject = NULL;
|
||||
goto CASE_WEAPON_INTERRUPT;
|
||||
}
|
||||
else if( currentEnergy >= 1.0f )
|
||||
{
|
||||
currentEnergy -= 1.0f;
|
||||
if(!this->hasObject)
|
||||
if(this->hasObject)
|
||||
{
|
||||
ForcePull(usage,dt);
|
||||
// add CD
|
||||
((Game*)&Game::Instance())->onActionEventFnc(this->owner, WeaponAction::WeaponAction_SecondaryShoot);
|
||||
currentEnergy -= 1.0f;
|
||||
if(!this->hasObject)
|
||||
{
|
||||
ForcePull(usage,dt);
|
||||
// add CD
|
||||
((Game*)&Game::Instance())->onActionEventFnc(this->owner, WeaponAction::WeaponAction_SecondaryShoot);
|
||||
}
|
||||
}
|
||||
}
|
||||
else //Energy drained, release object
|
||||
|
@ -78,20 +79,27 @@ void AttatchmentMassDriver::UseAttatchment(const GameLogic::WEAPON_FIRE &usage,
|
|||
this->hasObject = false;
|
||||
this->heldObject = NULL;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case WEAPON_INTERRUPT:
|
||||
CASE_WEAPON_INTERRUPT:
|
||||
((DynamicObject*)(this->heldObject->GetCustomTag()))->RemoveManipulation();
|
||||
this->hasObject = false;
|
||||
this->heldObject = NULL;
|
||||
break;
|
||||
|
||||
case WEAPON_USE_SECONDARY_RELEASE:
|
||||
{
|
||||
if (this->hasObject) //Dummy check
|
||||
{
|
||||
//((DynamicObject*)(this->heldObject->GetCustomTag()))->RemoveManipulation();
|
||||
//this->hasObject = false;
|
||||
//this->heldObject = NULL;
|
||||
if (this->hasObject) //Dummy check
|
||||
{
|
||||
//((DynamicObject*)(this->heldObject->GetCustomTag()))->RemoveManipulation();
|
||||
//this->hasObject = false;
|
||||
//this->heldObject = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case WEAPON_FIRE::WEAPON_USE_UTILLITY_PRESS:
|
||||
case WEAPON_USE_UTILLITY_PRESS:
|
||||
if(currentEnergy >= 90.0f)
|
||||
{
|
||||
currentEnergy -= 90.0f;
|
||||
|
@ -99,9 +107,8 @@ void AttatchmentMassDriver::UseAttatchment(const GameLogic::WEAPON_FIRE &usage,
|
|||
// add CD
|
||||
((Game*)&Game::Instance())->onActionEventFnc(this->owner, WeaponAction::WeaponAction_UtilityActivate);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void AttatchmentMassDriver::Update(float dt)
|
||||
|
|
|
@ -242,6 +242,18 @@ using namespace GameLogic;
|
|||
return;
|
||||
}
|
||||
|
||||
Player *player = realObjA->getManipulatingPlayer();
|
||||
if( player != nullptr )
|
||||
{
|
||||
player->UseWeapon( WEAPON_INTERRUPT );
|
||||
}
|
||||
|
||||
player = realObjB->getManipulatingPlayer();
|
||||
if( player != nullptr )
|
||||
{
|
||||
player->UseWeapon( WEAPON_INTERRUPT );
|
||||
}
|
||||
|
||||
//check which obj is the one that is already affected, if both are then use the special case of changing ownership.
|
||||
if(realObjA->getAffectingPlayer() == NULL && realObjB->getAffectingPlayer() == NULL) //None of the objects have a player affecting them
|
||||
{
|
||||
|
@ -350,7 +362,6 @@ using namespace GameLogic;
|
|||
weapon->heldObject = obj; //weapon now holds the object
|
||||
weapon->hasObject = true;
|
||||
dynamicObj->SetManipulatingPlayer(*weapon->owner); //TODO: add if this is to be a struggle of who has the most power in its weapon, the player that is already manipulating the object or you. if you then you take the object from the other player, if not then you do not take the object
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -159,6 +159,7 @@
|
|||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="AttatchmentGun.h" />
|
||||
<ClInclude Include="AttatchmentMassDriver.h" />
|
||||
<ClInclude Include="AttatchmentSocket.h" />
|
||||
<ClInclude Include="CollisionManager.h" />
|
||||
|
@ -185,6 +186,7 @@
|
|||
<ClInclude Include="Weapon.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="AttatchmentGun.cpp" />
|
||||
<ClCompile Include="AttatchmentMassDriver.cpp" />
|
||||
<ClCompile Include="AttatchmentSocket.cpp" />
|
||||
<ClCompile Include="CollisionManager.cpp" />
|
||||
|
|
|
@ -32,6 +32,7 @@ namespace GameLogic
|
|||
WEAPON_USE_SECONDARY_RELEASE = 4,
|
||||
WEAPON_USE_UTILLITY_PRESS = 8,
|
||||
WEAPON_USE_UTILLITY_RELEASE = 16,
|
||||
WEAPON_INTERRUPT = 32
|
||||
};
|
||||
|
||||
enum WEAPON_STATE
|
||||
|
@ -46,6 +47,10 @@ namespace GameLogic
|
|||
Oyster::Math::Float3 pushForce;
|
||||
Player *p;
|
||||
};
|
||||
struct firedBullet
|
||||
{
|
||||
Oyster::Math::Float hitDamage;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue