This commit is contained in:
2023-10-04 14:42:59 +03:00
parent 27db256902
commit 8788cb0fcf
57 changed files with 914 additions and 78 deletions
@@ -19,7 +19,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class AuthorizeFailedHandler: Handler
internal class AuthorizeFailedHandler: IHandler
{
private readonly RagonListenerList _listenerList;
public AuthorizeFailedHandler(RagonListenerList list)
@@ -19,7 +19,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class AuthorizeSuccessHandler: Handler
internal class AuthorizeSuccessHandler: IHandler
{
private readonly RagonListenerList _listenerList;
private readonly RagonClient _client;
@@ -18,7 +18,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class EntityCreateHandler : Handler
internal class EntityCreateHandler : IHandler
{
private readonly RagonClient _client;
private readonly RagonPlayerCache _playerCache;
@@ -18,19 +18,16 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class EntityEventHandler : Handler
internal class EntityEventHandler : IHandler
{
private readonly RagonClient _client;
private readonly RagonPlayerCache _playerCache;
private readonly RagonEntityCache _entityCache;
public EntityEventHandler(
RagonClient client,
RagonPlayerCache playerCache,
RagonEntityCache entityCache
)
{
_client = client;
_playerCache = playerCache;
_entityCache = entityCache;
}
@@ -19,7 +19,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class EntityOwnershipHandler: Handler
internal class EntityOwnershipHandler: IHandler
{
private readonly RagonListenerList _listenerList;
private readonly RagonPlayerCache _playerCache;
@@ -19,7 +19,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class EntityRemoveHandler: Handler
internal class EntityRemoveHandler: IHandler
{
private readonly RagonEntityCache _entityCache;
@@ -18,7 +18,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class StateEntityHandler: Handler
internal class StateEntityHandler: IHandler
{
private readonly RagonEntityCache _entityCache;
@@ -0,0 +1,53 @@
/*
* Copyright 2023 Eduard Kargin <kargin.eduard@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using Ragon.Protocol;
namespace Ragon.Client;
public class EventRoomHandler: IHandler
{
private readonly RagonClient _client;
private readonly RagonPlayerCache _playerCache;
public EventRoomHandler(
RagonClient client,
RagonPlayerCache playerCache
)
{
_client = client;
_playerCache = playerCache;
}
public void Handle(RagonBuffer buffer)
{
var eventCode = buffer.ReadUShort();
var peerId = buffer.ReadUShort();
var executionMode = (RagonReplicationMode)buffer.ReadByte();
var player = _playerCache.GetPlayerByPeer(peerId);
if (player == null)
{
RagonLog.Warn($"Player not found for event {eventCode}");
return;
}
if (player.IsLocal && executionMode == RagonReplicationMode.LocalAndServer)
return;
_client.Room.Event(eventCode, player, buffer);
}
}
@@ -19,7 +19,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
public interface Handler
public interface IHandler
{
public void Handle(RagonBuffer buffer);
}
@@ -19,7 +19,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class JoinFailedHandler: Handler
internal class JoinFailedHandler: IHandler
{
private readonly RagonListenerList _listenerList;
@@ -37,7 +37,7 @@ public struct RagonRoomInformation
public ushort Max { get; private set; }
}
internal class JoinSuccessHandler : Handler
internal class JoinSuccessHandler : IHandler
{
private readonly RagonListenerList _listenerList;
private readonly RagonPlayerCache _playerCache;
@@ -46,7 +46,6 @@ internal class JoinSuccessHandler : Handler
public JoinSuccessHandler(
RagonClient client,
RagonBuffer buffer,
RagonListenerList listenerList,
RagonPlayerCache playerCache,
RagonEntityCache entityCache
@@ -19,7 +19,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class LeaveRoomHandler : Handler
internal class LeaveRoomHandler : IHandler
{
private readonly RagonClient _client;
private readonly RagonListenerList _listenerList;
@@ -18,7 +18,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class SceneLoadHandler: Handler
internal class SceneLoadHandler: IHandler
{
private readonly RagonClient _client;
private readonly RagonListenerList _listenerList;
@@ -19,7 +19,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class OwnershipRoomHandler: Handler
internal class OwnershipRoomHandler: IHandler
{
private readonly RagonListenerList _listenerList;
private readonly RagonPlayerCache _playerCache;
@@ -19,7 +19,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class PlayerJoinHandler : Handler
internal class PlayerJoinHandler : IHandler
{
private RagonPlayerCache _playerCache;
private RagonListenerList _listenerList;
@@ -19,7 +19,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class PlayerLeftHandler : Handler
internal class PlayerLeftHandler : IHandler
{
private RagonPlayerCache _playerCache;
private RagonEntityCache _entityCache;
@@ -20,7 +20,7 @@ using Ragon.Protocol;
namespace Ragon.Client;
internal class SnapshotHandler : Handler
internal class SnapshotHandler : IHandler
{
private readonly IRagonEntityListener _entityListener;
private readonly RagonClient _client;
@@ -0,0 +1,21 @@
using Ragon.Protocol;
namespace Ragon.Client;
public class TimestampHandler: IHandler
{
private readonly RagonClient _client;
public TimestampHandler(RagonClient client)
{
_client = client;
}
public void Handle(RagonBuffer buffer)
{
var timestamp0 = buffer.Read(32);
var timestamp1 = buffer.Read(32);
var value = new DoubleToUInt { Int0 = timestamp0, Int1 = timestamp1 };
_client.SetTimestamp(value.Double);
}
}