Merge branch 'master' of github.com:teamfisk/TacticalZ

This commit is contained in:
viktorljung
2016-03-14 04:12:02 +01:00
11 changed files with 65 additions and 2 deletions
+2
View File
@@ -36,6 +36,7 @@
#include "Network/ESearchForServers.h" #include "Network/ESearchForServers.h"
#include "Network/EInterpolate.h" #include "Network/EInterpolate.h"
#include "Network/SnapshotFilter.h" #include "Network/SnapshotFilter.h"
#include "Core/EWin.h"
class Client : public Network class Client : public Network
{ {
@@ -107,6 +108,7 @@ private:
void parseAmmoPickup(Packet& packet); void parseAmmoPickup(Packet& packet);
void parseRemoveWorld(Packet& packet); void parseRemoveWorld(Packet& packet);
void parseKDEvent(Packet& packet); void parseKDEvent(Packet& packet);
void parseWin(Packet& packet);
void InterpolateFields(Packet& packet, const ComponentInfo & componentInfo, const EntityID & entityID, const std::string & componentType); void InterpolateFields(Packet& packet, const ComponentInfo & componentInfo, const EntityID & entityID, const std::string & componentType);
void parseSnapshot(Packet& packet); void parseSnapshot(Packet& packet);
void identifyPacketLoss(); void identifyPacketLoss();
+1
View File
@@ -25,6 +25,7 @@ enum class MessageType
AmmoPickup, AmmoPickup,
RemoveWorld, RemoveWorld,
KD, KD,
Win,
Invalid Invalid
}; };
+1
View File
@@ -81,6 +81,7 @@ private:
void setSoundProperties(Source* source, ComponentWrapper* soundComponent); void setSoundProperties(Source* source, ComponentWrapper* soundComponent);
float getDurationSeconds(Source* source); float getDurationSeconds(Source* source);
float getTimeOffsetSeconds(Source* source); float getTimeOffsetSeconds(Source* source);
void setTimeOffsetSeconds(Source* source, float timeOffset);
// Specific logic // Specific logic
void playSound(Source* source); void playSound(Source* source);
+10
View File
@@ -176,6 +176,9 @@ void Client::parseMessageType(Packet& packet)
case MessageType::KD: case MessageType::KD:
parseKDEvent(packet); parseKDEvent(packet);
break; break;
case MessageType::Win:
parseWin(packet);
break;
default: default:
break; break;
} }
@@ -376,6 +379,13 @@ void Client::parseKDEvent(Packet & packet)
m_EventBroker->Publish(e); m_EventBroker->Publish(e);
} }
void Client::parseWin(Packet& packet)
{
Events::Win e;
e.TeamThatWon = packet.ReadPrimitive<int>();
m_EventBroker->Publish(e);
}
void Client::updateFields(Packet& packet, const ComponentInfo& componentInfo, const EntityID& entityID) void Client::updateFields(Packet& packet, const ComponentInfo& componentInfo, const EntityID& entityID)
{ {
for (auto field : componentInfo.FieldsInOrder) { for (auto field : componentInfo.FieldsInOrder) {
+3
View File
@@ -609,6 +609,9 @@ bool Server::OnWin(const Events::Win & e)
{ {
// Postpone the gameover reset // Postpone the gameover reset
m_GameIsOver = true; m_GameIsOver = true;
Packet winPacket = Packet(MessageType::Win);
winPacket.WritePrimitive(e.TeamThatWon);
reliableBroadcast(winPacket);
return true; return true;
} }
+5 -1
View File
@@ -75,7 +75,7 @@ void Renderer::InitializeWindow()
//glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits); //glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits);
//glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate); //glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate);
glfwWindowHint(GLFW_DECORATED, false); glfwWindowHint(GLFW_DECORATED, false);
glfwWindowHint(GLFW_AUTO_ICONIFY, false); //glfwWindowHint(GLFW_AUTO_ICONIFY, false);
} }
//glfwWindowHint(GLFW_SAMPLES, 8); //glfwWindowHint(GLFW_SAMPLES, 8);
@@ -167,17 +167,21 @@ void Renderer::Draw(RenderFrame& frame)
{ {
GLERROR("PRE"); GLERROR("PRE");
glBindFramebuffer(GL_FRAMEBUFFER, 0); glBindFramebuffer(GL_FRAMEBUFFER, 0);
#ifdef DEBUG
ImGui::Combo("Draw textures", &m_DebugTextureToDraw, "Final\0Scene\0Bloom\0Gaussian\0Picking\0Ambient Occlusion\0Combined Scene Texture\0Full Blurred Texture"); ImGui::Combo("Draw textures", &m_DebugTextureToDraw, "Final\0Scene\0Bloom\0Gaussian\0Picking\0Ambient Occlusion\0Combined Scene Texture\0Full Blurred Texture");
ImGui::Combo("CubeMap", &m_CubeMapTexture, "Nevada(512)\0Sky(1024)"); ImGui::Combo("CubeMap", &m_CubeMapTexture, "Nevada(512)\0Sky(1024)");
#endif
if(m_CubeMapTexture == 0) { if(m_CubeMapTexture == 0) {
m_CubeMapPass->LoadTextures("Nevada"); m_CubeMapPass->LoadTextures("Nevada");
} else if (m_CubeMapTexture == 1) { } else if (m_CubeMapTexture == 1) {
m_CubeMapPass->LoadTextures("Sky"); m_CubeMapPass->LoadTextures("Sky");
} }
#ifdef DEBUG
ImGui::SliderInt("SSAO Quality", &m_SSAO_Quality, 0, 3); ImGui::SliderInt("SSAO Quality", &m_SSAO_Quality, 0, 3);
ImGui::SliderInt("Glow Quality", &m_GLOW_Quality, 0, 3); ImGui::SliderInt("Glow Quality", &m_GLOW_Quality, 0, 3);
ImGui::SliderInt("MSAA Level", (int*)&m_MSAA_Level, 0, 16); ImGui::SliderInt("MSAA Level", (int*)&m_MSAA_Level, 0, 16);
#endif
m_SSAOPass->ChangeQuality(m_SSAO_Quality); m_SSAOPass->ChangeQuality(m_SSAO_Quality);
m_DrawBloomPass->ChangeQuality(m_GLOW_Quality); m_DrawBloomPass->ChangeQuality(m_GLOW_Quality);
m_DrawFinalPass->setMSAA(m_MSAA_Level); m_DrawFinalPass->setMSAA(m_MSAA_Level);
+2
View File
@@ -25,11 +25,13 @@ ShadowPass::~ShadowPass()
void ShadowPass::DebugGUI() void ShadowPass::DebugGUI()
{ {
#ifdef DEBUG
ImGui::Checkbox("EnableShadows", &m_EnableShadows); ImGui::Checkbox("EnableShadows", &m_EnableShadows);
ImGui::DragFloat2("ShadowMapNearFar", m_NearFarPlane, 1.f, -1000.f, 1000.f); ImGui::DragFloat2("ShadowMapNearFar", m_NearFarPlane, 1.f, -1000.f, 1000.f);
ImGui::DragFloat("ShadowClippingWeight", &m_SplitWeight, 0.001f, 0.f, 1.f); ImGui::DragFloat("ShadowClippingWeight", &m_SplitWeight, 0.001f, 0.f, 1.f);
ImGui::Checkbox("ShadowTransparentObjects", &m_TransparentObjects); ImGui::Checkbox("ShadowTransparentObjects", &m_TransparentObjects);
ImGui::Checkbox("ShadowOnTextureAlphas", &m_TexturedShadows); ImGui::Checkbox("ShadowOnTextureAlphas", &m_TexturedShadows);
#endif
} }
void ShadowPass::InitializeCameras(RenderScene & scene) void ShadowPass::InitializeCameras(RenderScene & scene)
+13
View File
@@ -417,6 +417,14 @@ bool SoundManager::OnSetCamera(const Events::SetCamera& e)
alSourcei(m_CurrentBGMCombo->ALsource, AL_LOOPING, 1); alSourcei(m_CurrentBGMCombo->ALsource, AL_LOOPING, 1);
setGain(m_CurrentBGMCombo, 0); setGain(m_CurrentBGMCombo, 0);
playSound(m_CurrentBGMCombo); playSound(m_CurrentBGMCombo);
} else if (m_World->HasComponent(e.CameraEntity.ID, "EndScreen")) {
float timeOffset = getTimeOffsetSeconds(m_CurrentBGM);
stopSound(m_CurrentBGM);
m_CurrentBGM = createSource("Audio/BGM/Layer3.wav");
m_CurrentBGM->Type = SoundType::BGM;
alSourcei(m_CurrentBGM->ALsource, AL_LOOPING, 1);
playSound(m_CurrentBGM);
setTimeOffsetSeconds(m_CurrentBGM, timeOffset);
} }
} }
@@ -477,6 +485,11 @@ float SoundManager::getTimeOffsetSeconds(Source* source)
return time; return time;
} }
void SoundManager::setTimeOffsetSeconds(Source * source, float timeOffset)
{
alSourcef(source->ALsource, AL_SEC_OFFSET, timeOffset);
}
void SoundManager::initOpenAL() void SoundManager::initOpenAL()
{ {
// Initialize OpenAL // Initialize OpenAL
+12
View File
@@ -202,12 +202,18 @@ void PlayerMovementSystem::updateMovementControllers(double dt)
if (addSpeed > 0) { if (addSpeed > 0) {
static float accel = 15.f; static float accel = 15.f;
#ifdef DEBUG
ImGui::InputFloat("accel", &accel); ImGui::InputFloat("accel", &accel);
#endif
static float airAccel = 0.5f; static float airAccel = 0.5f;
#ifdef DEBUG
ImGui::InputFloat("airAccel", &airAccel); ImGui::InputFloat("airAccel", &airAccel);
#endif
float actualAccel = isOnGround ? accel : airAccel; float actualAccel = isOnGround ? accel : airAccel;
static float surfaceFriction = 5.f; static float surfaceFriction = 5.f;
#ifdef DEBUG
ImGui::InputFloat("surfaceFriction", &surfaceFriction); ImGui::InputFloat("surfaceFriction", &surfaceFriction);
#endif
float accelerationSpeed = actualAccel * (float)dt * wishSpeed * surfaceFriction; float accelerationSpeed = actualAccel * (float)dt * wishSpeed * surfaceFriction;
//if doubleTapped do Assault Dash - but only boost maximum 50.0f //if doubleTapped do Assault Dash - but only boost maximum 50.0f
float doubleTapDashBoost = controller->AssaultDashDoubleTapped() ? 40.0f : 1.0f; float doubleTapDashBoost = controller->AssaultDashDoubleTapped() ? 40.0f : 1.0f;
@@ -220,7 +226,9 @@ void PlayerMovementSystem::updateMovementControllers(double dt)
accelerationSpeed *= (double)player["SprintAbility"]["StrengthOfEffect"]; accelerationSpeed *= (double)player["SprintAbility"]["StrengthOfEffect"];
} }
velocity += accelerationSpeed * (glm::vec3)wishDirection; velocity += accelerationSpeed * (glm::vec3)wishDirection;
#ifdef DEBUG
ImGui::Text("velocity: (%f, %f, %f) |%f|", velocity.x(), velocity.y(), velocity.z(), glm::length((glm::vec3)velocity)); ImGui::Text("velocity: (%f, %f, %f) |%f|", velocity.x(), velocity.y(), velocity.z(), glm::length((glm::vec3)velocity));
#endif
} }
if (isOnGround) { if (isOnGround) {
@@ -336,10 +344,14 @@ void PlayerMovementSystem::updateVelocity(EntityWrapper player, double dt)
// Ground friction // Ground friction
float speed = glm::length((glm::vec3)velocity); float speed = glm::length((glm::vec3)velocity);
static float groundFriction = 7.f; static float groundFriction = 7.f;
#ifdef DEBUG
ImGui::InputFloat("groundFriction", &groundFriction); ImGui::InputFloat("groundFriction", &groundFriction);
#endif
static float airFriction = 2.f; static float airFriction = 2.f;
#ifdef DEBUG
ImGui::InputFloat("airFriction", &airFriction); ImGui::InputFloat("airFriction", &airFriction);
#endif
float friction = isOnGround ? groundFriction : airFriction; float friction = isOnGround ? groundFriction : airFriction;
if (speed > 0) { if (speed > 0) {
float drop = speed * friction * (float)dt; float drop = speed * friction * (float)dt;
+3
View File
@@ -87,6 +87,9 @@ bool SoundSystem::OnPlayerDamage(const Events::PlayerDamage & e)
if (!e.Victim.Valid() || !e.Inflictor.Valid()) { if (!e.Victim.Valid() || !e.Inflictor.Valid()) {
return false; return false;
} }
if (e.Victim.ID != LocalPlayer.ID) {
return false;
}
auto victimTeam = m_World->GetComponent(e.Victim.ID, "Team"); auto victimTeam = m_World->GetComponent(e.Victim.ID, "Team");
auto inflictorTeam = m_World->GetComponent(e.Inflictor.ID, "Team"); auto inflictorTeam = m_World->GetComponent(e.Inflictor.ID, "Team");
if ((int)victimTeam["Team"] == (int)inflictorTeam["Team"]) { if ((int)victimTeam["Team"] == (int)inflictorTeam["Team"]) {
@@ -14,7 +14,19 @@ void AssaultWeaponBehaviour::UpdateWeapon(ComponentWrapper cWeapon, WeaponInfo&
// 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) {
OnReload(cWeapon, wi); //OnReload(cWeapon, wi);
// Send an input command instead of reloading immediately so the server
// has a chance to catch up.
if (IsClient) {
Events::InputCommand e;
e.Player = wi.Player;
e.PlayerID = -1;
e.Command = "Reload";
e.Value = 1;
m_EventBroker->Publish(e);
e.Value = 0;
m_EventBroker->Publish(e);
}
} }
// Only start reloading once we're done firing // Only start reloading once we're done firing