Beispiel #1
0
 internal void NetworkTransfer(bool toServer, ulong clientId = 0, DataReport data = null)
 {
     if (toServer)
     {
         Session.PacketsToServer.Add(new ProblemReportPacket
         {
             SenderId = Session.MultiplayerId,
             PType    = PacketType.ProblemReport,
             EntityId = TargetBlock.EntityId,
             Type     = ProblemReportPacket.RequestType.RequestServerReport,
         });
     }
     else
     {
         Session.PacketsToClient.Add(new PacketInfo {
             Packet = new ProblemReportPacket {
                 SenderId = clientId,
                 PType    = PacketType.ProblemReport,
                 Data     = data,
                 Type     = ProblemReportPacket.RequestType.SendReport,
             },
             SingleClient = true,
         });
     }
 }
Beispiel #2
0
            internal void GenerateReport(MyCubeBlock targetBlock)
            {
                if (Generating || Session.Tick - LastRequestTick < RequestTime)
                {
                    return;
                }
                Log.Line($"Generate User Weapon Report");
                Generating      = true;
                LastRequestTick = Session.Tick;
                TargetBlock     = targetBlock;
                MyData          = new DataReport();

                if (!Session.DedicatedServer)
                {
                    MyAPIGateway.Utilities.ShowNotification($"Generating a error report for WC Block: {TargetBlock.BlockDefinition.Id.SubtypeName} - with id: {TargetBlock.EntityId}", 7000, "Red");
                }

                if (Session.IsServer)
                {
                    Compile();
                    if (Session.MpActive)
                    {
                        foreach (var player in Session.Players)
                        {
                            NetworkTransfer(false, player.Value.SteamUserId);
                        }
                    }
                }
                else
                {
                    Compile();
                    NetworkTransfer(true);
                }
                Session.FutureEvents.Schedule(CompleteReport, null, 300);
            }
Beispiel #3
0
 internal void Clean()
 {
     MyData      = null;
     RemoteData  = null;
     TargetBlock = null;
     Generating  = false;
     Log.Line("Clean");
 }
Beispiel #4
0
            internal DataReport PullData(MyCubeBlock targetBlock)
            {
                MyData      = new DataReport();
                TargetBlock = targetBlock;

                Compile();

                return(MyData);
            }
Beispiel #5
0
 internal void BuildData(DataReport data)
 {
     foreach (var d in AllDicts)
     {
         foreach (var f in d.Value)
         {
             var value = f.Value.Invoke();
             GetStorage(data, d.Key)[f.Key] = value;
         }
     }
 }
Beispiel #6
0
            internal void GenerateReport(MyCubeBlock targetBlock)
            {
                GridAi ai;

                if (Generating || Session.Tick - LastRequestTick < RequestTime)
                {
                    return;
                }

                if (!Session.GridTargetingAIs.TryGetValue(targetBlock.CubeGrid, out ai) || !ai.WeaponBase.ContainsKey(targetBlock))
                {
                    Log.Line($"Failed to generate user report, either grid does not have Weaponcore or this block this wc block is not initialized.");
                }

                Log.Line($"Generate User Weapon Report");
                Generating      = true;
                LastRequestTick = Session.Tick;
                TargetBlock     = targetBlock;
                MyData          = new DataReport();

                if (!Session.DedicatedServer)
                {
                    MyAPIGateway.Utilities.ShowNotification($"Generating a error report for WC Block: {TargetBlock.BlockDefinition.Id.SubtypeName} - with id: {TargetBlock.EntityId}", 7000, "Red");
                }

                if (Session.IsServer)
                {
                    Compile();
                    if (Session.MpActive)
                    {
                        foreach (var player in Session.Players)
                        {
                            NetworkTransfer(false, player.Value.SteamUserId);
                        }
                    }
                }
                else
                {
                    Compile();
                    NetworkTransfer(true);
                }
                Session.FutureEvents.Schedule(CompleteReport, null, 300);
            }
Beispiel #7
0
            internal Dictionary <string, string> GetStorage(DataReport data, string storageName)
            {
                switch (storageName)
                {
                case "Session":
                    return(data.Session);

                case "Ai":
                    return(data.Ai);

                case "Comp":
                    return(data.Comp);

                case "Platform":
                    return(data.Platform);

                case "Weapon":
                    return(data.Weapon);

                default:
                    return(null);
                }
            }
Beispiel #8
0
 public override void CleanUp()
 {
     base.CleanUp();
     Type = RequestType.RequestServerReport;
     Data = null;
 }