Merge branch 'Movement' of github.com:teamfisk/TacticalZ into Movement

This commit is contained in:
Tleety
2016-03-13 21:01:15 +01:00
6 changed files with 248 additions and 44 deletions
@@ -38,7 +38,6 @@ private:
//Camera cameraFromEntity(EntityWrapper camera); //Camera cameraFromEntity(EntityWrapper camera);
void CheckBoost(ComponentWrapper cWeapon, WeaponInfo& wi); void CheckBoost(ComponentWrapper cWeapon, WeaponInfo& wi);
void RemoveBoostCheckHUD(WeaponInfo& wi);
}; };
@@ -0,0 +1,151 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Entity name="FriendlyBoostHUD" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
<Components>
<c:Lifetime>
<Lifetime>0.5</Lifetime>
</c:Lifetime>
<c:Transform>
<Scale X="1.5" Y="1.5" Z="1"/>
</c:Transform>
</Components>
<Children>
<Entity name="BoostHUDBackground">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
<Color A="0.588235319" B="0" G="0" R="0"/>
</c:Sprite>
<c:Transform>
<Position X="0" Y="0" Z="-0.00300000003"/>
<Scale X="0.0599999987" Y="0.0599999987" Z="0.0599999987"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="BoostIcons">
<Components>
<c:Transform>
<Position X="-1.47358617e-06" Y="-0.0191892758" Z="4.05375999e-07"/>
</c:Transform>
</Components>
<Children>
<Entity name="AssaultBoost">
<Components>
<c:Transform>
<Position X="0.0120000001" Y="0.00899999961" Z="-8.43336147e-06"/>
<Scale X="0.0199999996" Y="0.0199999996" Z="0.0199999996"/>
</c:Transform>
</Components>
<Children>
<Entity name="Active">
<Components>
<c:Text>
<Content>\1</Content>
<Resource>Fonts/Hind-Edited.otf,64</Resource>
<Color A="1" B="1.37254906" G="0.392156869" R="0"/>
<Visible>false</Visible>
</c:Text>
<c:Transform>
<Position X="0" Y="0" Z="0.0149999997"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Inactive">
<Components>
<c:Text>
<Content>\1</Content>
<Resource>Fonts/Hind-Edited.otf,64</Resource>
<Color A="1" B="0.784313738" G="0.784313738" R="0.784313738"/>
</c:Text>
<c:Transform>
<Position X="0" Y="0" Z="-8.43336147e-06"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="DefenderBoost">
<Components>
<c:Transform>
<Position X="-0.0120000001" Y="0.00900000054" Z="-8.43336147e-06"/>
<Scale X="0.0199999996" Y="0.0199999996" Z="0.0199999996"/>
</c:Transform>
</Components>
<Children>
<Entity name="Active">
<Components>
<c:Text>
<Content>\2</Content>
<Resource>Fonts/Hind-Edited.otf,64</Resource>
<Color A="1" B="1.37254906" G="0.392156869" R="0"/>
<Visible>false</Visible>
</c:Text>
<c:Transform>
<Position X="0" Y="0" Z="0.00999999978"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Inactive">
<Components>
<c:Text>
<Content>\2</Content>
<Resource>Fonts/Hind-Edited.otf,64</Resource>
<Color A="1" B="0.784313738" G="0.784313738" R="0.784313738"/>
</c:Text>
<c:Transform>
<Position X="0" Y="0" Z="-8.43336147e-06"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="SniperBoost">
<Components>
<c:Transform>
<Position X="0" Y="0.0310000014" Z="-1.21438188e-05"/>
<Scale X="0.0199999996" Y="0.0199999996" Z="0.0199999996"/>
</c:Transform>
</Components>
<Children>
<Entity name="Active">
<Components>
<c:Text>
<Content>\3</Content>
<Resource>Fonts/Hind-Edited.otf,64</Resource>
<Color A="1" B="1.37254906" G="0.392156869" R="0"/>
<Visible>false</Visible>
</c:Text>
<c:Transform>
<Position X="0" Y="0" Z="0.00999999978"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Inactive">
<Components>
<c:Text>
<Content>\3</Content>
<Resource>Fonts/Hind-Edited.otf,64</Resource>
<Color A="1" B="0.784313738" G="0.784313738" R="0.784313738"/>
</c:Text>
<c:Transform>
<Position X="0" Y="0" Z="-8.43336147e-06"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
</Children>
</Entity>
</Children>
</Entity>
@@ -216,7 +216,7 @@
<Entity name="FriendlyBoostAttachment"> <Entity name="FriendlyBoostAttachment">
<Components> <Components>
<c:Spawner> <c:Spawner>
<EntityFile>Schema/Entities/FriendlyAmmoHUD.xml</EntityFile> <EntityFile>Schema/Entities/FriendlyBoostBlueHUD.xml</EntityFile>
</c:Spawner> </c:Spawner>
<c:Transform> <c:Transform>
<Position X="-0.000110394583" Y="-0.0891034827" Z="6.07890324e-05"/> <Position X="-0.000110394583" Y="-0.0891034827" Z="6.07890324e-05"/>
+9 -11
View File
@@ -8,21 +8,16 @@ BoostSystem::BoostSystem(SystemParams params)
bool BoostSystem::OnPlayerDamage(Events::PlayerDamage& e) bool BoostSystem::OnPlayerDamage(Events::PlayerDamage& e)
{ {
if (e.Victim.ID == e.Inflictor.ID) {
if (e.Victim == e.Inflictor) {
return false; return false;
} }
if (!e.Victim.Valid() || !LocalPlayer.Valid()) { if (!e.Victim.Valid() || !e.Inflictor.Valid()) {
return false; 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 its not friendly fire, return
if ((int)m_World->GetComponent(e.Inflictor.ID, "Team")["Team"] != (int)m_World->GetComponent(e.Victim.ID, "Team")["Team"]) { 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 if (className == "SidearmWeapon") { // give ammo
giveAmmo(e.Inflictor, e.Victim); giveAmmo(e.Inflictor, e.Victim);
} else { //give boost } else { //give boost
if (!IsServer) {
return false;
}
//get the XML file, example: "Schema/Entities/BoostclassName.xml" //get the XML file, example: "Schema/Entities/BoostclassName.xml"
std::string classXML = "Schema/Entities/" + className + ".xml"; std::string classXML = "Schema/Entities/" + className + ".xml";
@@ -86,7 +84,7 @@ void BoostSystem::giveAmmo(EntityWrapper giver, EntityWrapper receiver)
int maxAmmo = receiver["AssaultWeapon"]["MaxAmmo"]; int maxAmmo = receiver["AssaultWeapon"]["MaxAmmo"];
Field<int> ammo = receiver["AssaultWeapon"]["Ammo"]; Field<int> ammo = receiver["AssaultWeapon"]["Ammo"];
int givenAmmo = 3; int givenAmmo = 20;
magazineAmmo = glm::clamp(magazineAmmo + givenAmmo, 0, magazineSize); magazineAmmo = glm::clamp(magazineAmmo + givenAmmo, 0, magazineSize);
if (magazineAmmo > prevMagazineAmmo) { if (magazineAmmo > prevMagazineAmmo) {
@@ -102,7 +100,7 @@ void BoostSystem::giveAmmo(EntityWrapper giver, EntityWrapper receiver)
int maxAmmo = receiver["DefenderWeapon"]["MaxAmmo"]; int maxAmmo = receiver["DefenderWeapon"]["MaxAmmo"];
Field<int> ammo = receiver["DefenderWeapon"]["Ammo"]; Field<int> ammo = receiver["DefenderWeapon"]["Ammo"];
int givenAmmo = 1; int givenAmmo = 3;
magazineAmmo = glm::clamp(magazineAmmo + givenAmmo, 0, magazineSize); magazineAmmo = glm::clamp(magazineAmmo + givenAmmo, 0, magazineSize);
if (magazineAmmo > prevMagazineAmmo) { if (magazineAmmo > prevMagazineAmmo) {
+8 -3
View File
@@ -392,17 +392,22 @@ void PlayerMovementSystem::spawnHexagon(EntityWrapper target)
bool PlayerMovementSystem::OnDashAbility(Events::DashAbility & e) bool PlayerMovementSystem::OnDashAbility(Events::DashAbility & e)
{ {
EntityWrapper player(m_World, e.Player); EntityWrapper eventPlayer(m_World, e.Player);
if (!player.Valid()){// || !IsClient || player.ID == LocalPlayer.ID) { if (!eventPlayer.Valid()){// || IsServer || eventPlayer.ID == LocalPlayer.ID) {
return false; return false;
} }
// auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/DashEffect.xml"); // auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/DashEffect.xml");
// EntityWrapper dashEffect = entityFile->MergeInto(m_World); // EntityWrapper dashEffect = entityFile->MergeInto(m_World);
EntityWrapper playerModel = player.FirstChildByName("PlayerModel"); EntityWrapper playerModel = eventPlayer.FirstChildByName("PlayerModel");
for (auto& kv : m_PlayerInputControllers) { for (auto& kv : m_PlayerInputControllers) {
EntityWrapper player = kv.first; EntityWrapper player = kv.first;
if(player != eventPlayer) {
continue;
}
auto& controller = kv.second; auto& controller = kv.second;
if (!player.Valid()) { if (!player.Valid()) {
@@ -10,6 +10,7 @@ void AssaultWeaponBehaviour::UpdateComponent(EntityWrapper& entity, ComponentWra
void AssaultWeaponBehaviour::UpdateWeapon(ComponentWrapper cWeapon, WeaponInfo& wi, double dt) void AssaultWeaponBehaviour::UpdateWeapon(ComponentWrapper cWeapon, WeaponInfo& wi, double dt)
{ {
CheckBoost(cWeapon, wi);
// Start reloading automatically if at 0 mag ammo // Start reloading automatically if at 0 mag ammo
Field<int> magAmmo = cWeapon["MagazineAmmo"]; Field<int> magAmmo = cWeapon["MagazineAmmo"];
if (m_ConfigAutoReload && magAmmo <= 0) { if (m_ConfigAutoReload && magAmmo <= 0) {
@@ -385,13 +386,11 @@ void AssaultWeaponBehaviour::CheckBoost(ComponentWrapper cWeapon, WeaponInfo& wi
PickData pickData = m_Renderer->Pick(centerScreen); PickData pickData = m_Renderer->Pick(centerScreen);
EntityWrapper victim(m_World, pickData.Entity); EntityWrapper victim(m_World, pickData.Entity);
if (!victim.Valid()) { if (!victim.Valid()) {
RemoveBoostCheckHUD(wi);
return; return;
} }
// Don't let us somehow shoot ourselves in the foot // Don't let us somehow shoot ourselves in the foot
if (victim == LocalPlayer) { if (victim == LocalPlayer) {
RemoveBoostCheckHUD(wi);
return; return;
} }
@@ -400,7 +399,6 @@ void AssaultWeaponBehaviour::CheckBoost(ComponentWrapper cWeapon, WeaponInfo& wi
victim = victim.FirstParentWithComponent("Player"); victim = victim.FirstParentWithComponent("Player");
} }
if (!victim.Valid()) { if (!victim.Valid()) {
RemoveBoostCheckHUD(wi);
return; return;
} }
@@ -411,48 +409,101 @@ void AssaultWeaponBehaviour::CheckBoost(ComponentWrapper cWeapon, WeaponInfo& wi
EntityWrapper friendlyBoostHudSpawner = wi.FirstPersonPlayerModel.FirstChildByName("FriendlyBoostAttachment"); EntityWrapper friendlyBoostHudSpawner = wi.FirstPersonPlayerModel.FirstChildByName("FriendlyBoostAttachment");
if (friendlyBoostHudSpawner.Valid()) { 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); auto children = m_World->GetDirectChildren(friendlyBoostHudSpawner.ID);
if (children.first == children.second) { if (children.first == children.second) {
if (friendlyBoostHudSpawner.HasComponent("Spawner")) { if (friendlyBoostHudSpawner.HasComponent("Spawner")) {
EntityWrapper friendlyAmmoHud = SpawnerSystem::Spawn(friendlyBoostHudSpawner, friendlyBoostHudSpawner);
if (friendlyAmmoHud.Valid()) { EntityWrapper friendlyBoostHud = SpawnerSystem::Spawn(friendlyBoostHudSpawner, friendlyBoostHudSpawner);
EntityWrapper textEntity = friendlyAmmoHud.FirstChildByName("MagazineAmmo"); if (friendlyBoostHud.Valid()) {
if (textEntity.Valid()) { EntityWrapper assaultBoostEntity = friendlyBoostHud.FirstChildByName("AssaultBoost");
if (textEntity.HasComponent("Text")) { if (assaultBoostEntity.Valid()) {
// (std::string&)textEntity["Text"]["Content"] = std::to_string(magazineAmmo); EntityWrapper active = assaultBoostEntity.FirstChildByName("Active");
if (active.HasComponent("Text")) {
if (assaultBoost.Valid()) {
(Field<bool>)active["Text"]["Visible"] = true;
} else {
(Field<bool>)active["Text"]["Visible"] = false;
}
} }
} }
EntityWrapper ammoTextEntity = friendlyAmmoHud.FirstChildByName("Ammo"); EntityWrapper defenderBoostEntity = friendlyBoostHud.FirstChildByName("DefenderBoost");
if (ammoTextEntity.Valid()) { if (defenderBoostEntity.Valid()) {
if (ammoTextEntity.HasComponent("Text")) { EntityWrapper active = defenderBoostEntity.FirstChildByName("Active");
// (std::string&)ammoTextEntity["Text"]["Content"] = std::to_string(ammo); if (active.HasComponent("Text")) {
if (defenderBoost.Valid()) {
(Field<bool>)active["Text"]["Visible"] = true;
} else {
(Field<bool>)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<bool>)active["Text"]["Visible"] = true;
} else {
(Field<bool>)active["Text"]["Visible"] = false;
}
} }
} }
} }
} }
} else { } else {
EntityWrapper textEntity = friendlyBoostHudSpawner.FirstChildByName("MagazineAmmo"); EntityWrapper friendlyBoostHud = friendlyBoostHudSpawner.FirstChildByName("FriendlyBoostHUD");
if (textEntity.Valid()) { if (friendlyBoostHud.Valid()) {
if (textEntity.HasComponent("Text")) { if(friendlyBoostHud.HasComponent("Lifetime")) {
// (std::string&)textEntity["Text"]["Content"] = std::to_string(magazineAmmo); (Field<double>)friendlyBoostHud["Lifetime"]["Lifetime"] = 0.5;
} }
}
EntityWrapper ammoTextEntity = friendlyBoostHudSpawner.FirstChildByName("Ammo");
if (ammoTextEntity.Valid()) {
if (ammoTextEntity.HasComponent("Text")) { EntityWrapper assaultBoostEntity = friendlyBoostHud.FirstChildByName("AssaultBoost");
// (std::string&)ammoTextEntity["Text"]["Content"] = std::to_string(ammo); if (assaultBoostEntity.Valid()) {
EntityWrapper active = assaultBoostEntity.FirstChildByName("Active");
if (active.HasComponent("Text")) {
if (assaultBoost.Valid()) {
(Field<bool>)active["Text"]["Visible"] = true;
} else {
(Field<bool>)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<bool>)active["Text"]["Visible"] = true;
} else {
(Field<bool>)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<bool>)active["Text"]["Visible"] = true;
} else {
(Field<bool>)active["Text"]["Visible"] = false;
}
}
} }
} }
} }
} }
} }
} }
void AssaultWeaponBehaviour::RemoveBoostCheckHUD(WeaponInfo& wi)
{
}