diff --git a/Code/Game/GameLogic/AttatchmentGun.cpp b/Code/Game/GameLogic/AttatchmentGun.cpp
new file mode 100644
index 00000000..6146a838
--- /dev/null
+++ b/Code/Game/GameLogic/AttatchmentGun.cpp
@@ -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);
+
+
+
+
+}
diff --git a/Code/Game/GameLogic/AttatchmentGun.h b/Code/Game/GameLogic/AttatchmentGun.h
new file mode 100644
index 00000000..9cec7cb7
--- /dev/null
+++ b/Code/Game/GameLogic/AttatchmentGun.h
@@ -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
+
diff --git a/Code/Game/GameLogic/AttatchmentMassDriver.cpp b/Code/Game/GameLogic/AttatchmentMassDriver.cpp
index 6d060f60..55ca3b3a 100644
--- a/Code/Game/GameLogic/AttatchmentMassDriver.cpp
+++ b/Code/Game/GameLogic/AttatchmentMassDriver.cpp
@@ -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)
diff --git a/Code/Game/GameLogic/CollisionManager.cpp b/Code/Game/GameLogic/CollisionManager.cpp
index fd5f372a..f8669591 100644
--- a/Code/Game/GameLogic/CollisionManager.cpp
+++ b/Code/Game/GameLogic/CollisionManager.cpp
@@ -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;
}
diff --git a/Code/Game/GameLogic/GameLogic.vcxproj b/Code/Game/GameLogic/GameLogic.vcxproj
index 26c98891..4f1cb1fa 100644
--- a/Code/Game/GameLogic/GameLogic.vcxproj
+++ b/Code/Game/GameLogic/GameLogic.vcxproj
@@ -159,6 +159,7 @@
+
@@ -185,6 +186,7 @@
+
diff --git a/Code/Game/GameLogic/GameLogicStates.h b/Code/Game/GameLogic/GameLogicStates.h
index f006ad27..88fda7e5 100644
--- a/Code/Game/GameLogic/GameLogicStates.h
+++ b/Code/Game/GameLogic/GameLogicStates.h
@@ -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;
+ };