public InputSubmissionId SubmitInput(SimInput input) { if (input == null) { Log.Error("Trying to submit a null input"); return(InputSubmissionId.Invalid); } var session = GetSession(); if (session != null && session is SessionClientInterface clientSession) { // CLIENT var syncSystem = World.GetExistingSystem <ReceiveSimulationSyncSystem>(); if (syncSystem != null && syncSystem.IsSynchronizing) { Log.Info("Discarding input since we are syncing to the simulation"); return(InputSubmissionId.Invalid); } var submissionId = InputSubmissionId.Generate(); clientSession.SendNetMessageToServer(new NetMessageInputSubmission() { submissionId = submissionId, input = input }); return(submissionId); } else { // SERVER AND LOCAL var submissionId = InputSubmissionId.Generate(); World.GetOrCreateSystem <ConstructSimulationTickSystem>() .SubmitInputInternal( input: input, instigatorConnection: null, // local connection => null submissionId: submissionId); return(submissionId); } }
public InputSubmissionId(InputSubmissionId other) { this.Value = other.Value; }
//public bool IsLocallySubmittedInputInQueue(InputSubmissionId inputSubmissionId) //{ // foreach (var item in _inputSubmissionQueue) // { // if (item.InstigatorConnectionId == uint.MaxValue && item.ClientSubmissionId == inputSubmissionId) // return true; // } // return false; //} public void SubmitInputInternal(SimInput input, INetworkInterfaceConnection instigatorConnection, InputSubmissionId submissionId) { if (ValidateInput(input, instigatorConnection)) { Log.Info(SimulationIO.LogChannel, $"Accepted sim input from '{(instigatorConnection == null ? "local player" : instigatorConnection.Id.ToString())}': {input}"); _inputSubmissionQueue.Enqueue(new SimInputSubmission() { Input = input, InstigatorConnectionId = instigatorConnection == null ? uint.MaxValue : instigatorConnection.Id, ClientSubmissionId = submissionId }); } else { Log.Info(SimulationIO.LogChannel, $"Refused sim input from '{(instigatorConnection == null ? "local player" : instigatorConnection.Id.ToString())}': {input}"); } }