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

This commit is contained in:
Tleety
2016-03-13 01:24:01 +01:00
3 changed files with 56 additions and 26 deletions
@@ -21,6 +21,7 @@
<Color A="0" B="1.96078432" G="0" R="3.92156863"/>
<Transparent>true</Transparent>
</c:Model>
<c:NetworkComponent/>
<c:Transform>
<Position X="0" Y="-0.0900000036" Z="-0.00600000005"/>
<Orientation X="1.57000005" Y="0" Z="0"/>
+17 -25
View File
@@ -79,45 +79,37 @@ std::string BoostSystem::DetermineClass(EntityWrapper inflictorPlayer)
void BoostSystem::giveAmmo(EntityWrapper giver, EntityWrapper receiver)
{
bool gaveAmmo = false;
if (receiver.HasComponent("AssaultWeapon")) {
int magazineSize = receiver["AssaultWeapon"]["MagazineSize"];
int& magazineAmmo = receiver["AssaultWeapon"]["MagazineAmmo"];
int prevMagazineAmmo = receiver["AssaultWeapon"]["MagazineAmmo"];
int maxAmmo = receiver["AssaultWeapon"]["MaxAmmo"];
int& ammo = receiver["AssaultWeapon"]["Ammo"];
if (magazineAmmo < magazineSize) {
magazineAmmo += 1;
gaveAmmo = true;
} else if (ammo < maxAmmo) {
ammo += 1;
gaveAmmo = true;
int givenAmmo = 3;
magazineAmmo = glm::clamp(magazineAmmo + givenAmmo, 0, magazineSize);
if (magazineAmmo > prevMagazineAmmo) {
givenAmmo = prevMagazineAmmo + givenAmmo - magazineSize;
}
if (givenAmmo > 0) {
ammo = glm::clamp(ammo + givenAmmo, 0, maxAmmo);
}
} else if (receiver.HasComponent("DefenderWeapon")) {
int magazineSize = receiver["DefenderWeapon"]["MagazineSize"];
int& magazineAmmo = receiver["DefenderWeapon"]["MagazineAmmo"];
int prevMagazineAmmo = receiver["DefenderWeapon"]["MagazineAmmo"];
int maxAmmo = receiver["DefenderWeapon"]["MaxAmmo"];
int& ammo = receiver["DefenderWeapon"]["Ammo"];
if (magazineAmmo < magazineSize) {
magazineAmmo += 1;
gaveAmmo = true;
} else if (ammo < maxAmmo) {
ammo += 1;
gaveAmmo = true;
int givenAmmo = 1;
magazineAmmo = glm::clamp(magazineAmmo + givenAmmo, 0, magazineSize);
if (magazineAmmo > prevMagazineAmmo) {
givenAmmo = prevMagazineAmmo + givenAmmo - magazineSize;
}
}
if (gaveAmmo) {
EntityWrapper effectSpawner = giver.FirstChildByName("AmmoShareEffectSpawner");
if (effectSpawner.Valid()) {
if (effectSpawner.HasComponent("Spawner")) {
SpawnerSystem::Spawn(effectSpawner, effectSpawner);
}
if (givenAmmo > 0) {
ammo = glm::clamp(ammo + givenAmmo, 0, maxAmmo);
}
}
}
@@ -281,7 +281,44 @@ bool SidearmWeaponBehaviour::dealDamage(ComponentWrapper cWeapon, WeaponInfo& wi
// 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"]) {
damage = 0;
//giveAmmo(cWeapon, wi, victim);
bool gaveAmmo = false;
if (victim.HasComponent("AssaultWeapon")) {
int magazineSize = victim["AssaultWeapon"]["MagazineSize"];
int magazineAmmo = victim["AssaultWeapon"]["MagazineAmmo"];
int maxAmmo = victim["AssaultWeapon"]["MaxAmmo"];
int ammo = victim["AssaultWeapon"]["Ammo"];
if (magazineAmmo < magazineSize) {
gaveAmmo = true;
} else if (ammo < maxAmmo) {
gaveAmmo = true;
}
} else if (victim.HasComponent("DefenderWeapon")) {
int magazineSize = victim["DefenderWeapon"]["MagazineSize"];
int magazineAmmo = victim["DefenderWeapon"]["MagazineAmmo"];
int maxAmmo = victim["DefenderWeapon"]["MaxAmmo"];
int ammo = victim["DefenderWeapon"]["Ammo"];
if (magazineAmmo < magazineSize) {
gaveAmmo = true;
} else if (ammo < maxAmmo) {
gaveAmmo = true;
}
}
if (gaveAmmo) {
EntityWrapper effectSpawner = wi.FirstPersonEntity.FirstChildByName("AmmoShareEffectSpawner");
if (effectSpawner.Valid()) {
if (effectSpawner.HasComponent("Spawner")) {
SpawnerSystem::Spawn(effectSpawner, effectSpawner);
}
}
}
}
// Deal damage!