Hacked in serverside effects

This commit is contained in:
2016-01-25 11:56:40 +01:00
parent 4245264029
commit b6fd18baed
5 changed files with 19 additions and 22 deletions
+2
View File
@@ -2,6 +2,7 @@
#define Events_InputCommand_h__
#include "Core/EventBroker.h"
#include "Core/EntityWrapper.h"
namespace Events
{
@@ -10,6 +11,7 @@ struct InputCommand : Event
{
/** Numerical ID of the player. */
int PlayerID;
EntityWrapper Player;
/** The command that was sent. */
std::string Command;
/** The value of the command. */
+3 -16
View File
@@ -20,7 +20,7 @@
</Team>
</c:Team>
<c:Transform>
<Position X="-7.12165165" Y="0.0265000015" Z="6.04289007"/>
<Position X="-7.12165165" Y="0" Z="6.04289007"/>
<Orientation X="0" Y="2.24449515" Z="0"/>
</c:Transform>
</Components>
@@ -120,20 +120,7 @@
<Position X="0.215000004" Y="-0.153000012" Z="-0.266000003"/>
</c:Transform>
</Components>
<Children>
<Entity>
<Components>
<c:Model>
<Resource>Models/CylinderBullet.mesh</Resource>
<Color A="1" B="0" G="0.525490224" R="39.2156868"/>
</c:Model>
<c:Transform>
<Scale X="0.0110000009" Y="0.029000001" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
<Children/>
</Entity>
</Children>
</Entity>
@@ -157,7 +144,7 @@
<Components>
<c:Animation>
<Name>Hold Pos</Name>
<Time>0.86791076003269829</Time>
<Time>0.23794697999039638</Time>
<Speed>1</Speed>
</c:Animation>
<c:Model>
+4
View File
@@ -99,6 +99,10 @@ EntityWrapper::operator bool()
EntityWrapper EntityWrapper::firstChildByNameRecursive(const std::string& name, EntityID parent)
{
if (!this->World->ValidEntity(parent)) {
return EntityWrapper::Invalid;
}
auto itPair = this->World->GetChildren(parent);
if (itPair.first == itPair.second) {
return EntityWrapper::Invalid;
+1
View File
@@ -269,6 +269,7 @@ void Server::parseOnInputCommand(Packet& packet)
Events::InputCommand e;
e.Command = packet.ReadString();
e.PlayerID = player; // Set correct player id
e.Player = EntityWrapper(m_World, m_ConnectedPlayers.at(player).EntityID);
e.Value = packet.ReadPrimitive<float>();
m_EventBroker->Publish(e);
//LOG_INFO("Server::parseOnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID);
+9 -6
View File
@@ -25,14 +25,13 @@ bool WeaponSystem::OnPlayerSpawned(const Events::PlayerSpawned& e)
bool WeaponSystem::OnInputCommand(const Events::InputCommand& e)
{
// Only shoot if the player is alive
if (!m_LocalPlayer.Valid()) {
return false;
}
if (e.Command == "PrimaryFire" && e.Value > 0) {
Events::Shoot eShoot;
eShoot.Player = m_LocalPlayer;
if (e.PlayerID == -1) {
eShoot.Player = m_LocalPlayer;
} else {
eShoot.Player = e.Player;
}
m_EventBroker->Publish(eShoot);
}
@@ -41,6 +40,10 @@ bool WeaponSystem::OnInputCommand(const Events::InputCommand& e)
bool WeaponSystem::OnShoot(Events::Shoot& eShoot)
{
if (!eShoot.Player.Valid()) {
return false;
}
// TODO: Weapon firing effects here
auto rayRed = ResourceManager::Load<EntityFile>("Schema/Entities/RayRed.xml");