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, }); } }
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); }
internal void Clean() { MyData = null; RemoteData = null; TargetBlock = null; Generating = false; Log.Line("Clean"); }
internal DataReport PullData(MyCubeBlock targetBlock) { MyData = new DataReport(); TargetBlock = targetBlock; Compile(); return(MyData); }
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; } } }
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); }
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); } }
public override void CleanUp() { base.CleanUp(); Type = RequestType.RequestServerReport; Data = null; }