public NET_ProgressionReplicator(ExtendedPlayerAgent owner)
        {
            this.Owner = owner;
            packets    = new List <NET_Packet>();

            this.AddPacket(new NET_RequestProgressionDataPacket(this));
            this.AddPacket(new NET_ProgressionDataPacket(this));
        }
 public void SendProgressionData(ExtendedPlayerAgent player)
 {
     foreach (var packet in packets)
     {
         if (packet is NET_ProgressionDataPacket progressionDataPacket)
         {
             progressionDataPacket.Send(player);
             break;
         }
     }
 }
 public void OnReceive(pProgressionDataRequest requestData)
 {
     if (requestData.from.TryGet(out Player.PlayerAgent p) && ExtendedPlayerAgent.TryGetOrCreate(p, out ExtendedPlayerAgent player))
     {
         player.ProgressionSynced = requestData.ack;
         if (NET.IsMaster && !player.ProgressionSynced)
         {
             if (ExtendedPlayerAgent.TryGet(NET.SNetMaster.PlayerAgent.TryCast <PlayerAgent>(), out ExtendedPlayerAgent master))
             {
                 master.ProgressionReplicator.SendProgressionData(player);
             }
             else
             {
                 Debug.LogError("COULD NOT FIND THE MASTA!!!!");
             }
         }
     }
Example #4
0
        public void Send(ExtendedPlayerAgent player)
        {
            if (NET.IsMaster)
            {
                if (player == null || player.WrappedObj == null)
                {
                    Debug.LogError("Tried to send progression data to a null player.");
                    return;
                }

                pProgressionData data = Replicator.Owner.ProgressionData.ToPacket();
                data.to.Set(player.WrappedObj);

                byte[] bytes = NET.GetBytesFromPacket(data, Replicator.Key, ID);
                NET.Send(bytes, SNetwork.SNet_ChannelType.GameReceiveCritical, player.Owner);
            }
            else
            {
                Debug.LogError("Attempting to send progression data when not the master.");
            }
        }
Example #5
0
        public static void Invoke(SNet_Player player, SNet_PlayerEvent playerEvent)
        {
            if (playerEvent == SNet_PlayerEvent.PlayerAgentSpawned)
            {
                if (ExtendedPlayerAgent.TryGetOrCreate(player.PlayerAgent.TryCast <PlayerAgent>(), out ExtendedPlayerAgent p))
                {
                    p.InternalSetup();

                    if (p.IsLocallyOwned)
                    {
                        p.ProgressionReplicator.RequestProgressionData();
                    }
                }
            }
            else if (playerEvent == SNet_PlayerEvent.PlayerAgentDeSpawned)
            {
                if (ExtendedPlayerAgent.TryGet(player.PlayerAgent.TryCast <PlayerAgent>(), out ExtendedPlayerAgent p))
                {
                    ExtendedPlayerAgent.Remove(p.WrappedObj);
                    p.InternalOnDestroyed();
                }
            }
        }