forked from aya/aya
Initial commit
This commit is contained in:
82
engine/network/src/NetworkOwner.hpp
Normal file
82
engine/network/src/NetworkOwner.hpp
Normal file
@@ -0,0 +1,82 @@
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Utility/SystemAddress.hpp"
|
||||
|
||||
#include "Utility/Color.hpp"
|
||||
|
||||
|
||||
namespace Aya
|
||||
{
|
||||
namespace Network
|
||||
{
|
||||
|
||||
class NetworkOwner
|
||||
{
|
||||
public:
|
||||
static const Aya::SystemAddress Server()
|
||||
{
|
||||
static Aya::SystemAddress s(1, 0);
|
||||
return s;
|
||||
}
|
||||
|
||||
// created on server, have not be properly assigned via network owner job
|
||||
static const Aya::SystemAddress ServerUnassigned()
|
||||
{
|
||||
static Aya::SystemAddress s(1, 1);
|
||||
return s;
|
||||
}
|
||||
|
||||
// default
|
||||
static const Aya::SystemAddress Unassigned()
|
||||
{
|
||||
static Aya::SystemAddress s;
|
||||
AYAASSERT(s == SystemAddress());
|
||||
AYAASSERT(s != NetworkOwner::Server());
|
||||
AYAASSERT(s != NetworkOwner::ServerUnassigned());
|
||||
AYAASSERT(s != NetworkOwner::AssignedOther());
|
||||
return s;
|
||||
}
|
||||
|
||||
// generic value used on client indicating assigned to other clients or server (i.e. not self)
|
||||
static const Aya::SystemAddress AssignedOther()
|
||||
{
|
||||
static Aya::SystemAddress s(0, 1);
|
||||
return s;
|
||||
}
|
||||
|
||||
static bool isClient(const Aya::SystemAddress& address)
|
||||
{
|
||||
return ((address != Server()) && (address != Unassigned()) && (address != ServerUnassigned()));
|
||||
}
|
||||
|
||||
static bool isServer(const Aya::SystemAddress& address)
|
||||
{
|
||||
return address == Server() || address == ServerUnassigned();
|
||||
}
|
||||
|
||||
static Color3 colorFromAddress(const Aya::SystemAddress& systemAddress)
|
||||
{
|
||||
if (systemAddress == Server())
|
||||
{
|
||||
return Color3::white();
|
||||
}
|
||||
else if (systemAddress == Unassigned() || systemAddress == ServerUnassigned())
|
||||
{
|
||||
return Color3::black();
|
||||
}
|
||||
else if (systemAddress == AssignedOther())
|
||||
return Color3::gray();
|
||||
else
|
||||
{
|
||||
unsigned int address = systemAddress.getAddress();
|
||||
unsigned int port = systemAddress.getPort();
|
||||
address += port;
|
||||
return Aya::Color::colorFromInt(address);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace Network
|
||||
} // namespace Aya
|
||||
Reference in New Issue
Block a user