diff --git a/include/Game/Systems/Weapon/AssaultWeaponBehaviour.h b/include/Game/Systems/Weapon/AssaultWeaponBehaviour.h
index 231cc020..5783cf31 100644
--- a/include/Game/Systems/Weapon/AssaultWeaponBehaviour.h
+++ b/include/Game/Systems/Weapon/AssaultWeaponBehaviour.h
@@ -38,7 +38,6 @@ private:
//Camera cameraFromEntity(EntityWrapper camera);
void CheckBoost(ComponentWrapper cWeapon, WeaponInfo& wi);
- void RemoveBoostCheckHUD(WeaponInfo& wi);
};
diff --git a/resources/Schema/Entities/FriendlyBoostBlueHUD.xml b/resources/Schema/Entities/FriendlyBoostBlueHUD.xml
new file mode 100644
index 00000000..c181392e
--- /dev/null
+++ b/resources/Schema/Entities/FriendlyBoostBlueHUD.xml
@@ -0,0 +1,151 @@
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitQuad.mesh
+
+ Textures/Core/UnitHexagon.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \1
+ Fonts/Hind-Edited.otf,64
+
+ false
+
+
+
+
+
+
+
+
+
+
+ \1
+ Fonts/Hind-Edited.otf,64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \2
+ Fonts/Hind-Edited.otf,64
+
+ false
+
+
+
+
+
+
+
+
+
+
+ \2
+ Fonts/Hind-Edited.otf,64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \3
+ Fonts/Hind-Edited.otf,64
+
+ false
+
+
+
+
+
+
+
+
+
+
+ \3
+ Fonts/Hind-Edited.otf,64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/Schema/Entities/WeaponAssaultBlueView.xml b/resources/Schema/Entities/WeaponAssaultBlueView.xml
index c85d4c2d..36fbfc03 100644
--- a/resources/Schema/Entities/WeaponAssaultBlueView.xml
+++ b/resources/Schema/Entities/WeaponAssaultBlueView.xml
@@ -216,7 +216,7 @@
- Schema/Entities/FriendlyAmmoHUD.xml
+ Schema/Entities/FriendlyBoostBlueHUD.xml
diff --git a/src/Game/Systems/BoostSystem.cpp b/src/Game/Systems/BoostSystem.cpp
index ede147c3..5a04e3f8 100644
--- a/src/Game/Systems/BoostSystem.cpp
+++ b/src/Game/Systems/BoostSystem.cpp
@@ -8,21 +8,16 @@ BoostSystem::BoostSystem(SystemParams params)
bool BoostSystem::OnPlayerDamage(Events::PlayerDamage& e)
{
- if (e.Victim.ID == e.Inflictor.ID) {
+
+
+ if (e.Victim == e.Inflictor) {
return false;
}
- if (!e.Victim.Valid() || !LocalPlayer.Valid()) {
+ if (!e.Victim.Valid() || !e.Inflictor.Valid()) {
return false;
}
- if (e.Victim != LocalPlayer && !e.Victim.IsChildOf(LocalPlayer)) {
- return false;
- }
-
- if (!e.Inflictor.Valid()) {
- return false;
- }
//if its not friendly fire, return
if ((int)m_World->GetComponent(e.Inflictor.ID, "Team")["Team"] != (int)m_World->GetComponent(e.Victim.ID, "Team")["Team"]) {
@@ -38,6 +33,9 @@ bool BoostSystem::OnPlayerDamage(Events::PlayerDamage& e)
if (className == "SidearmWeapon") { // give ammo
giveAmmo(e.Inflictor, e.Victim);
} else { //give boost
+ if (!IsServer) {
+ return false;
+ }
//get the XML file, example: "Schema/Entities/BoostclassName.xml"
std::string classXML = "Schema/Entities/" + className + ".xml";
@@ -86,7 +84,7 @@ void BoostSystem::giveAmmo(EntityWrapper giver, EntityWrapper receiver)
int maxAmmo = receiver["AssaultWeapon"]["MaxAmmo"];
Field ammo = receiver["AssaultWeapon"]["Ammo"];
- int givenAmmo = 3;
+ int givenAmmo = 20;
magazineAmmo = glm::clamp(magazineAmmo + givenAmmo, 0, magazineSize);
if (magazineAmmo > prevMagazineAmmo) {
@@ -102,7 +100,7 @@ void BoostSystem::giveAmmo(EntityWrapper giver, EntityWrapper receiver)
int maxAmmo = receiver["DefenderWeapon"]["MaxAmmo"];
Field ammo = receiver["DefenderWeapon"]["Ammo"];
- int givenAmmo = 1;
+ int givenAmmo = 3;
magazineAmmo = glm::clamp(magazineAmmo + givenAmmo, 0, magazineSize);
if (magazineAmmo > prevMagazineAmmo) {
diff --git a/src/Game/Systems/PlayerMovementSystem.cpp b/src/Game/Systems/PlayerMovementSystem.cpp
index 35a7d3cf..3cf1068d 100644
--- a/src/Game/Systems/PlayerMovementSystem.cpp
+++ b/src/Game/Systems/PlayerMovementSystem.cpp
@@ -392,17 +392,22 @@ void PlayerMovementSystem::spawnHexagon(EntityWrapper target)
bool PlayerMovementSystem::OnDashAbility(Events::DashAbility & e)
{
- EntityWrapper player(m_World, e.Player);
- if (!player.Valid()){// || !IsClient || player.ID == LocalPlayer.ID) {
+ EntityWrapper eventPlayer(m_World, e.Player);
+ if (!eventPlayer.Valid()){// || IsServer || eventPlayer.ID == LocalPlayer.ID) {
return false;
}
// auto entityFile = ResourceManager::Load("Schema/Entities/DashEffect.xml");
// EntityWrapper dashEffect = entityFile->MergeInto(m_World);
- EntityWrapper playerModel = player.FirstChildByName("PlayerModel");
+ EntityWrapper playerModel = eventPlayer.FirstChildByName("PlayerModel");
for (auto& kv : m_PlayerInputControllers) {
EntityWrapper player = kv.first;
+ if(player != eventPlayer) {
+ continue;
+ }
+
+
auto& controller = kv.second;
if (!player.Valid()) {
diff --git a/src/Game/Systems/Weapon/AssaultWeaponBehaviour.cpp b/src/Game/Systems/Weapon/AssaultWeaponBehaviour.cpp
index ad9caae4..b58cf158 100644
--- a/src/Game/Systems/Weapon/AssaultWeaponBehaviour.cpp
+++ b/src/Game/Systems/Weapon/AssaultWeaponBehaviour.cpp
@@ -10,6 +10,7 @@ void AssaultWeaponBehaviour::UpdateComponent(EntityWrapper& entity, ComponentWra
void AssaultWeaponBehaviour::UpdateWeapon(ComponentWrapper cWeapon, WeaponInfo& wi, double dt)
{
+ CheckBoost(cWeapon, wi);
// Start reloading automatically if at 0 mag ammo
Field magAmmo = cWeapon["MagazineAmmo"];
if (m_ConfigAutoReload && magAmmo <= 0) {
@@ -385,13 +386,11 @@ void AssaultWeaponBehaviour::CheckBoost(ComponentWrapper cWeapon, WeaponInfo& wi
PickData pickData = m_Renderer->Pick(centerScreen);
EntityWrapper victim(m_World, pickData.Entity);
if (!victim.Valid()) {
- RemoveBoostCheckHUD(wi);
return;
}
// Don't let us somehow shoot ourselves in the foot
if (victim == LocalPlayer) {
- RemoveBoostCheckHUD(wi);
return;
}
@@ -400,59 +399,111 @@ void AssaultWeaponBehaviour::CheckBoost(ComponentWrapper cWeapon, WeaponInfo& wi
victim = victim.FirstParentWithComponent("Player");
}
if (!victim.Valid()) {
- RemoveBoostCheckHUD(wi);
return;
}
// If friendly fire, reduce damage to 0 (needed to make Boosts, Ammosharing work)
if ((ComponentInfo::EnumType)victim["Team"]["Team"] == (ComponentInfo::EnumType)wi.Player["Team"]["Team"]) {
-
+
EntityWrapper friendlyBoostHudSpawner = wi.FirstPersonPlayerModel.FirstChildByName("FriendlyBoostAttachment");
if (friendlyBoostHudSpawner.Valid()) {
+ EntityWrapper assaultBoost = victim.FirstChildByName("BoostAssault");
+ EntityWrapper defenderBoost = victim.FirstChildByName("BoostDefender");
+ EntityWrapper sniperBoost = victim.FirstChildByName("BoostSniper");
+
auto children = m_World->GetDirectChildren(friendlyBoostHudSpawner.ID);
if (children.first == children.second) {
if (friendlyBoostHudSpawner.HasComponent("Spawner")) {
- EntityWrapper friendlyAmmoHud = SpawnerSystem::Spawn(friendlyBoostHudSpawner, friendlyBoostHudSpawner);
- if (friendlyAmmoHud.Valid()) {
- EntityWrapper textEntity = friendlyAmmoHud.FirstChildByName("MagazineAmmo");
- if (textEntity.Valid()) {
- if (textEntity.HasComponent("Text")) {
- // (std::string&)textEntity["Text"]["Content"] = std::to_string(magazineAmmo);
+
+ EntityWrapper friendlyBoostHud = SpawnerSystem::Spawn(friendlyBoostHudSpawner, friendlyBoostHudSpawner);
+ if (friendlyBoostHud.Valid()) {
+ EntityWrapper assaultBoostEntity = friendlyBoostHud.FirstChildByName("AssaultBoost");
+ if (assaultBoostEntity.Valid()) {
+ EntityWrapper active = assaultBoostEntity.FirstChildByName("Active");
+ if (active.HasComponent("Text")) {
+ if (assaultBoost.Valid()) {
+ (Field)active["Text"]["Visible"] = true;
+ } else {
+ (Field)active["Text"]["Visible"] = false;
+ }
}
}
- EntityWrapper ammoTextEntity = friendlyAmmoHud.FirstChildByName("Ammo");
- if (ammoTextEntity.Valid()) {
- if (ammoTextEntity.HasComponent("Text")) {
- // (std::string&)ammoTextEntity["Text"]["Content"] = std::to_string(ammo);
+ EntityWrapper defenderBoostEntity = friendlyBoostHud.FirstChildByName("DefenderBoost");
+ if (defenderBoostEntity.Valid()) {
+ EntityWrapper active = defenderBoostEntity.FirstChildByName("Active");
+ if (active.HasComponent("Text")) {
+ if (defenderBoost.Valid()) {
+ (Field)active["Text"]["Visible"] = true;
+ } else {
+ (Field)active["Text"]["Visible"] = false;
+ }
+ }
+ }
+
+ EntityWrapper sniperBoostEntity = friendlyBoostHud.FirstChildByName("SniperBoost");
+ if (sniperBoostEntity.Valid()) {
+ EntityWrapper active = sniperBoostEntity.FirstChildByName("Active");
+ if (active.HasComponent("Text")) {
+ if (sniperBoost.Valid()) {
+ (Field)active["Text"]["Visible"] = true;
+ } else {
+ (Field)active["Text"]["Visible"] = false;
+ }
}
}
}
}
} else {
- EntityWrapper textEntity = friendlyBoostHudSpawner.FirstChildByName("MagazineAmmo");
- if (textEntity.Valid()) {
- if (textEntity.HasComponent("Text")) {
- // (std::string&)textEntity["Text"]["Content"] = std::to_string(magazineAmmo);
+ EntityWrapper friendlyBoostHud = friendlyBoostHudSpawner.FirstChildByName("FriendlyBoostHUD");
+ if (friendlyBoostHud.Valid()) {
+ if(friendlyBoostHud.HasComponent("Lifetime")) {
+ (Field)friendlyBoostHud["Lifetime"]["Lifetime"] = 0.5;
}
- }
- EntityWrapper ammoTextEntity = friendlyBoostHudSpawner.FirstChildByName("Ammo");
- if (ammoTextEntity.Valid()) {
- if (ammoTextEntity.HasComponent("Text")) {
- // (std::string&)ammoTextEntity["Text"]["Content"] = std::to_string(ammo);
+
+
+ EntityWrapper assaultBoostEntity = friendlyBoostHud.FirstChildByName("AssaultBoost");
+ if (assaultBoostEntity.Valid()) {
+ EntityWrapper active = assaultBoostEntity.FirstChildByName("Active");
+ if (active.HasComponent("Text")) {
+ if (assaultBoost.Valid()) {
+ (Field)active["Text"]["Visible"] = true;
+ } else {
+ (Field)active["Text"]["Visible"] = false;
+ }
+ }
+ }
+
+ EntityWrapper defenderBoostEntity = friendlyBoostHud.FirstChildByName("DefenderBoost");
+ if (defenderBoostEntity.Valid()) {
+ EntityWrapper active = defenderBoostEntity.FirstChildByName("Active");
+ if (active.HasComponent("Text")) {
+ if (defenderBoost.Valid()) {
+ (Field)active["Text"]["Visible"] = true;
+ } else {
+ (Field)active["Text"]["Visible"] = false;
+ }
+ }
+ }
+
+ EntityWrapper sniperBoostEntity = friendlyBoostHud.FirstChildByName("SniperBoost");
+ if (sniperBoostEntity.Valid()) {
+ EntityWrapper active = sniperBoostEntity.FirstChildByName("Active");
+ if (active.HasComponent("Text")) {
+ if (sniperBoost.Valid()) {
+ (Field)active["Text"]["Visible"] = true;
+ } else {
+ (Field)active["Text"]["Visible"] = false;
+ }
+ }
}
}
}
}
}
-
}
-void AssaultWeaponBehaviour::RemoveBoostCheckHUD(WeaponInfo& wi)
-{
-
-}