quakeball/Assets/Scripts/Networking/Instances/NetInstance.cs

55 lines
1.8 KiB
C#
Raw Permalink Normal View History

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using NeonTea.Quakeball.Networking.Packets;
using NeonTea.Quakeball.TeaNet.Peers;
using NeonTea.Quakeball.TeaNet.Packets;
namespace NeonTea.Quakeball.Networking.Instances {
public abstract class NetInstance {
protected static byte[] Fingerprint = new byte[] { 0xFF, 0xF7 };
public Peer Peer;
public List<ulong> Connections = new List<ulong>();
2020-08-08 21:18:17 +02:00
public Dictionary<ulong, NetPlayer> Players { get; private set; } = new Dictionary<ulong, NetPlayer>();
public List<NetPlayer> PlayerList { get; private set; } = new List<NetPlayer>();
2020-08-08 09:08:10 +02:00
public NetPlayer LocalPlayer;
public NetInstance() {
Peer = new Peer(Fingerprint);
}
2020-08-08 19:14:34 +02:00
public abstract void Start(string address, int port, string nick, PeerMessageListener listener);
public abstract void OnStop();
public abstract void Connected(Connection conn);
public abstract void Disconnected(Connection conn);
public abstract void Handle(Connection conn, Packet packet);
2020-08-07 22:09:31 +02:00
public abstract void UpdateLocalPlayer();
2020-08-07 23:57:11 +02:00
public abstract void SendPlayerSync();
2020-08-08 04:26:17 +02:00
public abstract void LocalPlayerAction(PlayerAction action, Serializable serializable = null);
2020-08-08 02:35:19 +02:00
public virtual void Update() { }
2020-08-08 21:18:17 +02:00
protected void AddPlayer(NetPlayer player) {
Players.Add(player.Id, player);
PlayerList.Add(player);
}
protected void RemovePlayer(NetPlayer player) {
Players.Remove(player.Id);
PlayerList.Remove(player);
}
public void Stop() {
if (Peer.Running) {
OnStop();
Peer.Stop();
Peer.MessageListener.Message("Stopping");
}
}
}
}