♻️ plugin api
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
using Ragon.Server.Entity;
|
||||
using Ragon.Server.IO;
|
||||
|
||||
namespace Ragon.Server.Room;
|
||||
@@ -22,4 +23,6 @@ public interface IRagonRoom
|
||||
{
|
||||
RagonRoomPlayer GetPlayerByConnection(INetworkConnection connection);
|
||||
RagonRoomPlayer GetPlayerById(string id);
|
||||
IRagonEntity GetEntityById(ushort id);
|
||||
IRagonEntity[] GetEntitiesOfPlayer(RagonRoomPlayer id);
|
||||
}
|
||||
@@ -100,7 +100,7 @@ public class RagonRoom : IRagonRoom, IRagonAction
|
||||
Writer.WriteUShort(entities);
|
||||
|
||||
foreach (var entity in _entitiesDirtySet)
|
||||
entity.Write(Writer);
|
||||
entity.WriteState(Writer);
|
||||
|
||||
_entitiesDirtySet.Clear();
|
||||
|
||||
@@ -205,7 +205,26 @@ public class RagonRoom : IRagonRoom, IRagonAction
|
||||
foreach (var readyPlayer in ReadyPlayersList)
|
||||
readyPlayer.Connection.Reliable.Send(data);
|
||||
}
|
||||
|
||||
public RagonRoomPlayer GetPlayerByConnection(INetworkConnection connection) => Players[connection.Id];
|
||||
public RagonRoomPlayer GetPlayerById(string id) => PlayerList.First(p => p.Id == id);
|
||||
|
||||
public RagonRoomPlayer GetPlayerByConnection(INetworkConnection connection)
|
||||
{
|
||||
return Players[connection.Id];
|
||||
}
|
||||
|
||||
public RagonRoomPlayer? GetPlayerById(string id)
|
||||
{
|
||||
return PlayerList.FirstOrDefault(p => p.Id == id);
|
||||
}
|
||||
|
||||
public IRagonEntity? GetEntityById(ushort id)
|
||||
{
|
||||
return Entities.TryGetValue(id, out var entity) ?
|
||||
entity :
|
||||
null;
|
||||
}
|
||||
|
||||
public IRagonEntity[] GetEntitiesOfPlayer(RagonRoomPlayer player)
|
||||
{
|
||||
return EntityList.Where(e => e.Owner.Connection.Id == player.Connection.Id).ToArray();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user